package appconfig import ( "encoding/json" "github.com/carlosframework/platform/internal/registry" "github.com/carlosframework/platform/internal/release" "testing" ) func TestPlan9ConfigIdentityRejectsChangedRender(t *testing.T) { s := release.NewDirStore(t.TempDir()) rt := registry.Route{Host: "x.example", Account: "bab", App: "demo"} m := Manifest{Schema: 1, App: rt.App, Vars: map[string]Var{"VALUE": {Kind: "env", Value: "one"}}} raw, _ := json.Marshal(m) tag, err := s.Put(t.Context(), Key(rt.Account, rt.App), raw, "") if err != nil { t.Fatal(err) } rendered, err := RenderEnv(&m, nil, routeBinding(rt)) if err != nil { t.Fatal(err) } id := renderedIdentity(rendered, true, false, false) if err := CheckRenderedIdentity(t.Context(), s, nil, rt, id); err != nil { t.Fatal(err) } m.Vars["VALUE"] = Var{Kind: "env", Value: "two"} raw, _ = json.Marshal(m) if _, err = s.Put(t.Context(), Key(rt.Account, rt.App), raw, tag); err != nil { t.Fatal(err) } if err := CheckRenderedIdentity(t.Context(), s, nil, rt, id); err == nil { t.Fatal("stale render accepted") } }