mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +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
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,14 +349,27 @@ 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
|
||||
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:
|
||||
|
@@ -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',
|
||||
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)
|
||||
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,
|
||||
)
|
||||
|
||||
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',
|
||||
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)
|
||||
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,
|
||||
)
|
||||
|
||||
def test_create_embedded_bot_with_invalid_config_value(self, **extras: Any) -> None:
|
||||
self.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)
|
||||
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,
|
||||
)
|
||||
|
||||
# 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,
|
||||
trigger_event: Union[Mapping[Any, Any], Any],
|
||||
x: Callable[[Any], None]=None) -> None:
|
||||
def check_values_passed(
|
||||
queue_name: Any,
|
||||
trigger_event: Union[Mapping[Any, Any], Any],
|
||||
) -> 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,
|
||||
trigger_event: Union[Mapping[Any, Any], Any],
|
||||
x: Callable[[Any], None]=None) -> None:
|
||||
def check_values_passed(
|
||||
queue_name: Any,
|
||||
trigger_event: Union[Mapping[Any, Any], Any],
|
||||
) -> 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,
|
||||
trigger_event: Union[Mapping[Any, Any], Any],
|
||||
x: Callable[[Any], None]=None) -> None:
|
||||
def check_values_passed(
|
||||
queue_name: Any,
|
||||
trigger_event: Union[Mapping[Any, Any], Any],
|
||||
) -> 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