package release import ( "context" "os" "path/filepath" "testing" ) func TestPlan14GenerationLegacyRelay(t *testing.T) { for _, mode := range []string{"pinned", "unknown", "unreserved", "legacy", "fresh", "claims-enabled"} { t.Run(mode, func(t *testing.T) { t.Setenv("CARLOS_HOST_CLAIM", "") ctx, s, opt := heldFixture(t) data := t.TempDir() request := writeHeldRequest(t, data, heldTestHost+".json", goodHeldRequest()) path := VersionPath(opt, "bab", "v1", "console") if mode != "fresh" { if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil { t.Fatal(err) } } calls, published := 0, false source := PinSourceFunc(func(context.Context, string) (StagedPaths, error) { calls++ if published { t.Fatal("pin read inside publication") } switch mode { case "unknown", "fresh": return nil, os.ErrPermission case "pinned": return StagedPaths{filepath.Dir(path): true}, nil } return StagedPaths{}, nil }) auth := func(_ HeldStageRequest, then func() error) error { if then != nil { published = true return then() } return nil } var err error if mode == "claims-enabled" { t.Setenv("CARLOS_HOST_CLAIM", "1") } if mode == "legacy" { err = ServeHeldStageRequests(ctx, s, heldPub, nr(t), opt, data, offGate(t), auth) } else { err = ServeHeldStageRequestsWithPins(ctx, s, heldPub, nr(t), opt, data, offGate(t), auth, source) } if err != nil { t.Fatal(err) } refused := mode == "pinned" || mode == "unknown" || mode == "claims-enabled" if refused { if published { t.Fatal("refused stage published") } if _, err := os.Stat(request); err != nil { t.Fatal("refused request not retained", err) } for _, p := range []string{path, LiveLink(opt, heldTestHost), filepath.Join(HeldStagedDir(data), heldTestHost+".json")} { if _, err := os.Lstat(p); !os.IsNotExist(err) { t.Fatal("refused stage wrote artifact/link/ack", p, err) } } if mode != "claims-enabled" && calls == 0 { t.Fatal("relay omitted pin reader") } if mode == "claims-enabled" && calls != 0 { t.Fatal("claims refusal read pins") } } else { if !published { t.Fatal("permitted stage not published") } if _, err := os.Stat(request); !os.IsNotExist(err) { t.Fatal("served request retained", err) } if raw, err := os.ReadFile(path); err != nil || string(raw) != "pinned build" { t.Fatal("permitted artifact missing", err) } if v, err := LiveVersion(opt, heldTestHost); err != nil || v != "v1" { t.Fatal("wrong live target", v, err) } if _, err := os.Stat(filepath.Join(HeldStagedDir(data), heldTestHost+".json")); err != nil { t.Fatal("missing acknowledgement", err) } if mode == "fresh" && calls != 0 { t.Fatal("fresh tree required completeness") } } }) } }