carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1package host
2
3import (
4 "encoding/json"
5 "errors"
6 "testing"
7)
8
9func TestClaimEmptyProducerDrainSurvivesTransport(t *testing.T) {
10 ack := DrainClaimAcknowledgement("fence", "controller", "start", nil)
11 raw, err := json.Marshal(ack)
12 if err != nil {
13 t.Fatal(err)
14 }
15 var wire DrainAcknowledgement
16 if err := json.Unmarshal(raw, &wire); err != nil {
17 t.Fatal(err)
18 }
19 for _, producers := range [][]string{nil, {}} {
20 if err := validateClaimDrainProducers(producers, wire); err != nil {
21 t.Fatalf("zero-producer pre-launch stop refused after JSON: %v", err)
22 }
23 }
24 for _, ids := range [][]string{{"unrecorded"}, {"unrecorded", "unrecorded"}} {
25 forged := DrainClaimAcknowledgement("fence", "controller", "start", ids)
26 if err := validateClaimDrainProducers(nil, forged); !errors.Is(err, ErrClaimStopIdentity) {
27 t.Fatalf("unrecorded producers accepted: %v", err)
28 }
29 }
30 wire.Digest = "bad"
31 if err := validateClaimDrainProducers(nil, wire); !errors.Is(err, ErrClaimStopIdentity) {
32 t.Fatalf("bad digest accepted: %v", err)
33 }
34}
35