54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
from app.services.wechat_mini_auth import WechatMiniAuthError, get_unlimited_wxacode
|
|
|
|
|
|
def test_get_unlimited_wxacode_returns_png_bytes():
|
|
token_resp = MagicMock()
|
|
token_resp.raise_for_status = MagicMock()
|
|
token_resp.json.return_value = {"access_token": "tok"}
|
|
|
|
code_resp = MagicMock()
|
|
code_resp.raise_for_status = MagicMock()
|
|
code_resp.headers = {"Content-Type": "image/jpeg"}
|
|
code_resp.content = b"\xff\xd8fake"
|
|
|
|
with patch(
|
|
"app.services.wechat_mini_auth._require_mini_credentials",
|
|
return_value=("app", "sec"),
|
|
):
|
|
with patch("app.services.wechat_mini_auth.httpx.Client") as Client:
|
|
client = MagicMock()
|
|
Client.return_value.__enter__.return_value = client
|
|
client.get.return_value = token_resp
|
|
client.post.return_value = code_resp
|
|
raw = get_unlimited_wxacode(scene="abc", page="pages/login/web-qr/index")
|
|
assert raw.startswith(b"\xff\xd8")
|
|
|
|
|
|
def test_get_unlimited_wxacode_json_error():
|
|
token_resp = MagicMock()
|
|
token_resp.raise_for_status = MagicMock()
|
|
token_resp.json.return_value = {"access_token": "tok"}
|
|
|
|
code_resp = MagicMock()
|
|
code_resp.raise_for_status = MagicMock()
|
|
code_resp.headers = {"Content-Type": "application/json"}
|
|
code_resp.content = b'{"errcode":40001,"errmsg":"fail"}'
|
|
code_resp.json.return_value = {"errcode": 40001, "errmsg": "fail"}
|
|
|
|
with patch(
|
|
"app.services.wechat_mini_auth._require_mini_credentials",
|
|
return_value=("app", "sec"),
|
|
):
|
|
with patch("app.services.wechat_mini_auth.httpx.Client") as Client:
|
|
client = MagicMock()
|
|
Client.return_value.__enter__.return_value = client
|
|
client.get.return_value = token_resp
|
|
client.post.return_value = code_resp
|
|
try:
|
|
get_unlimited_wxacode(scene="abc", page="pages/login/web-qr/index")
|
|
assert False, "expected error"
|
|
except WechatMiniAuthError:
|
|
pass
|