test(site-publish): prove absent bucket tombstone
Test / contract (pull_request) Successful in 6s

Authored-By: OpenAI (GPT-5) <noreply@openai.com>
This commit is contained in:
Evelyn Chen
2026-08-29 23:19:43 +00:00
parent 9b0a8c4fd4
commit deccc4e177
+17 -10
View File
@@ -559,15 +559,20 @@ class PublishingTests(unittest.TestCase):
second = deploy.previous_route_contracts(app_dir)
self.assertEqual(first, second)
def test_removed_artifact_keeps_bucket_access_history(self):
def test_protected_split_bucket_survives_absence_and_blocks_legacy(self):
raw = fixture("split-site.yaml")
raw["artifacts"] = [item for item in raw["artifacts"] if item["name"] == "portal"]
raw["routes"] = [item for item in raw["routes"] if item["artifact"] == "portal"]
raw["artifacts"] = [
item for item in raw["artifacts"] if item["name"] == "distributions"
]
raw["routes"] = [
item for item in raw["routes"] if item["artifact"] == "distributions"
]
raw["routes"][0]["path"] = "/"
cfg = normalize_site_config(raw, "baseline.fritzlab.net")
previous = {
"baseline-dist": {
"path": "/dist", "access": "protected", "artifact": "distributions",
"immutable_paths": ["dist/releases"],
"baseline.fritzlab.net": {
"path": "/", "access": "protected", "artifact": "portal",
"immutable_paths": [],
}
}
with tempfile.TemporaryDirectory() as tmp:
@@ -576,12 +581,14 @@ class PublishingTests(unittest.TestCase):
"baseline.fritzlab.net", ROOT, app_dir, app_dir / "manifests", cfg, previous,
)
retained = deploy.previous_route_contracts(app_dir)
self.assertEqual(previous["baseline-dist"], retained["baseline-dist"])
readded = normalize_site_config(
fixture("split-site.yaml"), "baseline.fritzlab.net",
self.assertEqual(
previous["baseline.fritzlab.net"], retained["baseline.fritzlab.net"],
)
legacy = normalize_site_config(
fixture("legacy-site.yaml"), "baseline.fritzlab.net",
)
with self.assertRaisesRegex(RuntimeError, "cannot become public while reusing protected"):
deploy.validate_route_migrations(readded, retained)
deploy.validate_route_migrations(legacy, retained)
def test_malformed_persistent_history_fails_closed(self):
with tempfile.TemporaryDirectory() as tmp: