mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 10:42:08 +00:00
Update request validation
This commit is contained in:
@@ -33,7 +33,7 @@ namespace API.Core.Controllers
|
|||||||
|
|
||||||
var response = new ResponseBody<AuthPayload>
|
var response = new ResponseBody<AuthPayload>
|
||||||
{
|
{
|
||||||
Message = "Registration successful.",
|
Message = "User registered successfully.",
|
||||||
Payload = new AuthPayload(
|
Payload = new AuthPayload(
|
||||||
new UserDTO(created.UserAccountId, created.Username),
|
new UserDTO(created.UserAccountId, created.Username),
|
||||||
jwt,
|
jwt,
|
||||||
@@ -49,7 +49,10 @@ namespace API.Core.Controllers
|
|||||||
var userAccount = await auth.LoginAsync(req.Username, req.Password);
|
var userAccount = await auth.LoginAsync(req.Username, req.Password);
|
||||||
if (userAccount is null)
|
if (userAccount is null)
|
||||||
{
|
{
|
||||||
return Unauthorized();
|
return Unauthorized(new ResponseBody
|
||||||
|
{
|
||||||
|
Message = "Invalid username or password."
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
UserDTO dto = new(userAccount.UserAccountId, userAccount.Username);
|
UserDTO dto = new(userAccount.UserAccountId, userAccount.Username);
|
||||||
@@ -59,7 +62,7 @@ namespace API.Core.Controllers
|
|||||||
|
|
||||||
return Ok(new ResponseBody<AuthPayload>
|
return Ok(new ResponseBody<AuthPayload>
|
||||||
{
|
{
|
||||||
Message = "Login successful.",
|
Message = "Logged in successfully.",
|
||||||
Payload = new AuthPayload(dto, jwt, DateTime.UtcNow, jwtExpiresAt)
|
Payload = new AuthPayload(dto, jwt, DateTime.UtcNow, jwtExpiresAt)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,25 +32,20 @@ So that I can log in and access authenticated routes
|
|||||||
Then the response has HTTP status 409
|
Then the response has HTTP status 409
|
||||||
And the response JSON should have "message" equal "Email already in use."
|
And the response JSON should have "message" equal "Email already in use."
|
||||||
|
|
||||||
@Ignore
|
|
||||||
Scenario: Registration fails with missing required fields
|
Scenario: Registration fails with missing required fields
|
||||||
Given the API is running
|
Given the API is running
|
||||||
When I submit a registration request with values:
|
When I submit a registration request with values:
|
||||||
| Username | FirstName | LastName | Email | DateOfBirth | Password |
|
| Username | FirstName | LastName | Email | DateOfBirth | Password |
|
||||||
| | New | User | | | Password1! |
|
| | New | User | | | Password1! |
|
||||||
Then the response has HTTP status 400
|
Then the response has HTTP status 400
|
||||||
And the response JSON should have "message" equal "Username is required."
|
|
||||||
|
|
||||||
@Ignore
|
|
||||||
Scenario: Registration fails with invalid email format
|
Scenario: Registration fails with invalid email format
|
||||||
Given the API is running
|
Given the API is running
|
||||||
When I submit a registration request with values:
|
When I submit a registration request with values:
|
||||||
| Username | FirstName | LastName | Email | DateOfBirth | Password |
|
| Username | FirstName | LastName | Email | DateOfBirth | Password |
|
||||||
| newuser | New | User | invalidemail | 1990-01-01 | Password1! |
|
| newuser | New | User | invalidemail | 1990-01-01 | Password1! |
|
||||||
Then the response has HTTP status 400
|
Then the response has HTTP status 400
|
||||||
And the response JSON should have "message" equal "Invalid email format."
|
|
||||||
|
|
||||||
@Ignore
|
|
||||||
Scenario: Registration fails with weak password
|
Scenario: Registration fails with weak password
|
||||||
Given the API is running
|
Given the API is running
|
||||||
When I submit a registration request with values:
|
When I submit a registration request with values:
|
||||||
@@ -59,17 +54,14 @@ So that I can log in and access authenticated routes
|
|||||||
Then the response has HTTP status 400
|
Then the response has HTTP status 400
|
||||||
And the response JSON should have "message" equal "Password does not meet complexity requirements."
|
And the response JSON should have "message" equal "Password does not meet complexity requirements."
|
||||||
|
|
||||||
@Ignore
|
|
||||||
Scenario: Cannot register a user younger than 19 years of age (regulatory requirement)
|
Scenario: Cannot register a user younger than 19 years of age (regulatory requirement)
|
||||||
Given the API is running
|
Given the API is running
|
||||||
When I submit a registration request with values:
|
When I submit a registration request with values:
|
||||||
| Username | FirstName | LastName | Email | DateOfBirth | Password |
|
| Username | FirstName | LastName | Email | DateOfBirth | Password |
|
||||||
| younguser | Young | User | younguser@example.com | | Password1! |
|
| younguser | Young | User | younguser@example.com | {underage_date} | Password1! |
|
||||||
Then the response has HTTP status 400
|
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
|
Scenario: Registration endpoint only accepts POST requests
|
||||||
Given the API is running
|
Given the API is running
|
||||||
When I submit a registration request using a GET request
|
When I submit a registration request using a GET request
|
||||||
Then the response has HTTP status 404
|
Then the response has HTTP status 404
|
||||||
And the response JSON should have "message" equal "Not Found."
|
|
||||||
@@ -164,16 +164,27 @@ public class AuthSteps(ScenarioContext scenario)
|
|||||||
var client = GetClient();
|
var client = GetClient();
|
||||||
var row = table.Rows[0];
|
var row = table.Rows[0];
|
||||||
|
|
||||||
|
var username = row["Username"] ?? "";
|
||||||
|
var firstName = row["FirstName"] ?? "";
|
||||||
|
var lastName = row["LastName"] ?? "";
|
||||||
|
var email = row["Email"] ?? "";
|
||||||
|
var dateOfBirth = row["DateOfBirth"] ?? "";
|
||||||
|
|
||||||
|
if (dateOfBirth == "{underage_date}")
|
||||||
|
{
|
||||||
|
dateOfBirth = DateTime.UtcNow.AddYears(-18).ToString("yyyy-MM-dd");
|
||||||
|
}
|
||||||
|
|
||||||
|
var password = row["Password"];
|
||||||
|
|
||||||
var registrationData = new
|
var registrationData = new
|
||||||
{
|
{
|
||||||
username = row.TryGetValue("Username", out var value) ? value : null,
|
username,
|
||||||
firstName = row.TryGetValue("FirstName", out var value1) ? value1 : null,
|
firstName,
|
||||||
lastName = row.TryGetValue("LastName", out var value2) ? value2 : null,
|
lastName,
|
||||||
email = row.TryGetValue("Email", out var value3) ? value3 : null,
|
email,
|
||||||
dateOfBirth = row.ContainsKey("DateOfBirth") && !string.IsNullOrEmpty(row["DateOfBirth"])
|
dateOfBirth,
|
||||||
? row["DateOfBirth"]
|
password
|
||||||
: null,
|
|
||||||
password = row.ContainsKey("Password") ? row["Password"] : null
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var body = JsonSerializer.Serialize(registrationData);
|
var body = JsonSerializer.Serialize(registrationData);
|
||||||
|
|||||||
Reference in New Issue
Block a user