Files
kra-new/internal/biz/business/activation_pool_test.go
T

57 lines
1.7 KiB
Go

package business
import (
"context"
"testing"
)
type activationPoolFake struct {
ActivationPoolRepo
options []*ActivationBindingOption
requested uint
}
func (r *activationPoolFake) BindingOptions(_ context.Context, id uint) ([]*ActivationBindingOption, error) {
r.requested = id
return r.options, nil
}
func (r *activationPoolFake) PoolChannel(context.Context, uint64) (*ActivationPoolChannel, error) {
return &ActivationPoolChannel{ID: 10, SourceDB: "lx"}, nil
}
type activationGatewayFake struct {
calls int
request ActivationApplication
}
func (g *activationGatewayFake) Apply(_ context.Context, a ActivationApplication) error {
g.calls++
g.request = a
return nil
}
func TestActivationApplicationUsesAuthenticatedIdentityAndOwnedBinding(t *testing.T) {
accountUC, _ := activationFixture()
repo := &activationPoolFake{options: []*ActivationBindingOption{{ID: 9, SourceDB: "lx", Account: "own"}}}
gateway := &activationGatewayFake{}
uc := NewActivationPoolUsecase(repo, gateway, accountUC.accounts)
ctx := accountContext(8, 902)
if err := uc.Apply(ctx, 10, 9, "lx"); err != nil {
t.Fatal(err)
}
if gateway.request.UserID != 8 || repo.requested != 8 || gateway.request.BusierID != 9 {
t.Fatal("applicant came from request rather than session")
}
for _, a := range []ActivationApplication{{PoolID: 10, BusierID: 99, SourceDB: "lx"}, {PoolID: 10, BusierID: 9, SourceDB: "hw"}, {PoolID: 0, BusierID: 9, SourceDB: "lx"}} {
if err := uc.Apply(ctx, a.PoolID, a.BusierID, a.SourceDB); err == nil {
t.Fatal("unowned application accepted")
}
}
if err := uc.Apply(context.Background(), 10, 9, "lx"); err == nil {
t.Fatal("anonymous request accepted")
}
if gateway.calls != 1 {
t.Fatal("invalid requests reached OA")
}
}