feat(web): show GitHub readiness in IwoooS
This commit is contained in:
@@ -275,6 +275,7 @@ def validate(root: Path) -> None:
|
||||
"s2_60_security_control_pages_iwooos_reverse_bridge",
|
||||
"s2_61_audit_engineering_pages_iwooos_reverse_bridge",
|
||||
"s2_62_iwooos_frontend_surface_connection_board",
|
||||
"s2_63_iwooos_github_primary_readiness_board",
|
||||
]
|
||||
assert_equal(
|
||||
"progress_delta_ledger.delta_ids",
|
||||
@@ -354,6 +355,11 @@ def validate(root: Path) -> None:
|
||||
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
||||
"show_iwooos_frontend_surface_connection_board",
|
||||
)
|
||||
assert_contains(
|
||||
"rollup.next_safe_actions.action_ids",
|
||||
[item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)],
|
||||
"show_iwooos_github_primary_readiness_board",
|
||||
)
|
||||
|
||||
assert_equal("rollout_policy.schema_version", rollout_policy["schema_version"], "security_rollout_policy_v1")
|
||||
assert_equal("rollout_policy.default_mode", rollout_policy["default_mode"], "observe")
|
||||
@@ -445,6 +451,19 @@ def validate(root: Path) -> None:
|
||||
iwooos_projection["summary"]["github_primary_ready_count"],
|
||||
rollup_summary["github_primary_ready_count"],
|
||||
)
|
||||
expected_iwooos_source_control_primary_readiness_item_ids = [
|
||||
"candidate_repo_inventory",
|
||||
"primary_ready_counter_locked",
|
||||
"owner_response_validation_waiting",
|
||||
"refs_truth_waiting_owner",
|
||||
"workflow_secret_name_inventory_missing",
|
||||
"rollback_adr_waiting_owner_approval",
|
||||
]
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.source_control_primary_readiness_item_count",
|
||||
iwooos_projection["summary"]["source_control_primary_readiness_item_count"],
|
||||
len(expected_iwooos_source_control_primary_readiness_item_ids),
|
||||
)
|
||||
assert_false("iwooos_projection.summary.action_buttons_allowed", iwooos_projection["summary"]["action_buttons_allowed"])
|
||||
expected_iwooos_surface_ids = [
|
||||
"security_compliance",
|
||||
@@ -1461,6 +1480,59 @@ def validate(root: Path) -> None:
|
||||
f"iwooos_projection.owner_response_next_action_focus_items.{item['focus_id']}.not_authorization",
|
||||
item["not_authorization"],
|
||||
)
|
||||
source_control_readiness_items = iwooos_projection["source_control_primary_readiness_items"]
|
||||
assert_equal(
|
||||
"iwooos_projection.source_control_primary_readiness_items.ids",
|
||||
[item["item_id"] for item in source_control_readiness_items],
|
||||
expected_iwooos_source_control_primary_readiness_item_ids,
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.source_control_primary_readiness_items.display_order",
|
||||
[item["display_order"] for item in source_control_readiness_items],
|
||||
list(range(1, len(expected_iwooos_source_control_primary_readiness_item_ids) + 1)),
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.source_control_primary_readiness_items.gate_ids",
|
||||
[item["gate_id"] for item in source_control_readiness_items],
|
||||
["S4.0", "S4.0", "S4.13", "S4.11", "S4.12", "S4.4"],
|
||||
)
|
||||
for item in source_control_readiness_items:
|
||||
assert_equal(
|
||||
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.display_mode",
|
||||
item["display_mode"],
|
||||
"github_primary_readiness_only",
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.primary_ready_count",
|
||||
item["primary_ready_count"],
|
||||
0,
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.owner_response_received_count",
|
||||
item["owner_response_received_count"],
|
||||
0,
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.owner_response_accepted_count",
|
||||
item["owner_response_accepted_count"],
|
||||
0,
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.github_primary_switch_authorized",
|
||||
item["github_primary_switch_authorized"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.runtime_execution_authorized",
|
||||
item["runtime_execution_authorized"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.action_buttons_allowed",
|
||||
item["action_buttons_allowed"],
|
||||
)
|
||||
assert_true(
|
||||
f"iwooos_projection.source_control_primary_readiness_items.{item['item_id']}.not_authorization",
|
||||
item["not_authorization"],
|
||||
)
|
||||
expected_s4_9_owner_response_request_template_ids = [
|
||||
"response-public-only-vs-local-gitea-gap",
|
||||
"response-org-user-endpoint-identity",
|
||||
@@ -4720,6 +4792,7 @@ def validate(root: Path) -> None:
|
||||
"display_host_owner_decision_record_human_record_owner_review_preparation_checklist",
|
||||
"display_evidence_refs",
|
||||
"display_forbidden_actions",
|
||||
"display_source_control_primary_readiness_board",
|
||||
]:
|
||||
assert_contains("iwooos_projection.allowed_frontend_outputs", iwooos_projection["allowed_frontend_outputs"], output)
|
||||
for output in [
|
||||
@@ -4930,6 +5003,14 @@ def validate(root: Path) -> None:
|
||||
"sync_refs_from_s4_9_template",
|
||||
"switch_primary_from_s4_9_template",
|
||||
"collect_token_from_s4_9_template",
|
||||
"create_github_repo_from_primary_readiness_board",
|
||||
"change_repo_visibility_from_primary_readiness_board",
|
||||
"sync_refs_from_primary_readiness_board",
|
||||
"delete_refs_from_primary_readiness_board",
|
||||
"force_push_from_primary_readiness_board",
|
||||
"switch_github_primary_from_primary_readiness_board",
|
||||
"collect_secret_value_from_primary_readiness_board",
|
||||
"disable_gitea_from_primary_readiness_board",
|
||||
"apply_runtime_blocking_control",
|
||||
"switch_github_primary",
|
||||
"production_deploy",
|
||||
@@ -5199,6 +5280,13 @@ def validate(root: Path) -> None:
|
||||
assert_text_contains("iwooos_page.surface_connection_embedded", iwooos_projection_page, "embeddedBridge")
|
||||
assert_text_contains("iwooos_page.surface_connection_direct", iwooos_projection_page, "directBridge")
|
||||
assert_text_contains("iwooos_page.surface_connection_awooop", iwooos_projection_page, "awooopCandidate")
|
||||
assert_text_contains("iwooos_page.source_control_readiness_board", iwooos_projection_page, "sourceControlReadinessItems")
|
||||
assert_text_contains(
|
||||
"iwooos_page.source_control_readiness_testid",
|
||||
iwooos_projection_page,
|
||||
'data-testid="iwooos-source-control-readiness-board"',
|
||||
)
|
||||
assert_text_contains("iwooos_page.source_control_readiness_component", iwooos_projection_page, "SourceControlReadinessCard")
|
||||
for key in [
|
||||
"title",
|
||||
"subtitle",
|
||||
@@ -5275,6 +5363,35 @@ def validate(root: Path) -> None:
|
||||
list(web_messages_en["iwooos"]["surfaceConnections"]["items"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in ["title", "subtitle", "gateLabel", "guardLabel", "items"]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.sourceControlReadiness",
|
||||
list(web_messages_zh["iwooos"]["sourceControlReadiness"].keys()),
|
||||
key,
|
||||
)
|
||||
assert_contains(
|
||||
"web_messages.en.iwooos.sourceControlReadiness",
|
||||
list(web_messages_en["iwooos"]["sourceControlReadiness"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in [
|
||||
"candidateRepos",
|
||||
"primaryReady",
|
||||
"ownerResponses",
|
||||
"refsTruth",
|
||||
"workflowSecrets",
|
||||
"rollbackAdr",
|
||||
]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.sourceControlReadiness.items",
|
||||
list(web_messages_zh["iwooos"]["sourceControlReadiness"]["items"].keys()),
|
||||
key,
|
||||
)
|
||||
assert_contains(
|
||||
"web_messages.en.iwooos.sourceControlReadiness.items",
|
||||
list(web_messages_en["iwooos"]["sourceControlReadiness"]["items"].keys()),
|
||||
key,
|
||||
)
|
||||
|
||||
owner_summary = owner_rollup["summary"]
|
||||
assert_equal("owner_rollup.total_received_response_count", owner_summary["total_received_response_count"], 0)
|
||||
@@ -5403,7 +5520,11 @@ def validate(root: Path) -> None:
|
||||
assert_true("owner_rollup.latest_local_validation.not_authorization", owner_local_validation["not_authorization"])
|
||||
|
||||
primary_summary = primary_gate["summary"]
|
||||
assert_equal("primary_gate.candidate_repo_count", primary_summary["candidate_repo_count"], 8)
|
||||
assert_equal("primary_gate.in_scope_repo_count", primary_summary["in_scope_repo_count"], 7)
|
||||
assert_equal("primary_gate.primary_ready_count", primary_summary["primary_ready_count"], 0)
|
||||
assert_equal("primary_gate.blocked_in_scope_count", primary_summary["blocked_in_scope_count"], 7)
|
||||
assert_equal("owner_rollup.total_response_template_count", owner_summary["total_response_template_count"], 22)
|
||||
assert_false("primary_gate.runtime_actions_authorized", primary_summary["runtime_actions_authorized"])
|
||||
assert_false("primary_gate.github_primary_switch_authorized", primary_summary["github_primary_switch_authorized"])
|
||||
assert_false("primary_gate.action_buttons_allowed", primary_summary["action_buttons_allowed"])
|
||||
|
||||
Reference in New Issue
Block a user