ForFarm/backend/internal/utilities/jwt_test.go
2025-04-04 22:15:13 +07:00

45 lines
1.0 KiB
Go

package utilities
import (
"github.com/golang-jwt/jwt/v5"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestJWTTokenCreationAndVerification(t *testing.T) {
testUUID := "123e4567-e89b-12d3-a456-426614174000"
token, err := CreateJwtToken(testUUID)
assert.NoError(t, err)
assert.NotEmpty(t, token)
err = VerifyJwtToken(token)
assert.NoError(t, err)
uuid, err := ExtractUUIDFromToken(token)
assert.NoError(t, err)
assert.Equal(t, testUUID, uuid)
}
func TestExpiredJWTToken(t *testing.T) {
oldKey := defaultSecretKey
defaultSecretKey = []byte("test-secret-key-1234567890-1234567890")
defer func() { defaultSecretKey = oldKey }()
testUUID := "123e4567-e89b-12d3-a456-426614174000"
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"uuid": testUUID,
"exp": time.Now().Add(-time.Hour).Unix(),
})
tokenString, err := token.SignedString(defaultSecretKey)
assert.NoError(t, err)
err = VerifyJwtToken(tokenString)
assert.Error(t, err)
assert.Contains(t, err.Error(), "token is expired")
}