7.76.1 — correctif : /mcp exempté du CSRF (client Bearer machine-à-machine)
Le middleware CSRF rejetait tout POST /mcp en 403 avant la route ; les tests passaient car leur client porte session + CSRF. Test de régression : client anonyme Bearer seul (200 avec jeton, 401 sans).
This commit is contained in:
@@ -156,6 +156,21 @@ def test_mcp_ecriture_sans_jeton_401(client, donnees):
|
||||
assert r.status_code == 401
|
||||
|
||||
|
||||
def test_mcp_client_bearer_sans_session_ni_csrf(client, jeton, donnees):
|
||||
"""Régression 7.76.1 : un vrai client MCP est machine-à-machine
|
||||
(Bearer seul, ni session ni jeton CSRF) — exactement le service
|
||||
d'agents. Le client de test habituel porte une session + un CSRF,
|
||||
ce qui masquait le 403 du middleware en production."""
|
||||
from tests.conftest import anon
|
||||
anon(client)
|
||||
r = _rpc(client, jeton, 60, "initialize", {})
|
||||
assert r.status_code == 200, r.text
|
||||
cols = _appel(client, jeton, 61, "list_collections")
|
||||
assert any(c["name"] == "Projet Alpha" for c in cols)
|
||||
r = _rpc(client, None, 62, "tools/list")
|
||||
assert r.status_code == 401, r.text
|
||||
|
||||
|
||||
def test_mcp_info_get(client, jeton):
|
||||
r = client.get("/mcp")
|
||||
assert r.status_code == 200
|
||||
|
||||
Reference in New Issue
Block a user