Merge remote-tracking branch 'origin/main' into codex/p0-obs-002-20260715
This commit is contained in:
@@ -47,7 +47,7 @@ class RuntimeImageMirrorControllerTest(unittest.TestCase):
|
||||
|
||||
self.assertEqual(policy.work_item_id, "AIA-P0-006-02A")
|
||||
self.assertEqual(policy.risk_level, "high")
|
||||
self.assertEqual(len(policy.images), 8)
|
||||
self.assertEqual(len(policy.images), 10)
|
||||
self.assertNotIn("github.com", raw)
|
||||
self.assertNotIn("ghcr.io", raw)
|
||||
self.assertIn('"external_pull_allowed": false', raw)
|
||||
@@ -72,8 +72,8 @@ class RuntimeImageMirrorControllerTest(unittest.TestCase):
|
||||
)
|
||||
)
|
||||
container_kinds = [image.workload.container_kind for image in policy.images]
|
||||
self.assertEqual(container_kinds.count("container"), 7)
|
||||
self.assertEqual(container_kinds.count("init_container"), 1)
|
||||
self.assertEqual(container_kinds.count("container"), 8)
|
||||
self.assertEqual(container_kinds.count("init_container"), 2)
|
||||
|
||||
def test_policy_loads_and_validates_init_container_kind(self) -> None:
|
||||
image = self._image_with_container_kind("init_container")
|
||||
@@ -184,6 +184,66 @@ class RuntimeImageMirrorControllerTest(unittest.TestCase):
|
||||
image.runtime_ref.endswith("@" + image.target_registry_digest)
|
||||
)
|
||||
|
||||
def test_argocd_repo_server_batch_reuses_verified_staging_artifact(self) -> None:
|
||||
policy = controller.load_policy(POLICY_PATH)
|
||||
staging = controller.load_staging_policy(STAGING_POLICY_PATH).images[0]
|
||||
batch = {
|
||||
image.asset_id: image
|
||||
for image in policy.images
|
||||
if image.asset_id
|
||||
in {
|
||||
"runtime-image:argocd-repo-server",
|
||||
"runtime-image:argocd-repo-server-copyutil",
|
||||
}
|
||||
}
|
||||
|
||||
self.assertEqual(
|
||||
set(batch),
|
||||
{
|
||||
"runtime-image:argocd-repo-server",
|
||||
"runtime-image:argocd-repo-server-copyutil",
|
||||
},
|
||||
)
|
||||
self.assertEqual(
|
||||
{
|
||||
(
|
||||
image.workload.kind,
|
||||
image.workload.namespace,
|
||||
image.workload.name,
|
||||
image.workload.container,
|
||||
image.workload.container_kind,
|
||||
)
|
||||
for image in batch.values()
|
||||
},
|
||||
{
|
||||
(
|
||||
"deployment",
|
||||
"argocd",
|
||||
"argocd-repo-server",
|
||||
"argocd-repo-server",
|
||||
"container",
|
||||
),
|
||||
(
|
||||
"deployment",
|
||||
"argocd",
|
||||
"argocd-repo-server",
|
||||
"copyutil",
|
||||
"init_container",
|
||||
),
|
||||
},
|
||||
)
|
||||
for image in batch.values():
|
||||
self.assertEqual(image.source_index_digest, staging.source_index_digest)
|
||||
self.assertEqual(image.platform_digest, staging.platform_digest)
|
||||
self.assertEqual(image.push_ref, staging.push_ref)
|
||||
self.assertEqual(
|
||||
image.target_registry_digest,
|
||||
"sha256:8b7e25d7e6036d6750c5bda8920cbd80d8902c25771666f6767dc97bd7fab8fc",
|
||||
)
|
||||
self.assertTrue(
|
||||
image.runtime_ref.endswith("@" + image.target_registry_digest)
|
||||
)
|
||||
|
||||
def test_policy_rejects_external_pull_and_mutable_runtime_ref(self) -> None:
|
||||
payload = json.loads(POLICY_PATH.read_text(encoding="utf-8"))
|
||||
with tempfile.TemporaryDirectory() as temp:
|
||||
|
||||
Reference in New Issue
Block a user