test_wx_qr_api.py 995 B

123456789101112131415161718192021222324252627282930313233
  1. """web wx-qr create/status API。"""
  2. from unittest.mock import patch
  3. import pytest
  4. from fastapi.testclient import TestClient
  5. from app.main import app
  6. from app.services import wx_qr_session
  7. client = TestClient(app)
  8. @pytest.fixture(autouse=True)
  9. def force_memory_backend(monkeypatch):
  10. monkeypatch.setattr(wx_qr_session, "_redis", lambda: None)
  11. wx_qr_session._memory_clear_for_tests()
  12. def test_wx_qr_create_and_poll_pending():
  13. with patch(
  14. "app.api.public.get_unlimited_wxacode",
  15. return_value=b"\x89PNG\r\n\x1a\n",
  16. ):
  17. r = client.post("/api/web/auth/wx-qr/create")
  18. assert r.status_code == 200
  19. body = r.json()
  20. assert body.get("code") == 200
  21. data = body["data"]
  22. sid = data["sessionId"]
  23. assert data["qrImageBase64"].startswith("data:image/")
  24. st = client.get("/api/web/auth/wx-qr/status", params={"sessionId": sid})
  25. assert st.status_code == 200
  26. assert st.json()["data"]["status"] == "pending"