fix(investigation): allow autonomous model baseline recovery
This commit is contained in:
@@ -373,7 +373,7 @@ def test_replay_binding_denies_future_and_allows_device_metadata(monkeypatch):
|
||||
asyncio.run(query_service.authorize_query(SimpleNamespace(project=object()), bound, TOOLS["list_scada_devices"], SimpleNamespace()))
|
||||
|
||||
|
||||
def test_replay_burst_scenario_requires_coverage_permission_and_known_start(monkeypatch):
|
||||
def test_replay_burst_scenario_allows_exploration_and_checks_coverage_permission(monkeypatch):
|
||||
bound = binding(task=True)
|
||||
bound.replay_context = {"knowledge_cutoff": "2026-10-08T01:00:00Z"}
|
||||
permissions = PERMISSIONS | {"simulation.run", "scada.view", "simulation.view"}
|
||||
@@ -386,11 +386,12 @@ def test_replay_burst_scenario_requires_coverage_permission_and_known_start(monk
|
||||
"include_impact_coverage": True,
|
||||
})
|
||||
asyncio.run(query_service.authorize_query(scope, bound, TOOLS["run_burst_simulation"], args))
|
||||
for changed, status in (({"include_impact_coverage": False}, 422),
|
||||
({"start_time": datetime(2026, 10, 8, 2, tzinfo=timezone.utc)}, 422)):
|
||||
with pytest.raises(HTTPException) as error:
|
||||
asyncio.run(query_service.authorize_query(scope, bound, TOOLS["run_burst_simulation"], args.model_copy(update=changed)))
|
||||
assert error.value.status_code == status
|
||||
asyncio.run(query_service.authorize_query(scope, bound, TOOLS["run_burst_simulation"],
|
||||
args.model_copy(update={"include_impact_coverage": False})))
|
||||
with pytest.raises(HTTPException) as error:
|
||||
asyncio.run(query_service.authorize_query(scope, bound, TOOLS["run_burst_simulation"],
|
||||
args.model_copy(update={"start_time": datetime(2026, 10, 8, 2, tzinfo=timezone.utc)})))
|
||||
assert error.value.status_code == 422
|
||||
bound.permission_cap = sorted(permissions - {"simulation.view"})
|
||||
with pytest.raises(HTTPException) as error:
|
||||
asyncio.run(query_service.authorize_query(scope, bound, TOOLS["run_burst_simulation"], args))
|
||||
@@ -881,7 +882,7 @@ def test_old_task_run_and_reader_parent_are_rejected(monkeypatch):
|
||||
|
||||
@pytest.mark.parametrize("purpose", ["task_execution", "task_collaboration"])
|
||||
@pytest.mark.parametrize("replay", [False, True])
|
||||
def test_work_order_task_excludes_location_but_scada_replay_keeps_it(monkeypatch, purpose, replay):
|
||||
def test_work_order_source_does_not_remove_authorized_analysis_tools(monkeypatch, purpose, replay):
|
||||
monkeypatch.setattr(contexts, "permissions_for_context", lambda _: PERMISSIONS)
|
||||
value = binding(task=True)
|
||||
value.purpose = purpose
|
||||
@@ -899,13 +900,9 @@ def test_work_order_task_excludes_location_but_scada_replay_keeps_it(monkeypatch
|
||||
monkeypatch.setattr(contexts, "task_repository", lambda _: Tasks())
|
||||
scope = SimpleNamespace(project=object(), connection=Connection())
|
||||
asyncio.run(contexts.verify_task(scope, value))
|
||||
assert ("run_burst_location" in value.tool_cap) is replay
|
||||
assert "run_burst_location" in value.tool_cap
|
||||
assert "analyze_valve_isolation" in value.tool_cap
|
||||
assert "analyze_valve_closure" in value.tool_cap
|
||||
if not replay:
|
||||
with pytest.raises(HTTPException) as caught:
|
||||
asyncio.run(query_service.authorize_query(scope, value, TOOLS["run_burst_location"], SimpleNamespace()))
|
||||
assert caught.value.status_code == 403
|
||||
|
||||
|
||||
def test_jwt_signature_issuer_audience_lifetime_and_key_cache():
|
||||
|
||||
Reference in New Issue
Block a user