78 lines
2.1 KiB
Go
78 lines
2.1 KiB
Go
package auth
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestJWTService_GenerateTokenWithRole(t *testing.T) {
|
|
service := NewJWTService("test-secret", time.Hour)
|
|
|
|
userID := uuid.New()
|
|
email := "test@example.com"
|
|
role := "admin"
|
|
|
|
tokenString, expiresAt, err := service.GenerateTokenWithRole(userID, email, role)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, tokenString)
|
|
require.True(t, expiresAt.After(time.Now()))
|
|
|
|
// Validate the token
|
|
claims, err := service.ValidateToken(tokenString)
|
|
require.NoError(t, err)
|
|
require.Equal(t, userID.String(), claims.UserID)
|
|
require.Equal(t, email, claims.Email)
|
|
require.Equal(t, role, claims.Role)
|
|
}
|
|
|
|
func TestJWTService_GenerateToken_DefaultsToUserRole(t *testing.T) {
|
|
service := NewJWTService("test-secret", time.Hour)
|
|
|
|
userID := uuid.New()
|
|
email := "test@example.com"
|
|
|
|
tokenString, _, err := service.GenerateToken(userID, email)
|
|
require.NoError(t, err)
|
|
|
|
// Validate the token
|
|
claims, err := service.ValidateToken(tokenString)
|
|
require.NoError(t, err)
|
|
require.Equal(t, userID.String(), claims.UserID)
|
|
require.Equal(t, email, claims.Email)
|
|
require.Equal(t, "user", claims.Role) // Should default to "user"
|
|
}
|
|
|
|
func TestJWTService_GenerateTokenWithRole_EmptyRoleDefaultsToUser(t *testing.T) {
|
|
service := NewJWTService("test-secret", time.Hour)
|
|
|
|
userID := uuid.New()
|
|
email := "test@example.com"
|
|
|
|
tokenString, _, err := service.GenerateTokenWithRole(userID, email, "")
|
|
require.NoError(t, err)
|
|
|
|
// Validate the token
|
|
claims, err := service.ValidateToken(tokenString)
|
|
require.NoError(t, err)
|
|
require.Equal(t, "user", claims.Role) // Should default to "user" when empty
|
|
}
|
|
|
|
func TestJWTService_ValidateToken_WithRole(t *testing.T) {
|
|
service := NewJWTService("test-secret", time.Hour)
|
|
|
|
userID := uuid.New()
|
|
email := "test@example.com"
|
|
role := "admin"
|
|
|
|
tokenString, _, err := service.GenerateTokenWithRole(userID, email, role)
|
|
require.NoError(t, err)
|
|
|
|
claims, err := service.ValidateToken(tokenString)
|
|
require.NoError(t, err)
|
|
require.Equal(t, userID.String(), claims.UserID)
|
|
require.Equal(t, email, claims.Email)
|
|
require.Equal(t, role, claims.Role)
|
|
}
|