diff --git a/tests/config/test_cookie.py b/tests/config/test_cookie.py index d94e443..6a03e12 100644 --- a/tests/config/test_cookie.py +++ b/tests/config/test_cookie.py @@ -1,12 +1,12 @@ import json from typing import cast from datetime import datetime -from unittest.mock import patch import pytest from nonebug import App +@pytest.mark.usefixtures("_patch_weibo_get_cookie_name") async def test_cookie(app: App, init_scheduler): from nonebot_plugin_saa import TargetQQGroup @@ -34,11 +34,9 @@ async def test_cookie(app: App, init_scheduler): cookies = await config.get_cookie(site_name=site.name) assert len(cookies) == 1 - with patch("nonebot_bison.platform.weibo.WeiboSite._get_current_user_name") as mock: - mock.return_value = "test_name" - # 添加用户cookie - await client_mgr.add_user_cookie(json.dumps({"test_cookie": "1"})) - await client_mgr.add_user_cookie(json.dumps({"test_cookie": "2"})) + # 添加用户cookie + await client_mgr.add_user_cookie(json.dumps({"test_cookie": "1"})) + await client_mgr.add_user_cookie(json.dumps({"test_cookie": "2"})) cookies = await config.get_cookie(site_name=site.name) assert len(cookies) == 3 @@ -70,9 +68,7 @@ async def test_cookie(app: App, init_scheduler): tags=[], ) - with patch("nonebot_bison.platform.weibo.WeiboSite._get_current_user_name") as mock: - mock.return_value = "test_name" - await client_mgr.add_user_cookie(json.dumps({"test_cookie": "3"})) + await client_mgr.add_user_cookie(json.dumps({"test_cookie": "3"})) cookies = await config.get_cookie(site_name=site.name, is_anonymous=False) # 多个target,多个cookie diff --git a/tests/conftest.py b/tests/conftest.py index dd7ea4d..a297191 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -29,7 +29,7 @@ def load_adapters(nonebug_init: None): return driver -def _patch_refresh_bilibili_anonymous_cookie(mocker: MockerFixture): +def patch_refresh_bilibili_anonymous_cookie(mocker: MockerFixture): # patch 掉bilibili的匿名cookie生成函数,避免真实请求 from nonebot_bison.platform.bilibili.scheduler import BilibiliClientManager @@ -63,7 +63,7 @@ async def app(tmp_path: Path, request: pytest.FixtureRequest, mocker: MockerFixt # 如果在 app 前调用会报错“无法找到调用者” # 而在后面调用又来不及mock,所以只能在中间mock - _patch_refresh_bilibili_anonymous_cookie(mocker) + patch_refresh_bilibili_anonymous_cookie(mocker) if not param.get("no_init_db"): await init_db() @@ -153,6 +153,6 @@ async def _clear_db(app: App): def _patch_weibo_get_cookie_name(app: App, mocker: MockerFixture): from nonebot_bison.platform import weibo - mocker.patch.object(weibo.WeiboSite, "get_cookie_name", return_value="weibo_cookie_name") + mocker.patch.object(weibo.WeiboSite, "_get_current_user_name", return_value="test_name") yield mocker.stopall() diff --git a/tests/sub_manager/test_add_cookie.py b/tests/sub_manager/test_add_cookie.py index 53fb7b1..d63dde5 100644 --- a/tests/sub_manager/test_add_cookie.py +++ b/tests/sub_manager/test_add_cookie.py @@ -1,5 +1,4 @@ import json -from unittest.mock import patch import pytest from nonebug.app import App @@ -84,6 +83,7 @@ async def test_add_cookie_target_no_cookie(app: App): @pytest.mark.usefixtures("_clear_db") +@pytest.mark.usefixtures("_patch_weibo_get_cookie_name") async def test_add_cookie(app: App): from nonebot.adapters.onebot.v11.bot import Bot from nonebot.adapters.onebot.v11.message import Message @@ -91,58 +91,56 @@ async def test_add_cookie(app: App): from nonebot_bison.platform import platform_manager from nonebot_bison.sub_manager import common_platform, add_cookie_matcher, add_cookie_target_matcher - with patch("nonebot_bison.platform.weibo.WeiboSite._get_current_user_name") as mock: - mock.return_value = "test_name" - async with app.test_matcher(add_cookie_matcher) as ctx: - bot = ctx.create_bot(base=Bot) - event_1 = fake_private_message_event( - message=Message("添加cookie"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id - ) - ctx.receive_event(bot, event_1) - ctx.should_pass_rule() - ctx.should_call_send( - event_1, - BotReply.add_reply_on_add_cookie(platform_manager, common_platform), - True, - ) - event_2 = fake_private_message_event( - message=Message("全部"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id - ) - ctx.receive_event(bot, event_2) - ctx.should_pass_rule() - ctx.should_rejected() - ctx.should_call_send( - event_2, - BotReply.add_reply_on_add_cookie_input_allplatform(platform_manager), - True, - ) - event_3 = fake_private_message_event( - message=Message("weibo"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id - ) - ctx.receive_event(bot, event_3) - ctx.should_pass_rule() - ctx.should_call_send(event_3, BotReply.add_reply_on_input_cookie) - event_4_err = fake_private_message_event( - message=Message("test"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id - ) - ctx.receive_event(bot, event_4_err) - ctx.should_call_send( - event_4_err, - "无效的 Cookie,请检查后重新输入,详情见https://nonebot-bison.netlify.app/usage/cookie.html", - True, - ) - ctx.should_rejected() - event_4_ok = fake_private_message_event( - message=Message(json.dumps({"cookie": "test"})), - sender=fake_superuser, - to_me=True, - user_id=fake_superuser.user_id, - ) - ctx.receive_event(bot, event_4_ok) - ctx.should_pass_rule() - ctx.should_call_send( - event_4_ok, "已添加 Cookie: weibo: [test_name] 到平台 weibo\n请使用“关联cookie”为 Cookie 关联订阅", True - ) + async with app.test_matcher(add_cookie_matcher) as ctx: + bot = ctx.create_bot(base=Bot) + event_1 = fake_private_message_event( + message=Message("添加cookie"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id + ) + ctx.receive_event(bot, event_1) + ctx.should_pass_rule() + ctx.should_call_send( + event_1, + BotReply.add_reply_on_add_cookie(platform_manager, common_platform), + True, + ) + event_2 = fake_private_message_event( + message=Message("全部"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id + ) + ctx.receive_event(bot, event_2) + ctx.should_pass_rule() + ctx.should_rejected() + ctx.should_call_send( + event_2, + BotReply.add_reply_on_add_cookie_input_allplatform(platform_manager), + True, + ) + event_3 = fake_private_message_event( + message=Message("weibo"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id + ) + ctx.receive_event(bot, event_3) + ctx.should_pass_rule() + ctx.should_call_send(event_3, BotReply.add_reply_on_input_cookie) + event_4_err = fake_private_message_event( + message=Message("test"), sender=fake_superuser, to_me=True, user_id=fake_superuser.user_id + ) + ctx.receive_event(bot, event_4_err) + ctx.should_call_send( + event_4_err, + "无效的 Cookie,请检查后重新输入,详情见https://nonebot-bison.netlify.app/usage/cookie.html", + True, + ) + ctx.should_rejected() + event_4_ok = fake_private_message_event( + message=Message(json.dumps({"cookie": "test"})), + sender=fake_superuser, + to_me=True, + user_id=fake_superuser.user_id, + ) + ctx.receive_event(bot, event_4_ok) + ctx.should_pass_rule() + ctx.should_call_send( + event_4_ok, "已添加 Cookie: weibo: [test_name] 到平台 weibo\n请使用“关联cookie”为 Cookie 关联订阅", True + ) async with app.test_matcher(add_cookie_target_matcher) as ctx: from nonebug_saa import should_send_saa