package controllers_test import ( "testing" "time" "gitea.badhouseplants.net/softplayer/softplayer-backend/internal/controllers" "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) { data := &controllers.JWTData{ UserID: testUserID, TokenType: "invalid_type", } authCtrl := controllers.NewAuthController([]byte("test"), testAccessTTL, testRefreshTTL, nil) token, _, err := authCtrl.GenerateToken(data) assert.Equal(t, "", token) assert.ErrorIs(t, controllers.ErrUnknownTokenType, err) } func TestGenerateValidateAccessToken(t *testing.T) { data := &controllers.JWTData{ UserID: testUserID, TokenType: controllers.TokenTypeAccess, } authCtrl := controllers.NewAuthController([]byte("test"), testAccessTTL, testRefreshTTL, nil) now := time.Now() token, _, err := authCtrl.GenerateToken(data) 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, controllers.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) { data := &controllers.JWTData{ UserID: testUserID, TokenType: controllers.TokenTypeRefresh, } authCtrl := controllers.NewAuthController([]byte("test"), testAccessTTL, testRefreshTTL, nil) now := time.Now() token, _, err := authCtrl.GenerateToken(data) 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, controllers.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()) }