fix(douyu): reject invalid activity cookies

This commit is contained in:
yml2213
2026-08-28 15:51:59 +08:00
parent 9ee4e49a50
commit 6ded82ac8b
5 changed files with 135 additions and 14 deletions
+27
View File
@@ -1,6 +1,8 @@
import unittest
from unittest.mock import Mock
import requests
from core.douyu.activity_client import DouyuActivityClient, DouyuActivityError
@@ -100,6 +102,31 @@ class EliteLockExchangeTests(unittest.TestCase):
"page": 2, "pageSize": 20, "manualID": "manual",
})
def test_redirect_is_not_followed_and_is_reported_without_query_values(self):
response = requests.Response()
response.status_code = 302
response.url = "https://www.douyu.com/japi/example?request_secret=hidden"
response.headers["Location"] = "https://www.douyu.com/member/login?ticket=secret"
self.client.session.request = Mock(return_value=response)
self.client.logger = Mock()
with self.assertRaisesRegex(DouyuActivityError, "Cookie 已失效,请重新登录") as caught:
self.client._request(
"get",
"https://www.douyu.com/japi/example?request_secret=hidden",
source="测试活动接口",
)
self.client.session.request.assert_called_once()
self.assertFalse(self.client.session.request.call_args.kwargs["allow_redirects"])
message = str(caught.exception)
self.assertIn("method=GET", message)
self.assertIn("url=https://www.douyu.com/japi/example", message)
self.assertIn("location=https://www.douyu.com/member/login", message)
self.assertNotIn("request_secret", message)
self.assertNotIn("ticket=secret", message)
self.assertIn("已拦截重定向", self.client.logger.call_args.args[0])
if __name__ == "__main__":
unittest.main()