feat: inventory schema 0.3 and close WP-0006 T01 T02 T04

v0.2 records stay valid. v0.3 requires the five facets. Validators
reject inline Scaleway endpoints and secret-looking strings. The
backup record is the first 0.3 object. Reef views already met T02.
This commit is contained in:
tegwick 2026-08-15 02:40:43 +02:00
parent a9830f3109
commit 34a014a896
8 changed files with 140 additions and 12 deletions

View file

@ -47,6 +47,37 @@ class PortfolioTest(unittest.TestCase):
record["decision"]["approved_on"] = "2026-08-14"
validate_record(record)
def test_v03_requires_five_facets(self):
record = deepcopy(next(
r for _, r in self.records() if r["id"] == "resource:platform:audit-storage"
))
self.assertEqual(record["schema_version"], "0.3")
del record["consumers"]
with self.assertRaisesRegex(ValueError, "five facets"):
validate_record(record)
def test_inline_endpoint_is_rejected(self):
record = deepcopy(next(
r for _, r in self.records() if r["id"] == "resource:platform:audit-storage"
))
record["description"] += " https://s3.nl-ams.scw.cloud"
with self.assertRaisesRegex(ValueError, "inline provider endpoint"):
validate_record(record)
def test_inline_secret_is_rejected(self):
record = deepcopy(next(
r for _, r in self.records() if r["id"] == "resource:platform:audit-storage"
))
record["description"] += " AGE-SECRET-KEY-1TEST"
with self.assertRaisesRegex(ValueError, "inline secret"):
validate_record(record)
def test_v02_records_remain_valid(self):
v02 = [r for _, r in self.records() if r.get("schema_version") == "0.2"]
self.assertGreaterEqual(len(v02), 1)
for record in v02:
validate_record(record)
def test_unknown_commission_date_is_preserved(self):
record = deepcopy(next(r for _, r in self.records() if r["status"] == "active"))
record["lifecycle"]["commissioned_on"] = None