test(iwooos): 鎖住前台敏感字串防回歸 [skip ci]

This commit is contained in:
Your Name
2026-06-15 05:45:33 +08:00
parent 9034ed120c
commit bfc0e22376
2 changed files with 103 additions and 0 deletions

View File

@@ -244,12 +244,26 @@ def validate(root: Path) -> None:
code_review_page = (
root / "apps" / "web" / "src" / "app" / "[locale]" / "code-review" / "page.tsx"
).read_text(encoding="utf-8")
governance_automation_inventory_tab = (
root
/ "apps"
/ "web"
/ "src"
/ "app"
/ "[locale]"
/ "governance"
/ "tabs"
/ "automation-inventory-tab.tsx"
).read_text(encoding="utf-8")
errors_panel = (root / "apps" / "web" / "src" / "components" / "panels" / "ErrorsPanel.tsx").read_text(
encoding="utf-8"
)
iwooos_bridge = (
root / "apps" / "web" / "src" / "components" / "security" / "iwooos-read-only-bridge.tsx"
).read_text(encoding="utf-8")
public_security_redaction = (
root / "apps" / "web" / "src" / "lib" / "public-security-redaction.ts"
).read_text(encoding="utf-8")
sidebar = (root / "apps" / "web" / "src" / "components" / "layout" / "sidebar.tsx").read_text(
encoding="utf-8"
)
@@ -259,6 +273,93 @@ def validate(root: Path) -> None:
web_messages_zh = load_json(root / "apps" / "web" / "messages" / "zh-TW.json")
web_messages_en = load_json(root / "apps" / "web" / "messages" / "en.json")
public_message_text = "\n".join(
[
json.dumps(web_messages_zh, ensure_ascii=False),
json.dumps(web_messages_en, ensure_ascii=False),
]
)
for forbidden in [
"owenhytsai",
"nexu-io",
"blocked_waiting_",
"blockers=",
"runtime_execution_authorized=false",
"action_buttons_allowed=false",
"execution_router_linked=false",
"repo_creation=false",
"repo_creation_authorized=false",
"github_primary_switch_authorized=false",
"source_control_owner_response_validation_rollup_v1",
"gitea_inventory_owner_attestation_response_v1",
"github_target_owner_decision_response_v1",
"source_control_ref_truth_owner_response_v1",
"source_control_workflow_secret_name_owner_response_v1",
"批准!",
"工作視窗",
"My request for Codex",
]:
assert_text_not_contains("web_messages.public_frontstage_sensitive_text", public_message_text, forbidden)
public_frontend_source_text = "\n".join(
[
iwooos_projection_page,
security_compliance_page,
awooop_home_page,
awooop_work_items_page,
awooop_tenants_page,
awooop_runs_page,
awooop_run_detail_page,
awooop_approvals_page,
awooop_approval_detail_page,
awooop_contracts_page,
code_review_page,
governance_automation_inventory_tab,
iwooos_bridge,
public_security_redaction,
]
)
for forbidden in [
"owenhytsai",
"nexu-io",
"blocked_waiting_",
"批准!",
"工作視窗",
"My request for Codex",
]:
assert_text_not_contains("frontend.public_sensitive_source_text", public_frontend_source_text, forbidden)
for label, text in [
("awooop_home_page", awooop_home_page),
("awooop_runs_page", awooop_runs_page),
("awooop_run_detail_page", awooop_run_detail_page),
("awooop_approvals_page", awooop_approvals_page),
("awooop_approval_detail_page", awooop_approval_detail_page),
("awooop_contracts_page", awooop_contracts_page),
("code_review_page", code_review_page),
("security_compliance_page", security_compliance_page),
("iwooos_bridge", iwooos_bridge),
]:
assert_text_contains(f"{label}.public_boundary_redaction", text, "publicBoundaryText")
for label, text in [
("awooop_home_page", awooop_home_page),
("awooop_runs_page", awooop_runs_page),
("awooop_run_detail_page", awooop_run_detail_page),
("awooop_approvals_page", awooop_approvals_page),
("awooop_approval_detail_page", awooop_approval_detail_page),
("awooop_contracts_page", awooop_contracts_page),
]:
assert_text_contains(f"{label}.public_contract_redaction", text, "publicContractText")
assert_text_contains(
"governance_automation_inventory_tab.runner_identifier_redaction",
governance_automation_inventory_tab,
"redactPublicIdentifier",
)
assert_text_not_contains("public_security_redaction.owner_namespace_literal", public_security_redaction, "owenhytsai")
assert_text_not_contains("public_security_redaction.external_namespace_literal", public_security_redaction, "nexu-io")
manifest_count = manifest["contract_count"]
readiness_summary = readiness["summary"]
rollup_summary = rollup["summary"]