mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	test_bots.py: Use example_email instead of using the emails directly.
This commit is contained in:
		@@ -40,7 +40,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_bot_domain(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.create_bot()
 | 
			
		||||
        self.assertTrue(UserProfile.objects.filter(email='hambot-bot@zulip.testserver').exists())
 | 
			
		||||
        # The other cases are hard to test directly, since we don't allow creating bots from
 | 
			
		||||
@@ -59,7 +59,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_bad_username(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        bot_info = dict(
 | 
			
		||||
            full_name='My bot name',
 | 
			
		||||
@@ -71,7 +71,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_no_name(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        bot_info = dict(
 | 
			
		||||
            full_name='a',
 | 
			
		||||
@@ -83,7 +83,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        events = []  # type: List[Dict[str, Any]]
 | 
			
		||||
        with tornado_redirected_to_list(events):
 | 
			
		||||
@@ -106,7 +106,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
                         default_sending_stream=None,
 | 
			
		||||
                         default_events_register_stream=None,
 | 
			
		||||
                         default_all_public_streams=False,
 | 
			
		||||
                         owner='hamlet@zulip.com')
 | 
			
		||||
                         owner=self.example_email('hamlet'))
 | 
			
		||||
            ),
 | 
			
		||||
            event['event']
 | 
			
		||||
        )
 | 
			
		||||
@@ -116,12 +116,12 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
        bots = [m for m in members if m['email'] == 'hambot-bot@zulip.testserver']
 | 
			
		||||
        self.assertEqual(len(bots), 1)
 | 
			
		||||
        bot = bots[0]
 | 
			
		||||
        self.assertEqual(bot['bot_owner'], 'hamlet@zulip.com')
 | 
			
		||||
        self.assertEqual(bot['bot_owner'], self.example_email('hamlet'))
 | 
			
		||||
        self.assertEqual(bot['user_id'], get_user_profile_by_email('hambot-bot@zulip.testserver').id)
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_username_in_use(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        result = self.create_bot()
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
@@ -135,7 +135,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_user_avatar(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        with get_test_image_file('img.png') as fp:
 | 
			
		||||
            self.create_bot(file=fp)
 | 
			
		||||
@@ -151,7 +151,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_too_many_files(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        with get_test_image_file('img.png') as fp1, \
 | 
			
		||||
                get_test_image_file('img.gif') as fp2:
 | 
			
		||||
@@ -167,7 +167,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_default_sending_stream(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        result = self.create_bot(default_sending_stream='Denmark')
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
@@ -178,7 +178,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_default_sending_stream_not_subscribed(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        result = self.create_bot(default_sending_stream='Rome')
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
@@ -197,15 +197,15 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
        When 'principals' has a bot, no notification message event or invitation email
 | 
			
		||||
        is sent when add_subscriptions_backend is called in the above api call.
 | 
			
		||||
        """
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
 | 
			
		||||
        # Normal user i.e. not a bot.
 | 
			
		||||
        request_data = {
 | 
			
		||||
            'principals': '["iago@zulip.com"]'
 | 
			
		||||
            'principals': '["' + self.example_email('iago') + '"]'
 | 
			
		||||
        }
 | 
			
		||||
        events = []  # type: List[Dict[str, Any]]
 | 
			
		||||
        with tornado_redirected_to_list(events):
 | 
			
		||||
            result = self.common_subscribe_to_streams("hamlet@zulip.com", ['Rome'], request_data)
 | 
			
		||||
            result = self.common_subscribe_to_streams(self.example_email('hamlet'), ['Rome'], request_data)
 | 
			
		||||
            self.assert_json_success(result)
 | 
			
		||||
 | 
			
		||||
        msg_event = [e for e in events if e['event']['type'] == 'message']
 | 
			
		||||
@@ -222,7 +222,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
        }
 | 
			
		||||
        events_bot = []  # type: List[Dict[str, Any]]
 | 
			
		||||
        with tornado_redirected_to_list(events_bot):
 | 
			
		||||
            result = self.common_subscribe_to_streams("hamlet@zulip.com", ['Rome'], bot_request_data)
 | 
			
		||||
            result = self.common_subscribe_to_streams(self.example_email('hamlet'), ['Rome'], bot_request_data)
 | 
			
		||||
            self.assert_json_success(result)
 | 
			
		||||
 | 
			
		||||
        # No notification message event or invitation email is sent because of bot.
 | 
			
		||||
@@ -235,7 +235,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_default_sending_stream_private_allowed(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        user_profile = self.example_user('hamlet')
 | 
			
		||||
        stream = get_stream("Denmark", user_profile.realm)
 | 
			
		||||
        self.subscribe_to_stream(user_profile.email, stream.name)
 | 
			
		||||
@@ -265,7 +265,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
                         default_sending_stream='Denmark',
 | 
			
		||||
                         default_events_register_stream=None,
 | 
			
		||||
                         default_all_public_streams=False,
 | 
			
		||||
                         owner='hamlet@zulip.com')
 | 
			
		||||
                         owner=self.example_email('hamlet'))
 | 
			
		||||
            ),
 | 
			
		||||
            event['event']
 | 
			
		||||
        )
 | 
			
		||||
@@ -273,10 +273,10 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_default_sending_stream_private_denied(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        user_profile = self.example_user('hamlet')
 | 
			
		||||
        stream = get_stream("Denmark", user_profile.realm)
 | 
			
		||||
        self.unsubscribe_from_stream("hamlet@zulip.com", "Denmark")
 | 
			
		||||
        self.unsubscribe_from_stream(self.example_email('hamlet'), "Denmark")
 | 
			
		||||
        do_change_stream_invite_only(stream, True)
 | 
			
		||||
 | 
			
		||||
        bot_info = {
 | 
			
		||||
@@ -289,7 +289,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_default_events_register_stream(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        result = self.create_bot(default_events_register_stream='Denmark')
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
@@ -300,7 +300,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_default_events_register_stream_private_allowed(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        user_profile = self.example_user('hamlet')
 | 
			
		||||
        stream = self.subscribe_to_stream(user_profile.email, 'Denmark')
 | 
			
		||||
        do_change_stream_invite_only(stream, True)
 | 
			
		||||
@@ -329,7 +329,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
                         default_sending_stream=None,
 | 
			
		||||
                         default_events_register_stream='Denmark',
 | 
			
		||||
                         default_all_public_streams=False,
 | 
			
		||||
                         owner='hamlet@zulip.com')
 | 
			
		||||
                         owner=self.example_email('hamlet'))
 | 
			
		||||
            ),
 | 
			
		||||
            event['event']
 | 
			
		||||
        )
 | 
			
		||||
@@ -337,10 +337,10 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_default_events_register_stream_private_denied(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        user_profile = self.example_user('hamlet')
 | 
			
		||||
        stream = get_stream("Denmark", user_profile.realm)
 | 
			
		||||
        self.unsubscribe_from_stream("hamlet@zulip.com", "Denmark")
 | 
			
		||||
        self.unsubscribe_from_stream(self.example_email('hamlet'), "Denmark")
 | 
			
		||||
        do_change_stream_invite_only(stream, True)
 | 
			
		||||
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
@@ -354,7 +354,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_add_bot_with_default_all_public_streams(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        result = self.create_bot(default_all_public_streams=ujson.dumps(True))
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
@@ -365,7 +365,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_deactivate_bot(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        self.create_bot()
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
@@ -377,7 +377,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
    def test_deactivate_bogus_bot(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        """Deleting a bogus bot will succeed silently."""
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        self.create_bot()
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
@@ -388,24 +388,24 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
    def test_bot_deactivation_attacks(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        """You cannot deactivate somebody else's bot."""
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        self.create_bot()
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
 | 
			
		||||
        # Have Othello try to deactivate both Hamlet and
 | 
			
		||||
        # Hamlet's bot.
 | 
			
		||||
        self.login("othello@zulip.com")
 | 
			
		||||
        self.login(self.example_email('othello'))
 | 
			
		||||
 | 
			
		||||
        # Can not deactivate a user as a bot
 | 
			
		||||
        result = self.client_delete("/json/bots/hamlet@zulip.com")
 | 
			
		||||
        result = self.client_delete("/json/bots/" + self.example_email("hamlet"))
 | 
			
		||||
        self.assert_json_error(result, 'No such bot')
 | 
			
		||||
 | 
			
		||||
        result = self.client_delete("/json/bots/hambot-bot@zulip.testserver")
 | 
			
		||||
        self.assert_json_error(result, 'Insufficient permission')
 | 
			
		||||
 | 
			
		||||
        # But we don't actually deactivate the other person's bot.
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
 | 
			
		||||
        # Can not deactivate a bot as a user
 | 
			
		||||
@@ -415,13 +415,13 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_bot_permissions(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.assert_num_bots_equal(0)
 | 
			
		||||
        self.create_bot()
 | 
			
		||||
        self.assert_num_bots_equal(1)
 | 
			
		||||
 | 
			
		||||
        # Have Othello try to mess with Hamlet's bots.
 | 
			
		||||
        self.login("othello@zulip.com")
 | 
			
		||||
        self.login(self.example_email('othello'))
 | 
			
		||||
 | 
			
		||||
        result = self.client_post("/json/bots/hambot-bot@zulip.testserver/api_key/regenerate")
 | 
			
		||||
        self.assert_json_error(result, 'Insufficient permission')
 | 
			
		||||
@@ -440,7 +440,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_update_api_key(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.create_bot()
 | 
			
		||||
        bot = self.get_bot()
 | 
			
		||||
        old_api_key = bot['api_key']
 | 
			
		||||
@@ -453,13 +453,13 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_update_api_key_for_invalid_user(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        result = self.client_post('/json/bots/nonexistentuser@zulip.com/api_key/regenerate')
 | 
			
		||||
        self.assert_json_error(result, 'No such user')
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_full_name(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -480,7 +480,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_owner(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -488,23 +488,23 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
        result = self.client_post("/json/bots", bot_info)
 | 
			
		||||
        self.assert_json_success(result)
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'bot_owner': 'othello@zulip.com',
 | 
			
		||||
            'bot_owner': self.example_email('othello'),
 | 
			
		||||
        }
 | 
			
		||||
        result = self.client_patch("/json/bots/hambot-bot@zulip.testserver", bot_info)
 | 
			
		||||
        self.assert_json_success(result)
 | 
			
		||||
 | 
			
		||||
        # Test bot's owner has been changed successfully.
 | 
			
		||||
        bot_owner = ujson.loads(result.content)['bot_owner']
 | 
			
		||||
        self.assertEqual(bot_owner, 'othello@zulip.com')
 | 
			
		||||
        self.assertEqual(bot_owner, self.example_email('othello'))
 | 
			
		||||
 | 
			
		||||
        self.login('othello@zulip.com')
 | 
			
		||||
        self.login(self.example_email('othello'))
 | 
			
		||||
        bot = self.get_bot()
 | 
			
		||||
        self.assertEqual('The Bot of Hamlet', bot['full_name'])
 | 
			
		||||
 | 
			
		||||
    @override_settings(LOCAL_UPLOADS_DIR='var/bot_avatar')
 | 
			
		||||
    def test_patch_bot_avatar(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -544,7 +544,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_to_stream(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -565,7 +565,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_to_stream_not_subscribed(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -586,7 +586,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_to_stream_none(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -608,7 +608,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_to_stream_private_allowed(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        user_profile = self.example_user('hamlet')
 | 
			
		||||
        stream = self.subscribe_to_stream(user_profile.email, "Denmark")
 | 
			
		||||
        do_change_stream_invite_only(stream, True)
 | 
			
		||||
@@ -634,10 +634,10 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_to_stream_private_denied(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        user_profile = self.example_user('hamlet')
 | 
			
		||||
        stream = get_stream("Denmark", user_profile.realm)
 | 
			
		||||
        self.unsubscribe_from_stream("hamlet@zulip.com", "Denmark")
 | 
			
		||||
        self.unsubscribe_from_stream(self.example_email('hamlet'), "Denmark")
 | 
			
		||||
        do_change_stream_invite_only(stream, True)
 | 
			
		||||
 | 
			
		||||
        bot_info = {
 | 
			
		||||
@@ -655,7 +655,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_to_stream_not_found(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -670,7 +670,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_events_register_stream(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -691,7 +691,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_events_register_stream_allowed(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        user_profile = self.example_user('hamlet')
 | 
			
		||||
        stream = self.subscribe_to_stream(user_profile.email, "Denmark")
 | 
			
		||||
        do_change_stream_invite_only(stream, True)
 | 
			
		||||
@@ -716,10 +716,10 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_events_register_stream_denied(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        user_profile = self.example_user('hamlet')
 | 
			
		||||
        stream = get_stream("Denmark", user_profile.realm)
 | 
			
		||||
        self.unsubscribe_from_stream("hamlet@zulip.com", "Denmark")
 | 
			
		||||
        self.unsubscribe_from_stream(self.example_email('hamlet'), "Denmark")
 | 
			
		||||
        do_change_stream_invite_only(stream, True)
 | 
			
		||||
 | 
			
		||||
        bot_info = {
 | 
			
		||||
@@ -736,7 +736,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_events_register_stream_none(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -758,7 +758,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_events_register_stream_not_found(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -773,7 +773,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_default_all_public_streams_true(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -794,7 +794,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_default_all_public_streams_false(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -815,7 +815,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
 | 
			
		||||
    def test_patch_bot_via_post(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'The Bot of Hamlet',
 | 
			
		||||
            'short_name': 'hambot',
 | 
			
		||||
@@ -838,7 +838,7 @@ class BotTest(ZulipTestCase, UploadSerializeMixin):
 | 
			
		||||
    def test_patch_bogus_bot(self):
 | 
			
		||||
        # type: () -> None
 | 
			
		||||
        """Deleting a bogus bot will succeed silently."""
 | 
			
		||||
        self.login("hamlet@zulip.com")
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        self.create_bot()
 | 
			
		||||
        bot_info = {
 | 
			
		||||
            'full_name': 'Fred',
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user