|
| 1 | +import json |
| 2 | +from pathlib import Path |
| 3 | + |
| 4 | +from nonebug import App |
| 5 | +from nonebot.adapters.telegram import Bot, Event |
| 6 | +from nonebot.adapters.telegram.model import File |
| 7 | +from nonebot.adapters.telegram.config import BotConfig |
| 8 | +from nonebot.adapters.onebot.v12 import PrivateMessageEvent |
| 9 | + |
| 10 | +bot_config = BotConfig(token="1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI") |
| 11 | + |
| 12 | + |
| 13 | +async def test_to_onebot_event(app: App): |
| 14 | + from nonebot_plugin_all4one.middlewares.telegram import Middleware |
| 15 | + |
| 16 | + with (Path(__file__).parent / "updates.json").open("r", encoding="utf8") as f: |
| 17 | + test_updates = json.load(f) |
| 18 | + |
| 19 | + async with app.test_api() as ctx: |
| 20 | + bot = ctx.create_bot(base=Bot, self_id=bot_config) # type:ignore |
| 21 | + middleware = Middleware(bot) |
| 22 | + |
| 23 | + event = Event.parse_event(test_updates[0]) |
| 24 | + event = await middleware.to_onebot_event(event) |
| 25 | + assert isinstance(event[0], PrivateMessageEvent) |
| 26 | + |
| 27 | + event = Event.parse_event(test_updates[3]) |
| 28 | + event = await middleware.to_onebot_event(event) |
| 29 | + assert isinstance(event[0], PrivateMessageEvent) |
| 30 | + assert event[0].message[0].type == "reply" |
| 31 | + |
| 32 | + event = Event.parse_event(test_updates[6]) |
| 33 | + ctx.should_call_api( |
| 34 | + "get_file", |
| 35 | + {"file_id": "AwADBAADbXXXXXXXXXXXGBdhD2l6_XX"}, |
| 36 | + File(file_id="AwADBAADbXXXXXXXXXXXGBdhD2l6_XX", file_unique_id=""), |
| 37 | + ) |
| 38 | + event = await middleware.to_onebot_event(event) |
| 39 | + assert isinstance(event[0], PrivateMessageEvent) |
| 40 | + assert event[0].message[0].type == "audio" |
| 41 | + |
| 42 | + event = Event.parse_event(test_updates[7]) |
| 43 | + ctx.should_call_api( |
| 44 | + "get_file", |
| 45 | + {"file_id": "AwADBAADbXXXXXXXXXXXGBdhD2l6_XX"}, |
| 46 | + File(file_id="AwADBAADbXXXXXXXXXXXGBdhD2l6_XX", file_unique_id=""), |
| 47 | + ) |
| 48 | + event = await middleware.to_onebot_event(event) |
| 49 | + assert isinstance(event[0], PrivateMessageEvent) |
| 50 | + assert event[0].message[0].type == "voice" |
| 51 | + |
| 52 | + event = Event.parse_event(test_updates[8]) |
| 53 | + ctx.should_call_api( |
| 54 | + "get_file", |
| 55 | + {"file_id": "AwADBAADbXXXXXXXXXXXGBdhD2l6_XX"}, |
| 56 | + File(file_id="AwADBAADbXXXXXXXXXXXGBdhD2l6_XX", file_unique_id=""), |
| 57 | + ) |
| 58 | + event = await middleware.to_onebot_event(event) |
| 59 | + assert isinstance(event[0], PrivateMessageEvent) |
| 60 | + assert event[0].message[0].type == "file" |
0 commit comments