54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
sessionmodel "git.sendico.io/tech/sxchnge/product/sessions/model"
|
|
"testing"
|
|
|
|
"git.sendico.io/tech/sxchnge/product/sessions/store"
|
|
)
|
|
|
|
type resolveClientDB struct {
|
|
refreshtokens.DB
|
|
calls int
|
|
client *sessionmodel.Client
|
|
err error
|
|
}
|
|
|
|
func (db *resolveClientDB) GetClient(ctx context.Context, clientID string) (*sessionmodel.Client, error) {
|
|
db.calls++
|
|
return db.client, db.err
|
|
}
|
|
|
|
func TestResolveRejectsBlankClientIDWithoutStorageLookup(t *testing.T) {
|
|
db := &resolveClientDB{}
|
|
|
|
client, err := Resolve(context.Background(), db, " ")
|
|
if !errors.Is(err, ErrUnknownClientID) {
|
|
t.Fatalf("expected unknown client id, got %v", err)
|
|
}
|
|
if client != nil {
|
|
t.Fatalf("expected nil client, got %#v", client)
|
|
}
|
|
if db.calls != 0 {
|
|
t.Fatalf("expected no storage lookup for blank client id, got %d", db.calls)
|
|
}
|
|
}
|
|
|
|
func TestResolveTrimsClientID(t *testing.T) {
|
|
want := &sessionmodel.Client{ClientID: "client-1"}
|
|
db := &resolveClientDB{client: want}
|
|
|
|
client, err := Resolve(context.Background(), db, " client-1 ")
|
|
if err != nil {
|
|
t.Fatalf("expected client resolution to succeed, got %v", err)
|
|
}
|
|
if client != want {
|
|
t.Fatalf("expected resolved client %#v, got %#v", want, client)
|
|
}
|
|
if db.calls != 1 {
|
|
t.Fatalf("expected one storage lookup, got %d", db.calls)
|
|
}
|
|
}
|