auth/internal/token/usecase/token_usecase_test.go

69 lines
1.8 KiB
Go
Raw Normal View History

2021-09-20 15:45:54 +00:00
package usecase_test
import (
"context"
2021-09-22 21:32:40 +00:00
"sync"
2021-09-20 15:45:54 +00:00
"testing"
"github.com/brianvoe/gofakeit"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"source.toby3d.me/website/oauth/internal/model"
repository "source.toby3d.me/website/oauth/internal/token/repository/memory"
"source.toby3d.me/website/oauth/internal/token/usecase"
)
func TestVerify(t *testing.T) {
t.Parallel()
require := require.New(t)
assert := assert.New(t)
2021-09-22 21:32:40 +00:00
store := new(sync.Map)
repo := repository.NewMemoryTokenRepository(store)
ucase := usecase.NewTokenUseCase(repo)
accessToken := &model.Token{
AccessToken: gofakeit.Password(true, true, true, true, false, 32),
Type: "Bearer",
ClientID: "https://app.example.com/",
Me: "https://user.example.net/",
Scopes: []string{"create", "update", "delete"},
Profile: nil,
}
require.NoError(repo.Create(context.TODO(), accessToken))
token, err := ucase.Verify(context.TODO(), accessToken.AccessToken)
require.NoError(err)
assert.Equal(accessToken, token)
}
2021-09-20 15:45:54 +00:00
func TestRevoke(t *testing.T) {
t.Parallel()
require := require.New(t)
assert := assert.New(t)
2021-09-22 21:32:40 +00:00
store := new(sync.Map)
repo := repository.NewMemoryTokenRepository(store)
2021-09-20 15:45:54 +00:00
ucase := usecase.NewTokenUseCase(repo)
accessToken := gofakeit.Password(true, true, true, true, false, 32)
require.NoError(repo.Create(context.TODO(), &model.Token{
AccessToken: accessToken,
Type: "Bearer",
ClientID: "https://app.example.com/",
Me: "https://user.example.net/",
Scopes: []string{"create", "update", "delete"},
Profile: nil,
2021-09-20 15:45:54 +00:00
}))
token, err := repo.Get(context.TODO(), accessToken)
require.NoError(err)
assert.NotNil(token)
require.NoError(ucase.Revoke(context.TODO(), token.AccessToken))
token, err = repo.Get(context.TODO(), token.AccessToken)
require.NoError(err)
assert.Nil(token)
}