package release import ( "github.com/carlosframework/platform/internal/registry" "testing" ) func TestPlan9ReleaseIdentityRequiresSignedTarget(t *testing.T) { s := NewDirStore(t.TempDir()) key, pub := testKeys(t) rt := registry.Route{Host: "x.example", Account: "bab", App: "demo", Channel: "canary/x"} for _, v := range []string{"one", "two"} { shipRelease(t, s, "bab", "demo", v, "linux-amd64", []byte(v)) } if err := Promote(t.Context(), s, key, "bab", "demo", rt.Channel, "one"); err != nil { t.Fatal(err) } m, err := GetManifest(t.Context(), s, "bab", "demo", "one") if err != nil { t.Fatal(err) } id, err := releaseIdentity(m) if err != nil { t.Fatal(err) } if err := CheckRouteReleaseIdentity(t.Context(), s, pub, rt, id); err != nil { t.Fatal(err) } if err := Promote(t.Context(), s, key, "bab", "demo", rt.Channel, "two"); err != nil { t.Fatal(err) } if err := CheckRouteReleaseIdentity(t.Context(), s, pub, rt, id); err == nil { t.Fatal("arbitrary old version accepted") } rt.Version = "one" if err := CheckRouteReleaseIdentity(t.Context(), s, pub, rt, id); err != nil { t.Fatalf("installed rollback refused: %v", err) } }