package hostactors import ( "bytes" "github.com/carlosframework/platform/internal/release" "strings" "testing" ) func TestPlan11Fix1EnrollmentFlagBytes(t *testing.T) { for _, flag := range []string{"", "1"} { t.Run("flag="+flag, func(t *testing.T) { t.Setenv("CARLOS_HOST_CLAIM", flag) d, sg, before := fixture(t) next := Clone(before.Roster) b := next.Boxes["box"] b.BoxID, b.Enrollment, b.Cloud.InstanceID = "second", strings.Repeat("c", 32), "i-second" next.Boxes["second"] = b next.Consoles["console"] = Console{Enrollment: strings.Repeat("d", 32), InstanceID: "console", Namespaces: []string{"platform"}, DeploymentBucket: d.Bucket} got, err := d.Replace(t.Context(), sg, before, next) if err != nil { t.Fatal(err) } raw, _, err := d.Store.Get(t.Context(), Key) if err != nil { t.Fatal(err) } if flag == "" { next.Revision = before.Roster.Revision + 1 want, err := release.SignRootEnvelope(sg, next) if err != nil { t.Fatal(err) } if !bytes.Equal(raw, want) || bytes.Contains(raw, []byte("enrolled_at")) { t.Fatal("flag-off enrollment changed legacy signed bytes") } } else if got.Roster.Boxes["second"].EnrolledAt.IsZero() || got.Roster.Consoles["console"].EnrolledAt.IsZero() { t.Fatal("flag-on enrollment missing timestamps") } }) } }