- Added `auth.py` for mock login and JWT issuance. - Introduced `chat.py` for handling chat requests with role-based access control. - Enhanced `main.py` to include new routers and middleware for tracing. - Implemented input validation in `input_guard.py` to prevent SQL injection. - Created repositories for managing agent sessions and audit logs. - Added exception handling for authorization errors. - Updated settings to include JWT configuration. - Introduced tests for authentication and input validation.
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
"""pytest 公共 fixture。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from unittest.mock import MagicMock
|
|
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
|
|
from app.main import app
|
|
from app.repository.advisor_rel_repository import AdvisorRelRepository
|
|
from app.repository.agent_repository import AgentSessionRepository
|
|
from app.repository.audit_repository import AuditRepository
|
|
|
|
|
|
@pytest.fixture
|
|
def client():
|
|
return TestClient(app)
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def mock_db(monkeypatch):
|
|
audit = MagicMock()
|
|
session = MagicMock()
|
|
advisor = MagicMock()
|
|
|
|
audit.insert = MagicMock()
|
|
session.ensure_session = MagicMock(return_value="sess-test-001")
|
|
session.next_seq = MagicMock(return_value=1)
|
|
session.insert_message = MagicMock()
|
|
advisor.is_assigned = MagicMock(return_value=True)
|
|
|
|
monkeypatch.setattr(AuditRepository, "__init__", lambda self, engine=None: None)
|
|
monkeypatch.setattr(AuditRepository, "insert", audit.insert)
|
|
monkeypatch.setattr(AgentSessionRepository, "__init__", lambda self, engine=None: None)
|
|
monkeypatch.setattr(AgentSessionRepository, "ensure_session", session.ensure_session)
|
|
monkeypatch.setattr(AgentSessionRepository, "next_seq", session.next_seq)
|
|
monkeypatch.setattr(AgentSessionRepository, "insert_message", session.insert_message)
|
|
monkeypatch.setattr(AdvisorRelRepository, "__init__", lambda self, engine=None, core_ro=None: None)
|
|
monkeypatch.setattr(AdvisorRelRepository, "is_assigned", advisor.is_assigned)
|
|
|
|
yield {"audit": audit, "session": session, "advisor": advisor}
|