package host import ( "context" "errors" "github.com/carlosframework/platform/internal/hostbox" "github.com/carlosframework/platform/internal/hostwrite" "github.com/carlosframework/platform/internal/release" "testing" ) func TestClaimAssemblyDisabledNeverOpensDependencies(t *testing.T) { calls := 0 _, err := claimEntryContext(t.Context(), func(string) string { return "" }, func(context.Context) (release.Store, error) { calls++; return nil, errors.New("opened") }) if err != nil || calls != 0 { t.Fatalf("err=%v calls=%d", err, calls) } } func TestClaimAssemblyEnabledOpensStoreBeforeFactory(t *testing.T) { opened := false store := release.NewDirStore(t.TempDir()) ctx, err := claimEntryContext(t.Context(), func(string) string { return "0" }, func(context.Context) (release.Store, error) { opened = true; return store, nil }) if err != nil { t.Fatal(err) } if !opened || claimStore(ctx) != store { t.Fatal("missing deployment client") } _, err = productionClaimFactory(ctx) var missing *ClaimDependencyError if !errors.As(err, &missing) || len(missing.Contracts) == 0 { t.Fatalf("missing dependency not identified: %v", err) } } func TestClaimAssemblyRefusesIncompleteProviders(t *testing.T) { if _, err := (ClaimAssembly{}).Build(t.Context()); !errors.Is(err, hostwrite.ErrUnavailable) { t.Fatal(err) } } func TestClaimWakeCompositionRequiresStopAndInputs(t *testing.T) { _, err := (&ClaimWakeAssembly{}).Build(t.Context(), hostbox.WorkSource{}, hostbox.Writer{}) if !errors.Is(err, hostwrite.ErrUnavailable) { t.Fatal(err) } }