Files
dance-lessons-coach/pkg/bdd/context/auth_context.go
Gabriel Radureau 5eec64e5e8
All checks were successful
CI/CD Pipeline / Build Docker Cache (push) Successful in 9s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m15s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
🧪 test: add JWT secret rotation BDD scenarios and step implementations (#12)
 merge: implement JWT secret rotation with BDD scenario isolation

- Implement JWT secret rotation mechanism (closes #8)
- Add per-scenario state isolation for BDD tests (closes #14)
- Validate password reset workflow via BDD tests (closes #7)
- Fix port conflicts in test validation
- Add state tracer for debugging test execution
- Document BDD isolation strategies in ADR 0025
- Fix PostgreSQL configuration environment variables

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Co-authored-by: Gabriel Radureau <arcodange@gmail.com>
Co-committed-by: Gabriel Radureau <arcodange@gmail.com>
2026-04-11 17:56:45 +02:00

66 lines
1.8 KiB
Go

package context
import (
"dance-lessons-coach/pkg/bdd/testserver"
"github.com/cucumber/godog"
)
// AuthContext holds authentication-specific test context
type AuthContext struct {
client *testserver.Client
users map[string]UserData
}
// UserData represents user information for auth tests
type UserData struct {
Username string
Password string
Token string
}
// NewAuthContext creates a new auth context
func NewAuthContext(client *testserver.Client) *AuthContext {
return &AuthContext{
client: client,
users: make(map[string]UserData),
}
}
// InitializeAuthContext initializes auth-specific steps
func InitializeAuthContext(ctx *godog.ScenarioContext, client *testserver.Client) {
authCtx := NewAuthContext(client)
// Register auth-specific steps
ctx.Step(`^a user "([^"]*)" exists with password "([^"]*)"$`, authCtx.aUserExistsWithPassword)
ctx.Step(`^I authenticate with username "([^"]*)" and password "([^"]*)"$`, authCtx.iAuthenticateWithUsernameAndPassword)
ctx.Step(`^the authentication should be successful$`, authCtx.theAuthenticationShouldBeSuccessful)
ctx.Step(`^I should receive a valid JWT token$`, authCtx.iShouldReceiveAValidJWTToken)
// Add more auth steps as needed...
}
// Step implementations
func (ac *AuthContext) aUserExistsWithPassword(username, password string) error {
ac.users[username] = UserData{
Username: username,
Password: password,
}
return nil
}
func (ac *AuthContext) iAuthenticateWithUsernameAndPassword(username, password string) error {
// Implementation would go here
return nil
}
func (ac *AuthContext) theAuthenticationShouldBeSuccessful() error {
// Implementation would go here
return nil
}
func (ac *AuthContext) iShouldReceiveAValidJWTToken() error {
// Implementation would go here
return nil
}