package host import ( "encoding/json" "errors" "testing" ) func TestClaimEmptyProducerDrainSurvivesTransport(t *testing.T) { ack := DrainClaimAcknowledgement("fence", "controller", "start", nil) raw, err := json.Marshal(ack) if err != nil { t.Fatal(err) } var wire DrainAcknowledgement if err := json.Unmarshal(raw, &wire); err != nil { t.Fatal(err) } for _, producers := range [][]string{nil, {}} { if err := validateClaimDrainProducers(producers, wire); err != nil { t.Fatalf("zero-producer pre-launch stop refused after JSON: %v", err) } } for _, ids := range [][]string{{"unrecorded"}, {"unrecorded", "unrecorded"}} { forged := DrainClaimAcknowledgement("fence", "controller", "start", ids) if err := validateClaimDrainProducers(nil, forged); !errors.Is(err, ErrClaimStopIdentity) { t.Fatalf("unrecorded producers accepted: %v", err) } } wire.Digest = "bad" if err := validateClaimDrainProducers(nil, wire); !errors.Is(err, ErrClaimStopIdentity) { t.Fatalf("bad digest accepted: %v", err) } }