👔 Created client use cases
This commit is contained in:
parent
10cc589dc6
commit
bd20bbc55d
|
@ -0,0 +1,11 @@
|
|||
package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"source.toby3d.me/website/oauth/internal/model"
|
||||
)
|
||||
|
||||
type Repository interface {
|
||||
Get(ctx context.Context, id string) (*model.Client, error)
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"source.toby3d.me/website/oauth/internal/model"
|
||||
)
|
||||
|
||||
type UseCase interface {
|
||||
Discovery(ctx context.Context, clientID model.URL) (*model.Client, error)
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"source.toby3d.me/website/oauth/internal/client"
|
||||
"source.toby3d.me/website/oauth/internal/model"
|
||||
)
|
||||
|
||||
type clientUseCase struct {
|
||||
clients client.Repository
|
||||
}
|
||||
|
||||
func NewClientUseCase(clients client.Repository) client.UseCase {
|
||||
return &clientUseCase{
|
||||
clients: clients,
|
||||
}
|
||||
}
|
||||
|
||||
func (useCase *clientUseCase) Discovery(ctx context.Context, clientID model.URL) (*model.Client, error) {
|
||||
return useCase.clients.Get(ctx, string(clientID))
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package usecase_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
repository "source.toby3d.me/website/oauth/internal/client/repository/memory"
|
||||
"source.toby3d.me/website/oauth/internal/client/usecase"
|
||||
"source.toby3d.me/website/oauth/internal/model"
|
||||
)
|
||||
|
||||
func TestDiscovery(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
require := require.New(t)
|
||||
assert := assert.New(t)
|
||||
store := new(sync.Map)
|
||||
client := &model.Client{
|
||||
ID: "http://127.0.0.1:2368/",
|
||||
Name: "Example App",
|
||||
Logo: "http://127.0.0.1:2368/logo.png",
|
||||
URL: "http://127.0.0.1:2368/",
|
||||
RedirectURI: []model.URL{
|
||||
"https://app.example.com/redirect",
|
||||
"http://127.0.0.1:2368/redirect",
|
||||
},
|
||||
}
|
||||
|
||||
store.Store(string(client.ID), client)
|
||||
|
||||
result, err := usecase.NewClientUseCase(repository.NewMemoryClientRepository(store)).Discovery(context.TODO(),
|
||||
client.ID)
|
||||
require.NoError(err)
|
||||
assert.Equal(client, result)
|
||||
}
|
Loading…
Reference in New Issue