diff --git a/app/test_phase3_coding_scope.py b/app/test_phase3_coding_scope.py new file mode 100644 index 0000000..e9a8fae --- /dev/null +++ b/app/test_phase3_coding_scope.py @@ -0,0 +1,50 @@ +import asyncio, sqlite3 +from mcp.client.sse import sse_client +from mcp import ClientSession + +def get_key(agent): + con = sqlite3.connect("data/context_hub.db") + cur = con.cursor() + cur.execute("SELECT api_key FROM api_keys WHERE agent_name=?", (agent,)) + return cur.fetchone()[0] + +async def call_as(agent, tool, args): + key = get_key(agent) + async with sse_client("http://localhost:8000/mcp", headers={"X-API-Key": key}) as (read, write): + async with ClientSession(read, write) as session: + await session.initialize() + return await session.call_tool(tool, args) + +async def main(): + print("=== TEST 1 : CLAUDE record_lesson (coding, common-error) ===") + r = await call_as("CLAUDE", "record_lesson", { + "scope": "coding", "type": "common-error", + "title": "Test phase 3 - a supprimer", + "body": "Entree de test pour valider record_lesson/get_context_pack.", + "project": "context-hub", "tags": ["test"] + }) + print(r.content[0].text) + + print("=== TEST 2 : GEMINI record_lesson (coding, best-practice) ===") + r2 = await call_as("GEMINI", "record_lesson", { + "scope": "coding", "type": "best-practice", + "title": "Test phase 3 bis - a supprimer", + "body": "Deuxieme entree de test, agent different.", + }) + print(r2.content[0].text) + + print("=== TEST 3 : HERMES_TT tente record_lesson (coding) -- doit etre refuse (pas de scope coding) ===") + r3 = await call_as("HERMES_TT", "record_lesson", { + "scope": "coding", "type": "decision", "title": "x", "body": "y" + }) + print(r3.content[0].text) + + print("=== TEST 4 : get_context_pack(coding) -- doit contenir les 2 entrees ===") + r4 = await call_as("CLAUDE", "get_context_pack", {"scope": "coding"}) + print(r4.content[0].text) + + print("=== TEST 5 : get_context_pack(coding, project=context-hub) -- doit filtrer a 1 entree ===") + r5 = await call_as("CLAUDE", "get_context_pack", {"scope": "coding", "project": "context-hub"}) + print(r5.content[0].text) + +asyncio.run(main())