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, )
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)
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')