Files
dance-lessons-coach/features/jwt_secret_rotation.feature
Gabriel Radureau 5e132e8ccf
Some checks failed
CI/CD Pipeline / Build Docker Cache (push) Successful in 18s
CI/CD Pipeline / CI Pipeline (push) Failing after 4m45s
🧪 test: add JWT secret rotation BDD scenarios and step implementations
- Add features/jwt_secret_rotation.feature with 5 comprehensive scenarios
- Implement 14 new step definitions for JWT secret rotation
- Register all steps using Godog's exact regex patterns
- Ensure no undefined or pending steps
- Maintain backward compatibility with existing BDD tests

Addresses Issue #8: JWT Secret Rotation
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-04-09 13:23:37 +02:00

54 lines
2.9 KiB
Gherkin

# features/jwt_secret_rotation.feature
Feature: JWT Secret Rotation
As a system administrator
I want to rotate JWT secrets without disrupting users
So that we can maintain security while ensuring continuous service
Scenario: Authentication with multiple valid JWT secrets
Given the server is running with multiple JWT secrets
And a user "multiuser" exists with password "testpass123"
When I authenticate with username "multiuser" and password "testpass123"
Then the authentication should be successful
And I should receive a valid JWT token signed with the primary secret
Scenario: Token validation with multiple valid secrets
Given the server is running with multiple JWT secrets
And a user "tokenuser" exists with password "testpass123"
When I authenticate with username "tokenuser" and password "testpass123"
Then the authentication should be successful
And I should receive a valid JWT token
When I validate a JWT token signed with the secondary secret
Then the token should be valid
And it should contain the correct user ID
Scenario: Secret rotation - adding new secret while keeping old one valid
Given the server is running with primary JWT secret
And a user "rotateuser" exists with password "testpass123"
When I authenticate with username "rotateuser" and password "testpass123"
Then the authentication should be successful
And I should receive a valid JWT token signed with the primary secret
When I add a new secondary JWT secret to the server
And I authenticate with username "rotateuser" and password "testpass123" again
Then the authentication should be successful
And I should receive a valid JWT token signed with the new secondary secret
When I validate the old JWT token signed with primary secret
Then the token should still be valid
Scenario: Token rejection after secret expiration
Given the server is running with primary and expired secondary JWT secrets
When I use a JWT token signed with the expired secondary secret for authentication
Then the authentication should fail
And the response should contain error "invalid_token"
Scenario: Graceful secret rotation with user continuity
Given the server is running with primary JWT secret
And a user "gracefuluser" exists with password "testpass123"
When I authenticate with username "gracefuluser" and password "testpass123"
Then the authentication should be successful
And I should receive a valid JWT token signed with the primary secret
When I add a new secondary JWT secret and rotate to it
And I use the old JWT token signed with primary secret
Then the token should still be valid during retention period
When I authenticate with username "gracefuluser" and password "testpass123" after rotation
Then the authentication should be successful
And I should receive a valid JWT token signed with the new secondary secret