package authorization_test import ( "testing" "time" "gitea.badhouseplants.net/softplayer/softplayer-backend/internal/authorization" "github.com/google/uuid" "github.com/stretchr/testify/assert" ) var ( testAccessTTL = time.Second * 5 testRefreshTTL = time.Second * 20 testUserID = uuid.New().String() ) func TestGenerateInvalidTokenType(t *testing.T) { authCtrl := authorization.NewAuthController([]byte("test"), testAccessTTL, testRefreshTTL, nil) token, _, err := authCtrl.GenerateToken(testUserID, "invalid_type") assert.Equal(t, "", token) assert.ErrorIs(t, authorization.ErrUnknownTokenType, err) } func TestGenerateValidateAccessToken(t *testing.T) { authCtrl := authorization.NewAuthController([]byte("test"), testAccessTTL, testRefreshTTL, nil) now := time.Now() token, _, err := authCtrl.GenerateToken(testUserID, authorization.TokenTypeAccess) assert.NoError(t, err) assert.NotEmpty(t, token) claims, err := authCtrl.ParseToken(token) assert.NoError(t, err) assert.Equal(t, testUserID, claims.UserID) assert.NotEmpty(t, claims.TokenID) assert.Equal(t, authorization.TokenTypeAccess, claims.TokenType) assert.Equal(t, now.Add(testAccessTTL).Unix(), claims.ExpiresAt.Unix()) assert.Equal(t, now.Unix(), claims.IssuedAt.Unix()) assert.Equal(t, now.Unix(), claims.NotBefore.Unix()) } func TestGenerateValidateRefreshToken(t *testing.T) { authCtrl := authorization.NewAuthController([]byte("test"), testAccessTTL, testRefreshTTL, nil) now := time.Now() token, _, err := authCtrl.GenerateToken(testUserID, authorization.TokenTypeRefresh) assert.NoError(t, err) assert.NotEmpty(t, token) claims, err := authCtrl.ParseToken(token) assert.NoError(t, err) assert.Equal(t, testUserID, claims.UserID) assert.NotEmpty(t, claims.TokenID) assert.Equal(t, authorization.TokenTypeRefresh, claims.TokenType) assert.Equal(t, now.Add(testRefreshTTL).Unix(), claims.ExpiresAt.Unix()) assert.Equal(t, now.Unix(), claims.IssuedAt.Unix()) assert.Equal(t, now.Unix(), claims.NotBefore.Unix()) }