Implement refresh token endpoint
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
Signed-off-by: Nikolai Rodionov <allanger@badhouseplants.net>
This commit is contained in:
57
internal/authorization/auth_test.go
Normal file
57
internal/authorization/auth_test.go
Normal file
@@ -0,0 +1,57 @@
|
||||
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())
|
||||
}
|
||||
Reference in New Issue
Block a user