ForcePilot/backend/test/unit/channels/test_wechat_errors.py

118 lines
4.1 KiB
Python
Raw Normal View History

from __future__ import annotations
import pytest
from yuxi.channels.adapters.wechat.errors import (
is_token_expired,
parse_mp_error,
parse_wecom_error,
)
class TestParseWeComError:
def test_success_code_0(self):
errcode, detail = parse_wecom_error({"errcode": 0, "errmsg": "ok"})
assert errcode == 0
assert detail == "请求成功"
def test_system_busy(self):
errcode, detail = parse_wecom_error({"errcode": -1, "errmsg": "system busy"})
assert errcode == -1
assert detail == "系统繁忙,请稍后重试"
def test_invalid_secret(self):
errcode, detail = parse_wecom_error({"errcode": 40001, "errmsg": "invalid secret"})
assert errcode == 40001
assert detail == "不合法的secret参数"
def test_unknown_errcode_falls_back_to_errmsg(self):
errcode, detail = parse_wecom_error({"errcode": 99999, "errmsg": "custom error"})
assert errcode == 99999
assert detail == "custom error"
def test_missing_errcode_with_errmsg(self):
errcode, detail = parse_wecom_error({"errmsg": "some error"})
assert errcode == -1
assert detail == "some error"
def test_missing_errcode_no_errmsg(self):
errcode, detail = parse_wecom_error({})
assert errcode == -1
assert "未知错误" in detail
def test_errcode_not_in_data(self):
errcode, detail = parse_wecom_error({"other": "value"})
assert errcode == -1
assert detail == "未知错误(err_code 缺失)"
def test_rate_limit_error(self):
errcode, detail = parse_wecom_error({"errcode": 45009, "errmsg": "api freq limit"})
assert errcode == 45009
assert detail == "接口调用超过限制"
def test_api_too_frequent(self):
errcode, detail = parse_wecom_error({"errcode": 45011, "errmsg": "too frequent"})
assert errcode == 45011
assert detail == "API调用过于频繁"
class TestParseMpError:
def test_success_code_0(self):
errcode, detail = parse_mp_error({"errcode": 0, "errmsg": "ok"})
assert errcode == 0
assert detail == "请求成功"
def test_system_busy(self):
errcode, detail = parse_mp_error({"errcode": -1, "errmsg": "system busy"})
assert errcode == -1
assert detail == "系统繁忙,请稍后重试"
def test_invalid_appid(self):
errcode, detail = parse_mp_error({"errcode": 40013, "errmsg": "invalid appid"})
assert errcode == 40013
assert detail == "不合法的AppID"
def test_unknown_errcode_falls_back_to_errmsg(self):
errcode, detail = parse_mp_error({"errcode": 88888, "errmsg": "mp custom error"})
assert errcode == 88888
assert detail == "mp custom error"
def test_missing_errcode(self):
errcode, detail = parse_mp_error({})
assert errcode == -1
assert "未知错误" in detail
def test_reply_timeout(self):
errcode, detail = parse_mp_error({"errcode": 45015, "errmsg": "reply timeout"})
assert errcode == 45015
assert detail == "回复时间超过限制"
def test_need_recipient_follow(self):
errcode, detail = parse_mp_error({"errcode": 43004, "errmsg": "need follow"})
assert errcode == 43004
assert detail == "需要接收者关注"
def test_token_timeout_mp(self):
errcode, detail = parse_mp_error({"errcode": 42001, "errmsg": "token timeout"})
assert errcode == 42001
assert detail == "access_token超时"
class TestIsTokenExpired:
def test_errcode_40014_is_expired(self):
assert is_token_expired(40014) is True
def test_errcode_42001_is_expired(self):
assert is_token_expired(42001) is True
def test_success_code_not_expired(self):
assert is_token_expired(0) is False
def test_system_busy_not_expired(self):
assert is_token_expired(-1) is False
def test_unknown_code_not_expired(self):
assert is_token_expired(99999) is False
def test_none_expired_code(self):
assert is_token_expired(40001) is False