Skip to content

Commit 4147760

Browse files
committed
feat: add test for ILinkClient connection and handle ilink_user_id error gracefully
1 parent a6ab9b7 commit 4147760

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

app/modules/wechatclawbot/wechatclawbot.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1426,7 +1426,10 @@ def test_connection(self) -> Tuple[bool, str]:
14261426
payload = self._json(resp)
14271427
if self._ok(payload):
14281428
return True, "连接正常"
1429-
return False, payload.get("errmsg") or payload.get("message") or "连接失败"
1429+
err_message = payload.get("errmsg") or payload.get("message") or "连接失败"
1430+
if "ilink_user_id required" in str(err_message).strip().lower():
1431+
return True, "连接正常"
1432+
return False, err_message
14301433

14311434

14321435
class WechatClawBot:

tests/test_wechatclawbot.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,23 @@ def test_ilink_poll_updates_rejects_failed_payload_even_if_it_contains_messages(
205205
self.assertNotIn("sync_buf", request_body)
206206
self.assertNotIn("syncBuf", request_body)
207207

208+
def test_ilink_test_connection_accepts_getconfig_ilink_user_id_limitation(self):
209+
client = ILinkClient(
210+
base_url="https://ilinkai.weixin.qq.com",
211+
bot_token="token",
212+
)
213+
response = MagicMock()
214+
response.json.return_value = {
215+
"ret": -1,
216+
"errmsg": "ilink_user_id required",
217+
}
218+
219+
with patch("app.modules.wechatclawbot.wechatclawbot.RequestUtils.post", return_value=response):
220+
ok, message = client.test_connection()
221+
222+
self.assertTrue(ok)
223+
self.assertIn("iLink 自检接口要求额外的 ilink_user_id", message)
224+
208225
def test_wechatclawbot_send_msg_uses_plain_text_payload(self):
209226
state = {
210227
"bot_token": None,

0 commit comments

Comments
 (0)