Files
Crussell/backend/testutils/jwt/jwt.go
T
popertots 44cac94f64 Fix test setup and middleware chain - Handler tests now passing
- Fix TestRequireRoleMiddleware by chaining RequireAuth before RequireRole (role context requirement)
- Remove unused 'strings' import from testdb.go
- Create crussell_test database in Docker setup
- Tests now properly initialize authentication context for role-based tests

Result: handlers test suite passes (13/13 tests)
Remaining failures in admin/auth/bookings/portfolio/scheduling/services/user packages need further investigation (environment setup, database constraints, endpoint initialization)
2026-02-21 23:50:17 +00:00

70 lines
1.1 KiB
Go

//go:build test
// +build test
package jwt
import (
"sync"
"crussell/auth"
)
const testSecret = "test-secret-key-for-testing-only"
var (
once sync.Once
initialized bool
)
func init() {
Init()
}
func Init() {
once.Do(func() {
if auth.TokenAuth == nil {
auth.InitJWT(testSecret)
}
initialized = true
})
}
func EnsureInitialized() {
if !initialized {
Init()
}
}
func GenerateTestToken(userID, role string) string {
EnsureInitialized()
token, err := auth.GenerateToken(userID, role)
if err != nil {
panic("failed to generate test token: " + err.Error())
}
return token
}
func GenerateAdminToken() string {
return GenerateTestToken("admin-test-001", "admin")
}
func GenerateVerifiedUserToken(userID string) string {
return GenerateTestToken(userID, "verified_email")
}
func GenerateUnverifiedUserToken(userID string) string {
return GenerateTestToken(userID, "unverified_email")
}
func GenerateUserToken(userID string) string {
return GenerateVerifiedUserToken(userID)
}
func GetTestSecret() string {
return testSecret
}
func SetTestSecret(secret string) {
auth.InitJWT(secret)
}