Пример #1
0
def get_message_url(event: Dict[str, Any]) -> str:
    bot_user = get_user_profile_by_id(event['user_profile_id'])
    message = event['message']
    realm = bot_user.realm

    return near_message_url(
        realm=realm,
        message=message,
    )
Пример #2
0
def get_message_url(event: Dict[str, Any]) -> str:
    bot_user = get_user_profile_by_id(event['user_profile_id'])
    message = event['message']
    realm = bot_user.realm

    return near_message_url(
        realm=realm,
        message=message,
    )
Пример #3
0
    def test_pm_to_outgoing_webhook_bot_for_407_error_code(self) -> None:
        bot_owner = self.example_user("othello")
        bot = self.create_outgoing_bot(bot_owner)
        sender = self.example_user("hamlet")
        realm = get_realm("zulip")

        session = mock.Mock(spec=requests.Session)
        session.headers = {}
        session.post.return_value = ResponseMock(407)
        expect_fail = mock.patch(
            "zerver.lib.outgoing_webhook.fail_with_message")

        with mock.patch(
                "zerver.lib.outgoing_webhook.Session"
        ) as sessionmaker, expect_fail as mock_fail, self.assertLogs(
                level="WARNING"):
            sessionmaker.return_value = session
            message_id = self.send_personal_message(sender, bot, content="foo")

            # create message dict to get the message url
            message = {
                "display_recipient": [{
                    "id": bot.id
                }, {
                    "id": sender.id
                }],
                "stream_id": 999,
                TOPIC_NAME: "Foo",
                "id": message_id,
                "type": "",
            }
            message_url = near_message_url(realm, message)

            last_message = self.get_last_message()
            self.assertEqual(
                last_message.content,
                f"[A message]({message_url}) to your bot @_**{bot.full_name}** triggered an outgoing webhook.\n"
                "The URL configured for the webhook is for a private or disallowed network.",
            )
            self.assertEqual(last_message.sender_id, bot.id)
            self.assertEqual(
                last_message.recipient.type_id,
                bot_owner.id,
            )
            self.assertEqual(
                last_message.recipient.type,
                Recipient.PERSONAL,
            )
            self.assertTrue(mock_fail.called)
Пример #4
0
 def test_near_pm_message_url(self) -> None:
     realm = get_realm('zulip')
     message = dict(
         type='personal',
         id=555,
         display_recipient=[
             dict(id=77),
             dict(id=80),
         ],
     )
     url = near_message_url(
         realm=realm,
         message=message,
     )
     self.assertEqual(url, 'http://zulip.testserver/#narrow/pm-with/77,80-pm/near/555')