46 lines
1.6 KiB
Go
46 lines
1.6 KiB
Go
package domain
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.cin.su/m/Assistant/contracts/capability"
|
|
"git.cin.su/m/Assistant/contracts/identity"
|
|
)
|
|
|
|
func validBinding() capability.Binding {
|
|
return capability.Binding{ID: "binding-1", CapabilityID: "prospective-notification-delivery", OwnerPrincipalID: identity.PrincipalID("owner-1"), Revision: 1, State: capability.BindingActive, HTTPSOrigin: "https://assistent.cin.su", DeliveryPath: "/delivery/v1/receipts", ReceiptPath: "/delivery/v1/receipts", Protocol: capability.ProtocolIdempotentReceiptV1, SecretRef: "notification-write-v1", VerifiedAtUnixMillis: 1, Health: capability.HealthAvailable}
|
|
}
|
|
|
|
func TestValidateBinding(t *testing.T) {
|
|
b := validBinding()
|
|
b.ReceiptPath = "/delivery/v1/lookup"
|
|
if err := ValidateBinding(b); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, mutate := range []func(*capability.Binding){
|
|
func(v *capability.Binding) { v.HTTPSOrigin = "http://assistent.cin.su" },
|
|
func(v *capability.Binding) { v.DeliveryPath = "//evil" },
|
|
func(v *capability.Binding) { v.SecretRef = "" },
|
|
func(v *capability.Binding) { v.Revision = 0 },
|
|
func(v *capability.Binding) { v.Health = capability.HealthDegraded },
|
|
} {
|
|
candidate := b
|
|
mutate(&candidate)
|
|
if err := UsableBinding(candidate); err == nil {
|
|
t.Fatalf("expected rejection: %+v", candidate)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRetireBindingIncrementsRevision(t *testing.T) {
|
|
b := validBinding()
|
|
b.ReceiptPath = "/delivery/v1/lookup"
|
|
retired, err := RetireBinding(b)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if retired.State != capability.BindingRetired || retired.Revision != 2 {
|
|
t.Fatalf("unexpected retired binding: %+v", retired)
|
|
}
|
|
}
|