mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-10-14 17:54:42 +00:00
* Integrate Spectre.Console into seed application, use async data loading * Replace stored-procedure repositories with Dapper-based repositories Removes the USP_* stored procedures for Auth, Location, and Brewery data access in favour of services built with Dapper. Adds a new Features.Locations slice and optimistic concurrency support for the Brewery slice. * Add new documentation for Dapper migration/database schema * Update FluentAssertions to most recent open source ver * Update XML doc comment in backend projects * Modify brewery location dto to include denormalized data * - Updated column names from 'Timer' to 'RowVersion' in schema.sql for - Introduced new BeerPost entity and updated BreweryPost and BreweryPostLocation entities to use 'RowVersion' for concurrency. - Modified UserAccount, UserCredential, UserVerification, City, StateProvince, and Country entities to use 'RowVersion' instead of 'Timer'. - Updated tests and command handlers to reflect changes in concurrency token from 'Timer' to 'RowVersion'. - Adjusted BreweryDto and BreweryDtoMapper to include 'RowVersion' and updated mapping logic accordingly. - Ensured all repository methods and interfaces are aligned with the new concurrency handling approach. * updates * Add BeerStyle entity and related properties; refactor BreweryDto to remove BeerPosts * Fix Api.Specs test failures: stale Timer column refs and missing test.user fixture * Remove repository tests, usages of registration dto used in repo * archive old stored procs/functions * update stale docs * Add instructions for generating cryptographically secure base64 secrets on macOS/Linux and Windows
62 lines
3.0 KiB
Gherkin
62 lines
3.0 KiB
Gherkin
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
|
|
When I submit a registration request with values:
|
|
| Username | FirstName | LastName | Email | DateOfBirth | Password |
|
|
| test.user | Test | User | example@example.com | 2001-11-11 | Password1! |
|
|
Then the response has HTTP status 409
|
|
|
|
Scenario: Registration fails with existing email
|
|
Given the API is running
|
|
And I have an existing account
|
|
When I submit a registration request with values:
|
|
| Username | FirstName | LastName | Email | DateOfBirth | Password |
|
|
| newuser | New | User | test.user@thebiergarten.app | 1990-01-01 | Password1! |
|
|
Then the response has HTTP status 409
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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 | {underage_date} | Password1! |
|
|
Then the response has HTTP status 400
|
|
|
|
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 |