M10: harden knowledge trust and telemetry
This commit is contained in:
@@ -65,3 +65,22 @@ def test_logout_invalidates_session(ops_client):
|
||||
def test_logout_without_a_session_is_safe(client):
|
||||
response = client.post("/api/v1/demo/logout")
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_demo_reset_preserves_integration_telemetry(ops_client, client):
|
||||
from app.core.config import get_settings
|
||||
|
||||
settings = get_settings()
|
||||
probe = client.get(
|
||||
"/api/v1/integrations/mcp/operations-summary",
|
||||
headers={
|
||||
"X-Service-Token": settings.mcp_hub_service_token,
|
||||
"X-Client-Id": "reset-probe",
|
||||
},
|
||||
)
|
||||
assert probe.status_code == 200
|
||||
assert ops_client.post("/api/v1/demo/reset").status_code == 200
|
||||
|
||||
assert client.post("/api/v1/demo/login", json={"role": "operations_manager"}).status_code == 200
|
||||
events = client.get("/api/v1/audit", params={"action": "mcp_tool_request"}).json()
|
||||
assert any(event["actor_label"] == "reset-probe" for event in events)
|
||||
|
||||
@@ -450,3 +450,56 @@ def test_ragcore_provider_fallback_with_no_search_results_is_insufficient(monkey
|
||||
assert answer.evidence_state == "insufficient"
|
||||
assert answer.answer == ""
|
||||
assert answer.sources == []
|
||||
|
||||
|
||||
def test_ragcore_search_fallback_rejects_out_of_domain_question(monkeypatch):
|
||||
provider = RAGcoreKnowledgeProvider()
|
||||
monkeypatch.setattr(provider._settings, "ragcore_space_id", "space-1")
|
||||
monkeypatch.setattr(
|
||||
provider,
|
||||
"_client",
|
||||
lambda: _FakeClient(
|
||||
post_responses={
|
||||
"/v1/answers": _FakeResponse(503, {}),
|
||||
"/v1/search": _FakeResponse(200, _search_body()),
|
||||
}
|
||||
),
|
||||
)
|
||||
answer = provider.ask(
|
||||
"Who won the football world cup in 1998?",
|
||||
"test-correlation-out-of-domain",
|
||||
)
|
||||
assert answer.evidence_state == "insufficient"
|
||||
assert answer.answer == ""
|
||||
|
||||
|
||||
def test_ragcore_search_fallback_prefers_damage_procedure(monkeypatch):
|
||||
provider = RAGcoreKnowledgeProvider()
|
||||
monkeypatch.setattr(provider._settings, "ragcore_space_id", "space-1")
|
||||
search = _search_body()
|
||||
search["results"].append(
|
||||
{
|
||||
"citation": {
|
||||
"document_id": "damage-procedure",
|
||||
"document_version_id": "version-2",
|
||||
"title": "damage-procedure.md",
|
||||
"section": "Damage",
|
||||
"excerpt": "Record damage and keep the vehicle blocked.",
|
||||
},
|
||||
"rank": 2,
|
||||
"scores": {"fused": 0.01},
|
||||
}
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
provider,
|
||||
"_client",
|
||||
lambda: _FakeClient(
|
||||
post_responses={
|
||||
"/v1/answers": _FakeResponse(503, {}),
|
||||
"/v1/search": _FakeResponse(200, search),
|
||||
}
|
||||
),
|
||||
)
|
||||
answer = provider.ask("Wat moet ik doen bij schade?", "test-correlation-damage", "nl-BE")
|
||||
assert answer.evidence_state == "grounded"
|
||||
assert answer.sources[0].document_id == "damage-procedure"
|
||||
|
||||
Reference in New Issue
Block a user