package testutil import ( "tercul/internal/domain" "tercul/internal/platform/auth" "time" "github.com/golang-jwt/jwt/v5" "github.com/google/uuid" ) // MockJWTManager is a mock implementation of the JWTManagement interface. type MockJWTManager struct{} // NewMockJWTManager creates a new MockJWTManager. func NewMockJWTManager() auth.JWTManagement { return &MockJWTManager{} } // GenerateToken generates a dummy token for a user. func (m *MockJWTManager) GenerateToken(user *domain.User) (string, error) { return "dummy-token-for-" + user.Username, nil } // ValidateToken validates a dummy token. func (m *MockJWTManager) ValidateToken(tokenString string) (*auth.Claims, error) { if tokenString != "" { // A real implementation would parse the user from the token. // For this mock, we'll just return a generic user. return &auth.Claims{ UserID: uuid.MustParse("550e8400-e29b-41d4-a716-446655440106"), Username: "testuser", Email: "test@test.com", Role: "reader", RegisteredClaims: jwt.RegisteredClaims{ ExpiresAt: jwt.NewNumericDate(time.Now().Add(24 * time.Hour)), }, }, nil } return nil, auth.ErrInvalidToken }