Hardening: Centralized zero-trust CognitiveStack validation and removed synthetic e2e test mocks
This commit is contained in:
@@ -11,13 +11,12 @@ import datetime
|
||||
from tests.e2e.conftest import E2EDeviceStub, load_fixture_xml
|
||||
|
||||
|
||||
def test_feed_loop_escapes_foreign_app(e2e_configs):
|
||||
def test_feed_loop_escapes_foreign_app(e2e_configs, e2e_cognitive_stack_factory):
|
||||
"""
|
||||
Simulates: Feed → Play Store.
|
||||
The loop must detect com.android.vending and abort immediately.
|
||||
"""
|
||||
from GramAddict.core.bot_flow import _run_zero_latency_feed_loop
|
||||
from GramAddict.core.dopamine_engine import DopamineEngine
|
||||
|
||||
feed_xml = load_fixture_xml("home_feed_with_ad.xml")
|
||||
play_store_xml = load_fixture_xml("play_store_from_story_link.xml")
|
||||
@@ -25,27 +24,8 @@ def test_feed_loop_escapes_foreign_app(e2e_configs):
|
||||
# Feed -> Play Store
|
||||
device = E2EDeviceStub([feed_xml, play_store_xml])
|
||||
|
||||
dopamine = DopamineEngine()
|
||||
dopamine.session_limit_seconds = 999
|
||||
|
||||
# Needs a dummy zero_engine and nav_graph
|
||||
class DummyZeroEngine:
|
||||
pass
|
||||
|
||||
class DummyNavGraph:
|
||||
def do(self, action):
|
||||
pass
|
||||
|
||||
def navigate_to(self, state, engine):
|
||||
pass
|
||||
|
||||
cognitive_stack = {
|
||||
"dopamine": dopamine,
|
||||
"zero_engine": DummyZeroEngine(),
|
||||
"nav_graph": DummyNavGraph(),
|
||||
"radome": None,
|
||||
"active_inference": None,
|
||||
}
|
||||
cognitive_stack = e2e_cognitive_stack_factory(device)
|
||||
cognitive_stack["dopamine"].session_limit_seconds = 999
|
||||
|
||||
session_state = type(
|
||||
"S", (), {"startTime": datetime.datetime.now(), "check_limit": lambda *args, **kwargs: (False, False)}
|
||||
@@ -55,7 +35,13 @@ def test_feed_loop_escapes_foreign_app(e2e_configs):
|
||||
e2e_configs.args.speed_multiplier = 0.01
|
||||
|
||||
result = _run_zero_latency_feed_loop(
|
||||
device, DummyZeroEngine(), DummyNavGraph(), e2e_configs, session_state, "HomeFeed", cognitive_stack
|
||||
device,
|
||||
cognitive_stack["zero_engine"],
|
||||
cognitive_stack["nav_graph"],
|
||||
e2e_configs,
|
||||
session_state,
|
||||
"HomeFeed",
|
||||
cognitive_stack,
|
||||
)
|
||||
|
||||
# Must return CONTEXT_LOST
|
||||
|
||||
@@ -18,13 +18,12 @@ import datetime
|
||||
from tests.e2e.conftest import E2EDeviceStub, load_fixture_xml
|
||||
|
||||
|
||||
def test_story_loop_escapes_foreign_app(e2e_configs):
|
||||
def test_story_loop_escapes_foreign_app(e2e_configs, e2e_cognitive_stack_factory):
|
||||
"""
|
||||
Simulates: Story → Story → Story → Play Store (via swipe-up link).
|
||||
The loop must detect com.android.vending and abort immediately.
|
||||
"""
|
||||
from GramAddict.core.bot_flow import _run_zero_latency_stories_loop
|
||||
from GramAddict.core.dopamine_engine import DopamineEngine
|
||||
|
||||
story_xml = load_fixture_xml("story_view_before_linkout.xml")
|
||||
play_store_xml = load_fixture_xml("play_store_from_story_link.xml")
|
||||
@@ -32,9 +31,8 @@ def test_story_loop_escapes_foreign_app(e2e_configs):
|
||||
# 3 story iterations → then Play Store appears
|
||||
device = E2EDeviceStub([story_xml, story_xml, story_xml, play_store_xml])
|
||||
|
||||
dopamine = DopamineEngine()
|
||||
dopamine.session_limit_seconds = 999
|
||||
cognitive_stack = {"dopamine": dopamine}
|
||||
cognitive_stack = e2e_cognitive_stack_factory(device)
|
||||
cognitive_stack["dopamine"].session_limit_seconds = 999
|
||||
|
||||
session_state = type("S", (), {"startTime": datetime.datetime.now()})()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user