From 8b37a8ef58fc95f7eaaf770cf692bac40bc19b35 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 15 Jun 2026 20:28:39 +0200 Subject: [PATCH] Enhance workflow router tests to cover web search scenarios and validate fast path permissions --- .../tests/test_workflow_router_builtins.py | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/backend/tests/test_workflow_router_builtins.py b/backend/tests/test_workflow_router_builtins.py index ad9a80c..70251ae 100644 --- a/backend/tests/test_workflow_router_builtins.py +++ b/backend/tests/test_workflow_router_builtins.py @@ -33,7 +33,7 @@ class RouterAndBuiltinTests(unittest.IsolatedAsyncioTestCase): db = self.Session() web = db.query(WorkflowDefinition).filter_by(slug="web-answer").one() with patch("backend.agent.router.chat_typed", new=AsyncMock(return_value=OllamaChatResult(content=json.dumps({"workflow_id": web.id, "confidence": 0.9, "reason": "current", "inputs": {}})))): - result = await select_workflow(db, message="latest news", recent_messages=[], attachments=[], library_slug=None, router_model=None, chat_model="model") + result = await select_workflow(db, message="what changed recently?", recent_messages=[], attachments=[], library_slug=None, router_model=None, chat_model="model", web_search_enabled=True) self.assertEqual(result["workflow_slug"], "web-answer") with patch("backend.agent.router.chat_typed", new=AsyncMock(return_value=OllamaChatResult(content="not json"))): self.assertEqual((await select_workflow(db, message="x", recent_messages=[], attachments=[], library_slug=None, router_model=None, chat_model="model"))["workflow_slug"], "input-output") @@ -42,7 +42,30 @@ class RouterAndBuiltinTests(unittest.IsolatedAsyncioTestCase): self.assertEqual((await select_workflow(db, message="x", recent_messages=[], attachments=[], library_slug=None, router_model=None, chat_model="model"))["workflow_slug"], "input-output") web.enabled = True; db.commit() with patch("backend.agent.router.chat_typed", new=AsyncMock(return_value=OllamaChatResult(content=json.dumps({"workflow_id": web.id, "confidence": 0.2, "reason": "x", "inputs": {}})))): - self.assertEqual((await select_workflow(db, message="x", recent_messages=[], attachments=[], library_slug=None, router_model=None, chat_model="model"))["workflow_slug"], "input-output") + self.assertEqual((await select_workflow(db, message="x", recent_messages=[], attachments=[], library_slug=None, router_model=None, chat_model="model", web_search_enabled=True))["workflow_slug"], "input-output") + db.close() + + async def test_fast_paths_respect_permissions(self): + db = self.Session() + with patch("backend.agent.router.chat_typed", new=AsyncMock()) as mocked: + result = await select_workflow( + db, message="latest news today", recent_messages=[], attachments=[], + library_slug=None, router_model=None, chat_model="model", web_search_enabled=True, + ) + self.assertEqual(result["workflow_slug"], "web-answer") + mocked.assert_not_awaited() + + result = await select_workflow( + db, message="latest news today", recent_messages=[], attachments=[], + library_slug=None, router_model=None, chat_model="model", web_search_enabled=False, + ) + self.assertEqual(result["workflow_slug"], "input-output") + + result = await select_workflow( + db, message="remember this: I prefer short answers", recent_messages=[], attachments=[], + library_slug="memory", router_model=None, chat_model="model", web_search_enabled=False, + ) + self.assertEqual(result["workflow_slug"], "remember-this") db.close() async def test_missing_router_model_falls_back_to_chat_model(self):