示例#1
0
def test_mention_chat_in_message():
    chat_id = uuid.uuid4()
    builder = MessageBuilder()
    builder.mention_chat(chat_id)

    assert builder.message.entities.__root__[
        0].data.mention_type == MentionTypes.chat
    assert (builder.message.entities.__root__[0].data.mention_data.
            group_chat_id == chat_id)
示例#2
0
 def test_building_forward_via_models(self):
     builder = MessageBuilder()
     builder.reply(reply=Reply(
         body="foo",
         reply_type=ChatTypes.group_chat,
         sender=uuid.uuid4(),
         source_chat_name="bar",
         source_sync_id=uuid.uuid4(),
     ), )
示例#3
0
def test_mention_contact_in_message():
    user_huid = uuid.uuid4()
    builder = MessageBuilder()
    builder.mention_contact(user_huid)

    assert (builder.message.entities.__root__[0].data.mention_type ==
            MentionTypes.contact)
    assert builder.message.entities.__root__[
        0].data.mention_data.user_huid == user_huid
示例#4
0
 def test_building_forward_via_models(self):
     builder = MessageBuilder()
     builder.forward(
         forward=Forward(
             group_chat_id=uuid.uuid4(),
             sender_huid=uuid.uuid4(),
             forward_type=ChatTypes.group_chat,  # ignore: type
             source_inserted_at=datetime.now(),
             source_sync_id=uuid.uuid4(),
         ), )
示例#5
0
def test_setting_not_processable_file_for_incoming_message():
    file = StringIO("import this")
    file.name = "zen.py"

    builder = MessageBuilder()
    builder.file = file

    message = builder.message

    assert message.file.file_name == "zen.py"
示例#6
0
def test_setting_raw_entities():
    builder = MessageBuilder()
    builder.entities = [
        Entity(
            type=EntityTypes.mention,
            data=Mention(mention_data=UserMention(user_huid=uuid.uuid4())),
        ),
    ]

    assert builder.message.entities.__root__[
        0].data.mention_type == MentionTypes.user
示例#7
0
 def test_building_forward_arguments_error(self, message):
     builder = MessageBuilder()
     with pytest.raises(ValueError):
         builder.reply(
             message=message,
             reply=Reply(
                 body="foo",
                 reply_type=ChatTypes.group_chat,
                 sender=uuid.uuid4(),
                 source_chat_name="bar",
                 source_sync_id=uuid.uuid4(),
             ),
         )
示例#8
0
 def test_building_forward_arguments_error(self, message):
     builder = MessageBuilder()
     with pytest.raises(ValueError):
         builder.forward(
             message=message,
             forward=Forward(
                 group_chat_id=uuid.uuid4(),
                 sender_huid=uuid.uuid4(),
                 forward_type=ChatTypes.botx,  # ignore: type
                 source_inserted_at=datetime.now(),
                 source_sync_id=uuid.uuid4(),
             ),
         )
示例#9
0
async def test_hello_format(bot: Bot, builder: MessageBuilder,
                            client: TestClient) -> None:
    builder.body = "/hello"

    await client.send_command(builder.message)

    command_result = client.command_results[0]
    assert command_result.result.body == f"Hello, {builder.user.username}"
示例#10
0
 def test_building_from_message(self,
                                sending_message: SendingMessage) -> None:
     builder = MessageBuilder()
     msg = Message(message=builder.message, bot=Bot())
     sending_msg = SendingMessage.from_message(
         text=sending_message.text,
         message=msg,
     )
     assert sending_msg.host == msg.host
     assert sending_msg.sync_id == msg.sync_id
     assert sending_msg.bot_id == msg.bot_id
示例#11
0
def chat_created_message(host, bot_id):
    builder = MessageBuilder()
    builder.bot_id = bot_id
    builder.command_data = ChatCreatedEvent(
        group_chat_id=builder.user.group_chat_id,
        chat_type=builder.user.chat_type,
        name="chat",
        creator=builder.user.user_huid,
        members=[
            UserInChatCreated(
                huid=builder.user.user_huid,
                user_kind=UserKinds.user,
                name=builder.user.username,
                admin=True,
            ),
            UserInChatCreated(
                huid=builder.bot_id,
                user_kind=UserKinds.bot,
                name="bot",
                admin=False,
            ),
        ],
    )
    builder.user.user_huid = None
    builder.user.ad_login = None
    builder.user.ad_domain = None
    builder.user.username = None

    builder.body = "system:chat_created"
    builder.system_command = True

    return builder.message
示例#12
0
def test_error_when_chat_validation_not_passed(include_param):
    user_params = {"user_huid", "ad_login", "ad_domain", "username"}
    builder = MessageBuilder()

    builder.body = "system:chat_created"
    builder.user = builder.user.copy(
        update={param: None
                for param in user_params - {include_param}}, )
    builder.command_data = {
        "group_chat_id": uuid.uuid4(),
        "chat_type": "group_chat",
        "name": "",
        "creator": uuid.uuid4(),
        "members": [],
    }
    with pytest.raises(ValidationError):
        builder.system_command = True
示例#13
0
def test_attach_type():
    builder = MessageBuilder()
    builder.link()
    builder.message.attachments.attach_type == "link"
示例#14
0
def test_contact_in_attachments():
    builder = MessageBuilder()
    builder.image()
    builder.contact()
    assert builder.message.attachments.contact
示例#15
0
def test_voice_attach_has_voice_type():
    builder = MessageBuilder()
    builder.voice()
    assert isinstance(builder.message.attachments.voice, Voice)
示例#16
0
def test_location_in_attachments():
    builder = MessageBuilder()
    builder.image()
    builder.location()
    assert builder.message.attachments.location
示例#17
0
def test_missing_location_in_attachments():
    builder = MessageBuilder()
    with pytest.raises(AttributeError):
        builder.message.attachments.location
示例#18
0
def test_document_in_attachments():
    builder = MessageBuilder()
    builder.image()
    builder.document()
    assert builder.message.attachments.document
示例#19
0
def test_no_attach_type():
    builder = MessageBuilder()
    with pytest.raises(AttributeError):
        builder.message.attachments.attach_type
示例#20
0
 def test_is_forward_message(self, message, bot) -> None:
     builder = MessageBuilder()
     builder.forward(message=message)
     new_message = Message.from_dict(message=builder.message.dict(),
                                     bot=bot)
     assert new_message.is_forward
示例#21
0
 def test_forward_in_message(self, message) -> None:
     builder = MessageBuilder()
     builder.forward(message=message)
     assert builder.message.entities.forward.source_sync_id == message.sync_id
示例#22
0
 def test_mention_not_in_message(self, bot) -> None:
     builder = MessageBuilder()
     message = Message.from_dict(builder.message.dict(), bot)
     assert message.entities.mentions == []
示例#23
0
 def test_mention_in_message(self, mention_data, mention_type) -> None:
     builder = MessageBuilder()
     builder.mention(mention=Mention(mention_data=mention_data,
                                     mention_type=mention_type), )
     assert builder.message.entities.mentions[0]
示例#24
0
def test_mailto_property_in_attachment():
    builder = MessageBuilder()
    mailto_url = "mailto:[email protected]"
    builder.link(mailto_url)
    assert builder.message.attachments.__root__[0].data.mailto == "*****@*****.**"
示例#25
0
 def test_reply_in_message(self, message) -> None:
     builder = MessageBuilder()
     builder.reply(message=message)
     assert builder.message.entities.reply.source_sync_id == message.sync_id
示例#26
0
def test_tel_property_in_attachment():
    builder = MessageBuilder()
    tel_url = "tel://+77777777777"
    builder.link(url=tel_url)
    assert builder.message.attachments.__root__[0].data.tel == "+77777777777"
示例#27
0
 def test_forward_not_in_message(self) -> None:
     builder = MessageBuilder()
     with pytest.raises(AttributeError):
         builder.message.entities.forward
示例#28
0
def test_raising_missing_tel():
    builder = MessageBuilder()
    builder.link()
    with pytest.raises(AttributeError):
        builder.message.attachments.__root__[0].data.tel
示例#29
0
def incoming_message(host, bot_id):
    builder = MessageBuilder()
    builder.bot_id = bot_id
    builder.user.host = host
    return builder.message
示例#30
0
def test_is_link_in_attachment():
    builder = MessageBuilder()
    builder.link()
    assert builder.message.attachments.__root__[0].data.is_link()