test_wxacode.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from unittest.mock import MagicMock, patch
  2. from app.services.wechat_mini_auth import WechatMiniAuthError, get_unlimited_wxacode
  3. def test_get_unlimited_wxacode_returns_png_bytes():
  4. token_resp = MagicMock()
  5. token_resp.raise_for_status = MagicMock()
  6. token_resp.json.return_value = {"access_token": "tok"}
  7. code_resp = MagicMock()
  8. code_resp.raise_for_status = MagicMock()
  9. code_resp.headers = {"Content-Type": "image/jpeg"}
  10. code_resp.content = b"\xff\xd8fake"
  11. with patch(
  12. "app.services.wechat_mini_auth._require_mini_credentials",
  13. return_value=("app", "sec"),
  14. ):
  15. with patch("app.services.wechat_mini_auth.httpx.Client") as Client:
  16. client = MagicMock()
  17. Client.return_value.__enter__.return_value = client
  18. client.get.return_value = token_resp
  19. client.post.return_value = code_resp
  20. raw = get_unlimited_wxacode(scene="abc", page="pages/login/web-qr/index")
  21. assert raw.startswith(b"\xff\xd8")
  22. def test_get_unlimited_wxacode_json_error():
  23. token_resp = MagicMock()
  24. token_resp.raise_for_status = MagicMock()
  25. token_resp.json.return_value = {"access_token": "tok"}
  26. code_resp = MagicMock()
  27. code_resp.raise_for_status = MagicMock()
  28. code_resp.headers = {"Content-Type": "application/json"}
  29. code_resp.content = b'{"errcode":40001,"errmsg":"fail"}'
  30. code_resp.json.return_value = {"errcode": 40001, "errmsg": "fail"}
  31. with patch(
  32. "app.services.wechat_mini_auth._require_mini_credentials",
  33. return_value=("app", "sec"),
  34. ):
  35. with patch("app.services.wechat_mini_auth.httpx.Client") as Client:
  36. client = MagicMock()
  37. Client.return_value.__enter__.return_value = client
  38. client.get.return_value = token_resp
  39. client.post.return_value = code_resp
  40. try:
  41. get_unlimited_wxacode(scene="abc", page="pages/login/web-qr/index")
  42. assert False, "expected error"
  43. except WechatMiniAuthError:
  44. pass