Added BDD test scenarios covering: - User registration with validation - Successful and failed authentication - Admin authentication with master password - JWT token generation and validation - Password reset workflow - Edge cases and error handling BDD Features: - 20+ authentication scenarios - JWT validation edge cases - Password reset security scenarios - Input validation tests - Error response verification BDD Infrastructure: - Step definitions for authentication workflows - Test server with user management endpoints - JWT parsing and validation utilities - Common step patterns for reuse Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
1.7 KiB
1.7 KiB
BDD Steps Organization
This folder contains the step definitions for the BDD tests, organized by domain for better maintainability and scalability.
Structure
pkg/bdd/steps/
├── greet_steps.go # Greet-related steps (v1 and v2 API)
├── health_steps.go # Health check and server status steps
├── auth_steps.go # Authentication and user management steps
├── common_steps.go # Shared steps used across multiple domains
├── steps.go # Main registration file that ties everything together
└── README.md # This file
Design Principles
- Domain Separation: Steps are grouped by functional domain
- Single Responsibility: Each file focuses on a specific area of functionality
- Reusability: Common steps are shared via
common_steps.go - Scalability: Easy to add new domains as the application grows
Adding New Steps
- For new domains: Create a new
*_steps.gofile following the existing pattern - For existing domains: Add to the appropriate domain file
- For shared functionality: Add to
common_steps.go - Register all steps: Update
steps.goto include the new steps
Step Naming Convention
- Use descriptive, action-oriented names
- Follow the pattern:
i[Action][Object]orthe[Object][State] - Example:
iRequestAGreetingFor,theAuthenticationShouldBeSuccessful
Testing the Steps
Run BDD tests with:
go test ./features/... -v
Future Domains
As the application grows, consider adding:
payment_steps.go- Payment processing stepsnotification_steps.go- Notification and email stepsadmin_steps.go- Admin-specific functionality stepsapi_steps.go- General API interaction patterns