update group admin

This commit is contained in:
felinae98
2022-03-02 11:33:14 +08:00
parent 0c4a85481d
commit cc44e45887
8 changed files with 289 additions and 74 deletions
+24 -1
View File
@@ -1,3 +1,4 @@
import asyncio
import typing
from pathlib import Path
@@ -13,6 +14,9 @@ async def app(nonebug_init: None, tmp_path: Path, monkeypatch: pytest.MonkeyPatc
config = nonebot.get_driver().config
config.bison_config_path = str(tmp_path)
config.command_start = {""}
config.superusers = {"10001"}
config.log_level = "TRACE"
config.bison_filter_log = False
return App(monkeypatch)
@@ -20,5 +24,24 @@ async def app(nonebug_init: None, tmp_path: Path, monkeypatch: pytest.MonkeyPatc
def dummy_user_subinfo(app: App):
from nonebot_bison.types import User, UserSubInfo
user = User("123", "group")
user = User(123, "group")
return UserSubInfo(user=user, category_getter=lambda _: [], tag_getter=lambda _: [])
@pytest.fixture
def task_watchdog(request):
def cancel_test_on_exception(task: asyncio.Task):
def maybe_cancel_clbk(t: asyncio.Task):
exception = t.exception()
if exception is None:
return
for task in asyncio.all_tasks():
coro = task.get_coro()
if coro.__qualname__ == request.function.__qualname__:
task.cancel()
return
task.add_done_callback(maybe_cancel_clbk)
return cancel_test_on_exception
+14
View File
@@ -453,3 +453,17 @@ async def test_del_sub(app: App):
ctx.should_finished()
subs = config.list_subscribe(10000, "group")
assert len(subs) == 0
async def test_test(app: App):
from nonebot.adapters.onebot.v11.bot import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot_bison.config_manager import test_matcher
async with app.test_matcher(test_matcher) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_group_message_event(message=Message("testtt"))
ctx.receive_event(bot, event)
ctx.should_pass_permission()
ctx.should_pass_rule()
ctx.should_call_send(event, "666", True)
+45
View File
@@ -0,0 +1,45 @@
from nonebug import App
from .utils import fake_admin_user, fake_private_message_event, fake_superuser
async def test_query(app: App):
from nonebot.adapters.onebot.v11.bot import Bot
from nonebot.adapters.onebot.v11.message import Message
from nonebot_bison.config_manager import group_manage_matcher
async with app.test_matcher(group_manage_matcher) as ctx:
bot = ctx.create_bot(base=Bot)
event = fake_private_message_event(
message=Message("群管理"), sender=fake_superuser
)
ctx.receive_event(bot, event)
ctx.should_pass_rule()
ctx.should_pass_permission()
ctx.should_call_api(
"get_group_list", {}, [{"group_id": 101, "group_name": "test group"}]
)
ctx.should_call_send(
event, Message("请选择需要管理的群:\n1. 101 - test group\n请输入左侧序号"), True
)
event_1_err = fake_private_message_event(
message=Message("0"), sender=fake_superuser
)
ctx.receive_event(bot, event_1_err)
ctx.should_rejected()
ctx.should_call_send(event_1_err, "请输入正确序号", True)
event_1_ok = fake_private_message_event(
message=Message("1"), sender=fake_superuser
)
ctx.receive_event(bot, event_1_ok)
ctx.should_call_send(event_1_ok, "请输入需要使用的命令:添加订阅,查询订阅,删除订阅", True)
event_2_err = fake_private_message_event(
message=Message("222"), sender=fake_superuser
)
ctx.receive_event(bot, event_2_err)
ctx.should_rejected()
ctx.should_call_send(event_2_err, "请输入正确的命令", True)
event_2_ok = fake_private_message_event(
message=Message("查询订阅"), sender=fake_superuser
)
ctx.receive_event(bot, event_2_ok)
+1
View File
@@ -68,3 +68,4 @@ def fake_private_message_event(**field) -> "PrivateMessageEvent":
from nonebot.adapters.onebot.v11.event import Sender
fake_admin_user = Sender(nickname="test", role="admin")
fake_superuser = Sender(user_id=10001, nickname="superuser")