From 881a94893f0af86e7af40a997580a33d9ce9d1d9 Mon Sep 17 00:00:00 2001 From: Aaron Po Date: Sun, 8 Feb 2026 21:38:27 -0500 Subject: [PATCH] add registration steps --- .../Features/{Auth.feature => Login.feature} | 0 .../API.Specs/Features/Registration.feature | 69 +++++++++++++++++++ 2 files changed, 69 insertions(+) rename src/Core/API/API.Specs/Features/{Auth.feature => Login.feature} (100%) create mode 100644 src/Core/API/API.Specs/Features/Registration.feature diff --git a/src/Core/API/API.Specs/Features/Auth.feature b/src/Core/API/API.Specs/Features/Login.feature similarity index 100% rename from src/Core/API/API.Specs/Features/Auth.feature rename to src/Core/API/API.Specs/Features/Login.feature diff --git a/src/Core/API/API.Specs/Features/Registration.feature b/src/Core/API/API.Specs/Features/Registration.feature new file mode 100644 index 0000000..17eb46a --- /dev/null +++ b/src/Core/API/API.Specs/Features/Registration.feature @@ -0,0 +1,69 @@ +Feature: User Registration + As a new user + I want to register an account + So that I can log in and access authenticated routes + + Scenario: Successful registration with valid details + Given the API is running + When I submit a registration request with values: + | Username | FirstName | LastName | Email | DateOfBirth | Password | + | newuser | New | User | newuser@example.com | 1990-01-01 | Password1! | + Then the response has HTTP status 201 + And the response JSON should have "message" equal "User registered successfully." + And the response JSON should have an access token + + Scenario: Registration fails with existing username + Given the API is running + And I have an existing account with username "existinguser" + When I submit a registration request with values: + | Username | FirstName | LastName | Email | DateOfBirth | Password | + | existinguser | Existing | User | existing@example.com | 1990-01-01 | Password1! | + Then the response has HTTP status 409 + And the response JSON should have "message" equal "Username already exists." + + Scenario: Registration fails with existing email + Given the API is running + And I have an existing account with email "existing@example.com" + When I submit a registration request with values: + | Username | FirstName | LastName | Email | DateOfBirth | Password | + | newuser | New | User | existing@example.com | 1990-01-01 | Password1! | + Then the response has HTTP status 409 + And the response JSON should have "message" equal "Email already in use." + + Scenario: Registration fails with missing required fields + Given the API is running + When I submit a registration request with values: + | Username | FirstName | LastName | Email | DateOfBirth | Password | + | | New | User | | | Password1! | + Then the response has HTTP status 400 + And the response JSON should have "message" equal "Username is required." + + Scenario: Registration fails with invalid email format + Given the API is running + When I submit a registration request with values: + | Username | FirstName | LastName | Email | DateOfBirth | Password | + | newuser | New | User | invalidemail | 1990-01-01 | Password1! | + Then the response has HTTP status 400 + And the response JSON should have "message" equal "Invalid email format." + + Scenario: Registration fails with weak password + Given the API is running + When I submit a registration request with values: + | Username | FirstName | LastName | Email | DateOfBirth | Password | + | newuser | New | User | newuser@example.com | 1990-01-01 | weakpass | + Then the response has HTTP status 400 + And the response JSON should have "message" equal "Password does not meet complexity requirements." + + Scenario: Cannot register a user younger than 19 years of age (regulatory requirement) + Given the API is running + When I submit a registration request with values: + | Username | FirstName | LastName | Email | DateOfBirth | Password | + | younguser | Young | User | younguser@example.com | | Password1! | + Then the response has HTTP status 400 + And the response JSON should have "message" equal "You must be at least 19 years old to register." + + Scenario: Registration endpoint only accepts POST requests + Given the API is running + When I submit a registration request using a GET request + Then the response has HTTP status 404 + And the response JSON should have "message" equal "Not Found."