mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-31 12:03:46 +00:00 
			
		
		
		
	test_service_bot_system: Fix strict_optional errors.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		
				
					committed by
					
						 Tim Abbott
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							2a0e5616f1
						
					
				
				
					commit
					26fe6be16a
				
			
							
								
								
									
										2
									
								
								mypy.ini
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								mypy.ini
									
									
									
									
									
								
							| @@ -40,8 +40,6 @@ strict_optional = True | ||||
|  | ||||
| # Tests (may be many issues in file; comment is just one error noted) | ||||
|  | ||||
| [mypy-zerver/tests/test_service_bot_system]  #312: error: Argument 1 to "set_bot_config" has incompatible type "Optional[UserProfile]"; expected "UserProfile" | ||||
| strict_optional = False | ||||
| [mypy-zerver/tests/test_outgoing_webhook_system]  #33: error: Argument 1 to "MockServiceHandler" has incompatible type "None"; expected "str" | ||||
| strict_optional = False | ||||
| [mypy-zerver/tests/test_narrow]  #515: error: Incompatible types in assignment (expression has type "None", variable has type "int") | ||||
|   | ||||
| @@ -341,8 +341,7 @@ class ZulipTestCase(TestCase): | ||||
|     def create_test_bot(self, short_name: str, | ||||
|                         user_profile: UserProfile, | ||||
|                         full_name: str='Foo Bot', | ||||
|                         assert_json_error_msg: str=None, | ||||
|                         **extras: Any) -> Optional[UserProfile]: | ||||
|                         **extras: Any) -> UserProfile: | ||||
|         self.login_user(user_profile) | ||||
|         bot_info = { | ||||
|             'short_name': short_name, | ||||
| @@ -350,15 +349,28 @@ class ZulipTestCase(TestCase): | ||||
|         } | ||||
|         bot_info.update(extras) | ||||
|         result = self.client_post("/json/bots", bot_info) | ||||
|         if assert_json_error_msg is not None: | ||||
|             self.assert_json_error(result, assert_json_error_msg) | ||||
|             return None | ||||
|         else: | ||||
|         self.assert_json_success(result) | ||||
|         bot_email = f'{short_name}-bot@zulip.testserver' | ||||
|         bot_profile = get_user(bot_email, user_profile.realm) | ||||
|         return bot_profile | ||||
|  | ||||
|     def fail_to_create_test_bot( | ||||
|         self, short_name: str, | ||||
|         user_profile: UserProfile, | ||||
|         full_name: str='Foo Bot', | ||||
|         *, | ||||
|         assert_json_error_msg: str, | ||||
|         **extras: Any, | ||||
|     ) -> None: | ||||
|         self.login_user(user_profile) | ||||
|         bot_info = { | ||||
|             'short_name': short_name, | ||||
|             'full_name': full_name, | ||||
|         } | ||||
|         bot_info.update(extras) | ||||
|         result = self.client_post("/json/bots", bot_info) | ||||
|         self.assert_json_error(result, assert_json_error_msg) | ||||
|  | ||||
|     def login_with_return(self, email: str, password: Optional[str]=None, | ||||
|                           **kwargs: Any) -> HttpResponse: | ||||
|         if password is None: | ||||
|   | ||||
| @@ -1484,13 +1484,15 @@ class BotTest(ZulipTestCase, UploadSerializeMixin): | ||||
|  | ||||
|     def test_create_embedded_bot_with_disabled_embedded_bots(self, **extras: Any) -> None: | ||||
|         with self.settings(EMBEDDED_BOTS_ENABLED=False): | ||||
|             self.create_test_bot(short_name='embeddedservicebot', | ||||
|             self.fail_to_create_test_bot( | ||||
|                 short_name='embeddedservicebot', | ||||
|                 user_profile=self.example_user("hamlet"), | ||||
|                 bot_type=UserProfile.EMBEDDED_BOT, | ||||
|                 service_name='followup', | ||||
|                 config_data=ujson.dumps({'key': 'value'}), | ||||
|                 assert_json_error_msg='Embedded bots are not enabled.', | ||||
|                                  **extras) | ||||
|                 **extras, | ||||
|             ) | ||||
|  | ||||
|     def test_create_embedded_bot(self, **extras: Any) -> None: | ||||
|         bot_config_info = {'key': 'value'} | ||||
| @@ -1512,20 +1514,24 @@ class BotTest(ZulipTestCase, UploadSerializeMixin): | ||||
|         self.assertEqual(service.user_profile, bot) | ||||
|  | ||||
|     def test_create_embedded_bot_with_incorrect_service_name(self, **extras: Any) -> None: | ||||
|         self.create_test_bot(short_name='embeddedservicebot', | ||||
|         self.fail_to_create_test_bot( | ||||
|             short_name='embeddedservicebot', | ||||
|             user_profile=self.example_user("hamlet"), | ||||
|             bot_type=UserProfile.EMBEDDED_BOT, | ||||
|             service_name='not_existing_service', | ||||
|             assert_json_error_msg='Invalid embedded bot name.', | ||||
|                              **extras) | ||||
|             **extras, | ||||
|         ) | ||||
|  | ||||
|     def test_create_embedded_bot_with_invalid_config_value(self, **extras: Any) -> None: | ||||
|         self.create_test_bot(short_name='embeddedservicebot', | ||||
|         self.fail_to_create_test_bot( | ||||
|             short_name='embeddedservicebot', | ||||
|             user_profile=self.example_user("hamlet"), | ||||
|             service_name='followup', | ||||
|             config_data=ujson.dumps({'invalid': ['config', 'value']}), | ||||
|             assert_json_error_msg='config_data contains a value that is not a string', | ||||
|                              **extras) | ||||
|             **extras, | ||||
|         ) | ||||
|  | ||||
|         # Test to create embedded bot with an incorrect config value | ||||
|         incorrect_bot_config_info = {'key': 'incorrect key'} | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| from typing import Any, Callable, Mapping, Union | ||||
| from typing import Any, Mapping, Union | ||||
| from unittest import mock | ||||
|  | ||||
| import ujson | ||||
| @@ -37,6 +37,7 @@ class TestServiceBotBasics(ZulipTestCase): | ||||
|         assert(not sender.is_bot) | ||||
|  | ||||
|         outgoing_bot = self._get_outgoing_bot() | ||||
|         assert outgoing_bot.bot_type is not None | ||||
|  | ||||
|         event_dict = get_service_bot_events( | ||||
|             sender=sender, | ||||
| @@ -61,6 +62,7 @@ class TestServiceBotBasics(ZulipTestCase): | ||||
|         assert(not sender.is_bot) | ||||
|  | ||||
|         outgoing_bot = self._get_outgoing_bot() | ||||
|         assert outgoing_bot.bot_type is not None | ||||
|  | ||||
|         # If outgoing_bot is not in mentioned_user_ids, | ||||
|         # we will skip over it.  This tests an anomaly | ||||
| @@ -84,6 +86,7 @@ class TestServiceBotBasics(ZulipTestCase): | ||||
|         assert(not sender.is_bot) | ||||
|  | ||||
|         outgoing_bot = self._get_outgoing_bot() | ||||
|         assert outgoing_bot.bot_type is not None | ||||
|  | ||||
|         cordelia = self.example_user('cordelia') | ||||
|  | ||||
| @@ -118,6 +121,7 @@ class TestServiceBotBasics(ZulipTestCase): | ||||
|         assert(not sender.is_bot) | ||||
|  | ||||
|         outgoing_bot = self._get_outgoing_bot() | ||||
|         assert outgoing_bot.bot_type is not None | ||||
|  | ||||
|         event_dict = get_service_bot_events( | ||||
|             sender=sender, | ||||
| @@ -415,9 +419,10 @@ class TestServiceBotEventTriggers(ZulipTestCase): | ||||
|             trigger = 'mention' | ||||
|             message_type = Recipient._type_names[Recipient.STREAM] | ||||
|  | ||||
|             def check_values_passed(queue_name: Any, | ||||
|             def check_values_passed( | ||||
|                 queue_name: Any, | ||||
|                 trigger_event: Union[Mapping[Any, Any], Any], | ||||
|                                     x: Callable[[Any], None]=None) -> None: | ||||
|             ) -> None: | ||||
|                 self.assertEqual(queue_name, expected_queue_name) | ||||
|                 self.assertEqual(trigger_event["message"]["content"], content) | ||||
|                 self.assertEqual(trigger_event["message"]["display_recipient"], recipient) | ||||
| @@ -460,9 +465,10 @@ class TestServiceBotEventTriggers(ZulipTestCase): | ||||
|             sender = self.user_profile | ||||
|             recipient = self.bot_profile | ||||
|  | ||||
|             def check_values_passed(queue_name: Any, | ||||
|             def check_values_passed( | ||||
|                 queue_name: Any, | ||||
|                 trigger_event: Union[Mapping[Any, Any], Any], | ||||
|                                     x: Callable[[Any], None]=None) -> None: | ||||
|             ) -> None: | ||||
|                 self.assertEqual(queue_name, expected_queue_name) | ||||
|                 self.assertEqual(trigger_event["user_profile_id"], self.bot_profile.id) | ||||
|                 self.assertEqual(trigger_event["trigger"], "private_message") | ||||
| @@ -502,9 +508,10 @@ class TestServiceBotEventTriggers(ZulipTestCase): | ||||
|             recipients = [self.bot_profile, self.second_bot_profile] | ||||
|             profile_ids = [self.bot_profile.id, self.second_bot_profile.id] | ||||
|  | ||||
|             def check_values_passed(queue_name: Any, | ||||
|             def check_values_passed( | ||||
|                 queue_name: Any, | ||||
|                 trigger_event: Union[Mapping[Any, Any], Any], | ||||
|                                     x: Callable[[Any], None]=None) -> None: | ||||
|             ) -> None: | ||||
|                 self.assertEqual(queue_name, expected_queue_name) | ||||
|                 self.assertIn(trigger_event["user_profile_id"], profile_ids) | ||||
|                 profile_ids.remove(trigger_event["user_profile_id"]) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user