go-blocks/token/token_test.go

63 lines
1.2 KiB
Go

package token
import (
"testing"
"github.com/google/uuid"
"github.com/stretchr/testify/require"
"github.com/zepyrshut/esfaker"
)
func Test_New(t *testing.T) {
paseto := New()
require.NotNil(t, paseto.paseto)
require.NotNil(t, paseto.privateKey)
require.NotNil(t, paseto.publicKey)
}
func Test_NewPayload(t *testing.T) {
user := createRandomUser()
payload := NewPayload(user)
require.True(t, isValidUUID(payload.UUID))
require.Equal(t, user, payload.User)
}
func Test_CreateToken(t *testing.T) {
token := New()
user := createRandomUser()
signature, err := token.Create(user)
require.Nil(t, err)
require.NotEmpty(t, signature)
}
func Test_VerifyToken(t *testing.T) {
token := New()
user := createRandomUser()
signature, _ := token.Create(user)
payload, err := token.Verify(signature)
require.Nil(t, err)
require.Equal(t, user, payload.User)
}
func Test_VerifyToken_InvalidToken(t *testing.T) {
token := New()
_, err := token.Verify("invalid-token")
require.NotNil(t, err)
}
func isValidUUID(u uuid.UUID) bool {
_, err := uuid.Parse(u.String())
return err == nil
}
func createRandomUser() UserPayload {
return UserPayload{
Username: esfaker.Chars(5, 10),
}
}