package host import ( "context" "errors" "testing" "github.com/carlosframework/platform/internal/activator" "github.com/carlosframework/platform/internal/hostwrite" "github.com/carlosframework/platform/internal/schedule" ) type entrySelector struct{} func (entrySelector) Select(context.Context, string, string) (hostwrite.Work, error) { return nil, nil } func TestAgentClaimConsumersUseStartupWiring(t *testing.T) { sel := entrySelector{} w := &ClaimWiring{Writes: hostwrite.Config{Enabled: true, Selector: sel}, Providers: ClaimProviders{Wake: &activator.ClaimRuntime{}}} cfg := &activator.Config{} sd := &scheduleDeps{runner: &schedule.Runner{}, conv: &schedule.Converger{}} if err := configureWakeClaims(w, cfg); err != nil { t.Fatal(err) } if err := configureScheduleClaims(w, sd); err != nil { t.Fatal(err) } if !cfg.HostWrites.Enabled || cfg.Claims != w.Providers.Wake || !sd.runner.HostWrites.Enabled || !sd.conv.HostWrites.Enabled { t.Fatal("startup claim wiring was not propagated to every agent consumer") } } func TestAgentClaimConsumersRefuseMissingEnabledDependencies(t *testing.T) { w := &ClaimWiring{Writes: hostwrite.Config{Enabled: true, Selector: entrySelector{}}, Providers: ClaimProviders{Wake: &activator.ClaimRuntime{}}} if err := configureWakeClaims(w, nil); !errors.Is(err, hostwrite.ErrUnavailable) { t.Fatalf("wake error = %v", err) } if err := configureScheduleClaims(w, &scheduleDeps{runner: &schedule.Runner{}}); !errors.Is(err, hostwrite.ErrUnavailable) { t.Fatalf("schedule error = %v", err) } } func TestDisabledAgentClaimConsumersPreserveZeroConfig(t *testing.T) { w := &ClaimWiring{} cfg := &activator.Config{} sd := &scheduleDeps{runner: &schedule.Runner{}, conv: &schedule.Converger{}} if err := configureWakeClaims(w, cfg); err != nil { t.Fatal(err) } if err := configureScheduleClaims(w, sd); err != nil { t.Fatal(err) } if cfg.HostWrites.Enabled || sd.runner.HostWrites.Enabled || sd.conv.HostWrites.Enabled { t.Fatal("disabled startup changed consumers") } }