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)
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
//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)
|
||||
}
|
||||
Reference in New Issue
Block a user