Files
zhanghongyu_0626 3995cb44d8 Implement authentication and chat functionality with JWT support
- 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.
2026-09-07 17:20:42 +08:00

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}