83 lines
2.0 KiB
Go
83 lines
2.0 KiB
Go
package usecase_test
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"sync"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"source.toby3d.me/website/indieauth/internal/domain"
|
|
"source.toby3d.me/website/indieauth/internal/token"
|
|
repository "source.toby3d.me/website/indieauth/internal/token/repository/memory"
|
|
usecase "source.toby3d.me/website/indieauth/internal/token/usecase"
|
|
)
|
|
|
|
/* TODO(toby3d)
|
|
func TestExchange(t *testing.T) {
|
|
t.Parallel()
|
|
}
|
|
*/
|
|
|
|
func TestVerify(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
repo := repository.NewMemoryTokenRepository(new(sync.Map))
|
|
ucase := usecase.NewTokenUseCase(repo, nil, domain.TestConfig(t))
|
|
|
|
t.Run("valid", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
accessToken := domain.TestToken(t)
|
|
|
|
result, err := ucase.Verify(context.TODO(), accessToken.AccessToken)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
assert.Equal(t, accessToken.AccessToken, result.AccessToken)
|
|
assert.Equal(t, accessToken.Scope, result.Scope)
|
|
assert.Equal(t, accessToken.ClientID.String(), result.ClientID.String())
|
|
assert.Equal(t, accessToken.Me.String(), result.Me.String())
|
|
})
|
|
|
|
t.Run("revoked", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
accessToken := domain.TestToken(t)
|
|
if err := repo.Create(context.TODO(), accessToken); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
result, err := ucase.Verify(context.TODO(), accessToken.AccessToken)
|
|
if !errors.Is(err, token.ErrRevoke) {
|
|
t.Errorf("Verify(%s) = %v, want %v", accessToken.AccessToken, err, token.ErrRevoke)
|
|
}
|
|
|
|
if result != nil {
|
|
t.Errorf("Verify(%s) = %v, want %v", accessToken.AccessToken, result, nil)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestRevoke(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
config := domain.TestConfig(t)
|
|
accessToken := domain.TestToken(t)
|
|
repo := repository.NewMemoryTokenRepository(new(sync.Map))
|
|
|
|
if err := usecase.NewTokenUseCase(repo, nil, config).
|
|
Revoke(context.TODO(), accessToken.AccessToken); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
result, err := repo.Get(context.TODO(), accessToken.AccessToken)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
assert.Equal(t, accessToken.AccessToken, result.AccessToken)
|
|
}
|