feat(web): add IwoooS intelligence deck
This commit is contained in:
@@ -615,6 +615,7 @@ def validate(root: Path) -> None:
|
||||
"s2_148_iwooos_professional_topology_atlas",
|
||||
"s2_149_iwooos_topology_node_drilldown",
|
||||
"s2_150_iwooos_topology_path_explorer",
|
||||
"s2_151_iwooos_topology_intelligence_deck",
|
||||
]
|
||||
assert_equal(
|
||||
"progress_delta_ledger.delta_ids",
|
||||
@@ -1610,6 +1611,20 @@ def validate(root: Path) -> None:
|
||||
"iwooos_projection.summary.topology_path_explorer_interactive_path_allowed",
|
||||
iwooos_projection["summary"]["topology_path_explorer_interactive_path_allowed"],
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.topology_intelligence_deck_count",
|
||||
iwooos_projection["summary"]["topology_intelligence_deck_count"],
|
||||
4,
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.topology_intelligence_default_item",
|
||||
iwooos_projection["summary"]["topology_intelligence_default_item"],
|
||||
"assetContext",
|
||||
)
|
||||
assert_true(
|
||||
"iwooos_projection.summary.topology_intelligence_interactive_item_allowed",
|
||||
iwooos_projection["summary"]["topology_intelligence_interactive_item_allowed"],
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.topology_atlas_layer_count",
|
||||
iwooos_projection["summary"]["topology_atlas_layer_count"],
|
||||
@@ -1643,6 +1658,11 @@ def validate(root: Path) -> None:
|
||||
iwooos_projection["summary"]["topology_path_explorer_runtime_gate_count"],
|
||||
0,
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.summary.topology_intelligence_runtime_gate_count",
|
||||
iwooos_projection["summary"]["topology_intelligence_runtime_gate_count"],
|
||||
0,
|
||||
)
|
||||
assert_true(
|
||||
"iwooos_projection.summary.gate_radar_first_layer",
|
||||
iwooos_projection["summary"]["gate_radar_first_layer"],
|
||||
@@ -12043,6 +12063,10 @@ def validate(root: Path) -> None:
|
||||
'data-testid="iwooos-topology-atlas-path-explorer-selector"',
|
||||
'data-testid="iwooos-topology-atlas-path-explorer-sequence"',
|
||||
'data-testid="iwooos-topology-atlas-path-explorer-summary"',
|
||||
'data-testid="iwooos-topology-atlas-intelligence-deck"',
|
||||
'data-testid="iwooos-topology-atlas-intelligence-selector"',
|
||||
'data-testid="iwooos-topology-atlas-intelligence-trail"',
|
||||
'data-testid="iwooos-topology-atlas-blast-rings"',
|
||||
'data-testid="iwooos-topology-atlas-node-drilldown"',
|
||||
'data-testid="iwooos-topology-atlas-node-drilldown-metrics"',
|
||||
'data-testid="iwooos-topology-atlas-node-drilldown-selector"',
|
||||
@@ -12051,13 +12075,16 @@ def validate(root: Path) -> None:
|
||||
"IwoooSTopologyAtlasBoard",
|
||||
"IwoooSTopologyAtlasMode",
|
||||
"IwoooSTopologyPathKey",
|
||||
"IwoooSTopologyInsightKey",
|
||||
"IwoooSTopologyNodeKey",
|
||||
"IwoooSTopologyDrilldownNode",
|
||||
"IwoooSTopologyPathExplorerPath",
|
||||
"IwoooSTopologyInsightItem",
|
||||
"iwooosTopologyAtlasLenses",
|
||||
"iwooosTopologyAtlasNodes",
|
||||
"iwooosTopologyDrilldownNodes",
|
||||
"iwooosTopologyPathExplorerPaths",
|
||||
"iwooosTopologyInsightDeck",
|
||||
"iwooosTopologyAtlasLayers",
|
||||
"iwooosTopologyAtlasCharts",
|
||||
"iwooosTopologyAtlasBoundaries",
|
||||
@@ -12096,15 +12123,20 @@ def validate(root: Path) -> None:
|
||||
"iwooos_topology_path_explorer_path_count=4",
|
||||
"iwooos_topology_path_explorer_default_path=externalToGate",
|
||||
"iwooos_topology_path_explorer_interactive_path_allowed=true",
|
||||
"iwooos_topology_intelligence_deck_count=4",
|
||||
"iwooos_topology_intelligence_default_item=assetContext",
|
||||
"iwooos_topology_intelligence_interactive_item_allowed=true",
|
||||
"iwooos_topology_atlas_layer_count=5",
|
||||
"iwooos_topology_atlas_technical_chart_count=3",
|
||||
"iwooos_topology_atlas_interactive_lens_allowed=true",
|
||||
"iwooos_topology_atlas_execution_action_buttons_allowed=false",
|
||||
"iwooos_topology_drilldown_execution_action_buttons_allowed=false",
|
||||
"iwooos_topology_path_explorer_execution_action_buttons_allowed=false",
|
||||
"iwooos_topology_intelligence_execution_action_buttons_allowed=false",
|
||||
"iwooos_topology_atlas_runtime_gate_count=0",
|
||||
"iwooos_topology_drilldown_runtime_gate_count=0",
|
||||
"iwooos_topology_path_explorer_runtime_gate_count=0",
|
||||
"iwooos_topology_intelligence_runtime_gate_count=0",
|
||||
"iwooos_topology_atlas_scan_authorized=false",
|
||||
"iwooos_topology_atlas_host_change_authorized=false",
|
||||
"iwooos_topology_atlas_source_control_mutation_authorized=false",
|
||||
@@ -12114,6 +12146,9 @@ def validate(root: Path) -> None:
|
||||
"iwooos_topology_path_explorer_scan_authorized=false",
|
||||
"iwooos_topology_path_explorer_host_change_authorized=false",
|
||||
"iwooos_topology_path_explorer_source_control_mutation_authorized=false",
|
||||
"iwooos_topology_intelligence_scan_authorized=false",
|
||||
"iwooos_topology_intelligence_host_change_authorized=false",
|
||||
"iwooos_topology_intelligence_source_control_mutation_authorized=false",
|
||||
"runtime_execution_authorized=false",
|
||||
"active_runtime_gate_count=0",
|
||||
"action_buttons_allowed=false",
|
||||
@@ -12659,6 +12694,73 @@ def validate(root: Path) -> None:
|
||||
f"iwooos_projection.topology_path_explorer_paths.{path_id}.not_authorization",
|
||||
item["not_authorization"],
|
||||
)
|
||||
expected_topology_intelligence_deck_ids = [
|
||||
"assetContext",
|
||||
"attackPath",
|
||||
"blastRadius",
|
||||
"evidenceTimeline",
|
||||
]
|
||||
expected_topology_intelligence_sequences = {
|
||||
"assetContext": ["productSurface", "sourceControl", "monitoring"],
|
||||
"attackPath": ["sourceControl", "kali", "devHosts", "runtimeGate"],
|
||||
"blastRadius": ["kali", "devHosts", "runtimeGate"],
|
||||
"evidenceTimeline": ["monitoring", "awooopTruth", "runtimeGate"],
|
||||
}
|
||||
topology_intelligence_deck = iwooos_projection["topology_intelligence_deck"]
|
||||
assert_equal(
|
||||
"iwooos_projection.topology_intelligence_deck.ids",
|
||||
[item["insight_id"] for item in topology_intelligence_deck],
|
||||
expected_topology_intelligence_deck_ids,
|
||||
)
|
||||
assert_equal(
|
||||
"iwooos_projection.topology_intelligence_deck.display_order",
|
||||
[item["display_order"] for item in topology_intelligence_deck],
|
||||
list(range(1, len(expected_topology_intelligence_deck_ids) + 1)),
|
||||
)
|
||||
for item in topology_intelligence_deck:
|
||||
insight_id = item["insight_id"]
|
||||
assert_equal(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.display_mode",
|
||||
item["display_mode"],
|
||||
"professional_graph_intelligence_deck",
|
||||
)
|
||||
assert_equal(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.node_sequence",
|
||||
item["node_sequence"],
|
||||
expected_topology_intelligence_sequences[insight_id],
|
||||
)
|
||||
assert_true(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.interactive_item_allowed",
|
||||
item["interactive_item_allowed"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.execution_action_button_allowed",
|
||||
item["execution_action_button_allowed"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.scan_authorized",
|
||||
item["scan_authorized"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.host_change_authorized",
|
||||
item["host_change_authorized"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.source_control_mutation_authorized",
|
||||
item["source_control_mutation_authorized"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.runtime_gate_opened",
|
||||
item["runtime_gate_opened"],
|
||||
)
|
||||
assert_false(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.runtime_execution_authorized",
|
||||
item["runtime_execution_authorized"],
|
||||
)
|
||||
assert_true(
|
||||
f"iwooos_projection.topology_intelligence_deck.{insight_id}.not_authorization",
|
||||
item["not_authorization"],
|
||||
)
|
||||
expected_gate_radar_lane_ids = [
|
||||
"visible",
|
||||
"blocker",
|
||||
@@ -13066,6 +13168,50 @@ def validate(root: Path) -> None:
|
||||
list(web_messages_en["iwooos"]["topologyAtlas"]["pathExplorer"]["paths"][key].keys()),
|
||||
field,
|
||||
)
|
||||
for key in ["eyebrow", "title", "subtitle", "selectorLabel", "ringLabel", "fields", "items"]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.topologyAtlas.intelligenceDeck.keys",
|
||||
list(web_messages_zh["iwooos"]["topologyAtlas"]["intelligenceDeck"].keys()),
|
||||
key,
|
||||
)
|
||||
assert_contains(
|
||||
"web_messages.en.iwooos.topologyAtlas.intelligenceDeck.keys",
|
||||
list(web_messages_en["iwooos"]["topologyAtlas"]["intelligenceDeck"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in ["signal", "interpretation", "next"]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.topologyAtlas.intelligenceDeck.fields",
|
||||
list(web_messages_zh["iwooos"]["topologyAtlas"]["intelligenceDeck"]["fields"].keys()),
|
||||
key,
|
||||
)
|
||||
assert_contains(
|
||||
"web_messages.en.iwooos.topologyAtlas.intelligenceDeck.fields",
|
||||
list(web_messages_en["iwooos"]["topologyAtlas"]["intelligenceDeck"]["fields"].keys()),
|
||||
key,
|
||||
)
|
||||
for key in ["assetContext", "attackPath", "blastRadius", "evidenceTimeline"]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.topologyAtlas.intelligenceDeck.items",
|
||||
list(web_messages_zh["iwooos"]["topologyAtlas"]["intelligenceDeck"]["items"].keys()),
|
||||
key,
|
||||
)
|
||||
assert_contains(
|
||||
"web_messages.en.iwooos.topologyAtlas.intelligenceDeck.items",
|
||||
list(web_messages_en["iwooos"]["topologyAtlas"]["intelligenceDeck"]["items"].keys()),
|
||||
key,
|
||||
)
|
||||
for field in ["title", "signal", "interpretation", "next", "ring"]:
|
||||
assert_contains(
|
||||
f"web_messages.zh-TW.iwooos.topologyAtlas.intelligenceDeck.items.{key}",
|
||||
list(web_messages_zh["iwooos"]["topologyAtlas"]["intelligenceDeck"]["items"][key].keys()),
|
||||
field,
|
||||
)
|
||||
assert_contains(
|
||||
f"web_messages.en.iwooos.topologyAtlas.intelligenceDeck.items.{key}",
|
||||
list(web_messages_en["iwooos"]["topologyAtlas"]["intelligenceDeck"]["items"][key].keys()),
|
||||
field,
|
||||
)
|
||||
for key in ["eyebrow", "selectorLabel", "fields", "nodes"]:
|
||||
assert_contains(
|
||||
"web_messages.zh-TW.iwooos.topologyAtlas.nodeDrilldown.keys",
|
||||
|
||||
Reference in New Issue
Block a user