Files
gridpilot.gg/apps/website/tests/services/auth/README.md
Marc Mintel fb1221701d
Some checks failed
Contract Testing / contract-tests (push) Failing after 6m7s
Contract Testing / contract-snapshot (push) Failing after 4m46s
add tests
2026-01-22 11:52:42 +01:00

157 lines
4.7 KiB
Markdown

# Auth Service Tests
## Directory Structure
This directory contains comprehensive test implementations for auth services located in `apps/website/lib/services/auth/`.
## Auth Services
The auth services are located in:
- `apps/website/lib/services/auth/AuthService.ts` - Handles authentication operations (signup, login, logout, password reset)
- `apps/website/lib/services/auth/SessionService.ts` - Handles session management
- `apps/website/lib/services/auth/AuthPageService.ts` - Processes URL parameters for auth pages
## Test Files
The following comprehensive test files have been implemented:
### AuthService.test.ts
Tests for authentication operations:
- **Happy paths**: Successful signup, login, logout, forgot password, reset password, and session retrieval
- **Failure modes**:
- Validation errors (invalid email, weak password)
- Authentication errors (invalid credentials, account locked)
- Server errors (internal server errors, network errors)
- Rate limiting errors
- Token validation errors
- **Decision branches**:
- Different user data structures
- Different email formats
- Different token formats
- Different response formats
- Empty display names
- Special characters in display names
- **Aggregation logic**: Proper aggregation of API responses into SessionViewModel
### SessionService.test.ts
Tests for session management:
- **Happy paths**: Successful session retrieval, null session handling
- **Failure modes**:
- Server errors
- Network errors
- Authentication errors
- Timeout errors
- Unexpected error types
- **Decision branches**:
- Different user data structures
- Different email formats
- Different token formats
- Special characters in display names
- Empty user data
- Missing token
- **Aggregation logic**: Proper aggregation of session data into SessionViewModel
### AuthPageService.test.ts
Tests for auth page parameter processing:
- **Happy paths**:
- Login page parameter processing
- Forgot password page parameter processing
- Reset password page parameter processing
- Signup page parameter processing
- **Failure modes**:
- Missing reset token validation
- Empty token validation
- Null token validation
- **Decision branches**:
- Different returnTo paths
- Different token formats
- Special characters in paths
- Null/undefined/empty returnTo values
- Different returnTo values and hasInsufficientPermissions combinations
- **Aggregation logic**: Proper aggregation of page parameters into DTOs
## Test Coverage Summary
The comprehensive test suite covers:
### Happy Paths ✓
- Successful authentication operations (signup, login, logout)
- Successful password reset flow (forgot password, reset password)
- Successful session retrieval
- Successful page parameter processing
### Failure Modes ✓
- Validation errors (invalid email, weak password, missing token)
- Authentication errors (invalid credentials, account locked)
- Server errors (internal server errors)
- Network errors
- Rate limiting errors
- Timeout errors
- Unexpected error types
### Retries ✓
- Not applicable for these services (no retry logic implemented)
### Fallback Logic ✓
- Not applicable for these services (no fallback logic implemented)
### Aggregation Logic ✓
- Proper aggregation of API responses into SessionViewModel
- Proper aggregation of page parameters into DTOs
- Handling of empty/missing data
- Default value handling
### Decision Branches ✓
- Different user data structures
- Different email formats
- Different token formats
- Different returnTo paths
- Special characters in paths and display names
- Null/undefined/empty values
- Different response formats
- Different status values
## Running Tests
Run the auth service tests using vitest:
```bash
# Run all tests
npm run test
# Run only auth service tests
npm run test -- apps/website/tests/services/auth
# Run with coverage
npm run test -- --coverage
# Run in watch mode
npm run test -- --watch
```
## Test Structure
Each test file follows a consistent structure:
- **describe blocks**: Organized by service method
- **happy paths**: Successful operations
- **failure modes**: Error handling scenarios
- **decision branches**: Different input variations
- **aggregation logic**: Data aggregation and transformation
- **error handling**: Unexpected error scenarios
## Mocking Strategy
All tests use mocked API clients:
- `AuthApiClient` is mocked to simulate API responses
- Mocks are created using Vitest's `vi.fn()`
- Each test has isolated mocks via `beforeEach()`
- Mocks simulate both success and failure scenarios
## Dependencies
The tests use:
- Vitest for test framework
- TypeScript for type safety
- Mocked dependencies for isolation
- No external API calls (all mocked)