🧑‍💻 Created dummy and stub repository and use case for client

This commit is contained in:
Maxim Lebedev 2024-05-08 15:01:49 +05:00
parent ffeaf8c679
commit 9048d0f77c
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
2 changed files with 79 additions and 8 deletions

View File

@ -6,13 +6,53 @@ import (
"source.toby3d.me/toby3d/auth/internal/domain" "source.toby3d.me/toby3d/auth/internal/domain"
) )
type Repository interface { type (
Create(ctx context.Context, client domain.Client) error Repository interface {
Get(ctx context.Context, cid domain.ClientID) (*domain.Client, error) Create(ctx context.Context, client domain.Client) error
} Get(ctx context.Context, cid domain.ClientID) (*domain.Client, error)
}
dummyClientRepository struct{}
stubClientRepository struct {
client *domain.Client
error error
}
)
var ErrNotExist error = domain.NewError( var ErrNotExist error = domain.NewError(
domain.ErrorCodeInvalidClient, domain.ErrorCodeInvalidClient,
"client with the specified ID does not exist", "client with the specified ID does not exist",
"", "",
) )
// NewDummyClientRepository creates a new dummy [Repository] implementation what
// do nothing.
func NewDummyClientRepository() Repository {
return dummyClientRepository{}
}
func (dummyClientRepository) Create(_ context.Context, _ domain.Client) error {
return nil
}
func (dummyClientRepository) Get(_ context.Context, _ domain.ClientID) (*domain.Client, error) {
return nil, nil
}
// NewStubClientRepository creates a new stub [Repository] implementation what
// always return data provided here.
func NewStubClientRepository(client *domain.Client, err error) Repository {
return &stubClientRepository{
client: client,
error: err,
}
}
func (repo *stubClientRepository) Create(_ context.Context, _ domain.Client) error {
return repo.error
}
func (repo *stubClientRepository) Get(_ context.Context, _ domain.ClientID) (*domain.Client, error) {
return repo.client, repo.error
}

View File

@ -6,13 +6,44 @@ import (
"source.toby3d.me/toby3d/auth/internal/domain" "source.toby3d.me/toby3d/auth/internal/domain"
) )
type UseCase interface { type (
// Discovery returns client public information bu ClientID URL. UseCase interface {
Discovery(ctx context.Context, id domain.ClientID) (*domain.Client, error) // Discovery returns client public information bu ClientID URL.
} Discovery(ctx context.Context, id domain.ClientID) (*domain.Client, error)
}
dummyClientUseCase struct{}
stubClientUseCase struct {
client *domain.Client
error error
}
)
var ErrInvalidMe error = domain.NewError( var ErrInvalidMe error = domain.NewError(
domain.ErrorCodeInvalidRequest, domain.ErrorCodeInvalidRequest,
"cannot fetch client endpoints on provided me", "cannot fetch client endpoints on provided me",
"", "",
) )
// NewDummyClientUseCase returns dummy [UseCase] what do nothing.
func NewDummyClientUseCase() UseCase {
return dummyClientUseCase{}
}
func (dummyClientUseCase) Discovery(_ context.Context, _ domain.ClientID) (*domain.Client, error) {
return nil, nil
}
// NewDummyClientUseCase returns stub [UseCase] what always returns data
// provided here.
func NewStubClientUseCase(client *domain.Client, err error) UseCase {
return &stubClientUseCase{
client: client,
error: err,
}
}
func (ucase *stubClientUseCase) Discovery(_ context.Context, _ domain.ClientID) (*domain.Client, error) {
return ucase.client, ucase.error
}