package provision import ( "context" "errors" "testing" "github.com/carlosframework/platform/internal/release" ) type retireSpy struct{ calls int } func (s *retireSpy) RetireRecord(context.Context, RetireRef) error { s.calls++ return errors.New("claim path") } func TestRetireRecordFlagOffAndRequiredProvider(t *testing.T) { ctx := context.Background() store := release.NewDirStore(t.TempDir()) spy := &retireSpy{} for _, family := range []string{"instance", "sidecar"} { ref := RetireRef{Family: family, Account: "bab", App: "jam", Host: "shop.bab.example.com"} if family == "sidecar" { ref.Name = "job" ref.Host = SidecarHost(ref.Name, ref.App, ref.Account) } if err := RetireRecord(ctx, store, ref, RetireOptions{Claims: spy}); err != nil { t.Fatal(err) } if spy.calls != 0 { t.Fatal("flag off called claims") } if err := RetireRecord(ctx, store, ref, RetireOptions{HostClaim: true}); !errors.Is(err, ErrClaimRetirer) { t.Fatal(err) } } ref := RetireRef{Family: "instance", Account: "bab", App: "jam", Host: "shop.bab.example.com"} if err := RetireRecord(ctx, store, ref, RetireOptions{HostClaim: true, Claims: spy}); err == nil || spy.calls != 1 { t.Fatal("claim path not required") } }