package host import ( "context" "errors" "testing" "github.com/carlosframework/platform/internal/hostbox" "github.com/carlosframework/platform/internal/hostclaim" "github.com/carlosframework/platform/internal/hostwrite" ) func TestClaimServingAssemblyRequiresRetirementBeforeRuntime(t *testing.T) { for _, missing := range []string{"legacy", "enrollment", "recovery"} { t.Run(missing, func(t *testing.T) { called := false w := &ClaimWakeAssembly{RequireServingEnrollment: true, BeforeLegacyInstall: func(context.Context, hostclaim.Observed, ClaimLaunchInputs, hostwrite.Work) error { called = true return nil }, BeforeInstallLocked: func(context.Context, hostclaim.Observed, ClaimLaunchInputs) error { called = true; return nil }, RecoverArtifacts: func(context.Context, hostclaim.Observed, ClaimLaunchInputs) error { called = true; return nil }, } switch missing { case "legacy": w.BeforeLegacyInstall = nil case "enrollment": w.BeforeInstallLocked = nil case "recovery": w.RecoverArtifacts = nil } runtime, err := w.Build(t.Context(), hostbox.WorkSource{}, hostbox.Writer{}) var dep *ClaimDependencyError if runtime != nil || !errors.As(err, &dep) || called { t.Fatalf("missing %s: runtime=%v err=%v effects=%v", missing, runtime, err, called) } }) } }