Files
cardverse-be/internal/pkg/utils/jwt_test.go
2026-07-30 09:51:25 +07:00

68 lines
1.4 KiB
Go

package utils
import (
"testing"
"time"
"cardverse/config"
)
func setupTestConfig() {
config.Cfg = &config.Config{
JWTSecret: "test-secret-key",
JWTExpiresHours: 1,
}
}
func TestGenerateToken_AndValidateToken(t *testing.T) {
setupTestConfig()
token, err := GenerateToken(42, "user@example.com", "admin")
if err != nil {
t.Fatalf("GenerateToken expected no error, got: %v", err)
}
if token == "" {
t.Fatal("token should not be empty")
}
claims, err := ValidateToken(token)
if err != nil {
t.Fatalf("ValidateToken expected no error for valid token, got: %v", err)
}
if claims.UserID != 42 {
t.Errorf("UserID expected 42, got %d", claims.UserID)
}
if claims.Email != "user@example.com" {
t.Errorf("Email expected user@example.com, got %s", claims.Email)
}
if claims.Role != "admin" {
t.Errorf("Role expected admin, got %s", claims.Role)
}
}
func TestValidateToken_InvalidToken(t *testing.T) {
setupTestConfig()
_, err := ValidateToken("invalid.random.token")
if err == nil {
t.Fatal("ValidateToken should fail for invalid token")
}
}
func TestValidateToken_ExpiredToken(t *testing.T) {
config.Cfg = &config.Config{
JWTSecret: "test-secret-key",
JWTExpiresHours: 0,
}
token, _ := GenerateToken(1, "expired@example.com", "user")
time.Sleep(1100 * time.Millisecond)
_, err := ValidateToken(token)
if err == nil {
t.Fatal("ValidateToken should fail for expired token")
}
}