Example #1
0
class TestServiceBotConfigHandler(ZulipTestCase):
    def setUp(self) -> None:
        self.user_profile = self.example_user("othello")
        self.bot_profile = self.create_test_bot(
            '*****@*****.**',
            self.user_profile,
            'Embedded bot',
            'embedded',
            UserProfile.EMBEDDED_BOT,
            service_name='helloworld')
        self.bot_handler = EmbeddedBotHandler(self.bot_profile)

    def test_basic_storage_and_retrieval(self) -> None:
        with self.assertRaises(ConfigError):
            self.bot_handler.get_config_info('foo')

        self.assertEqual(
            self.bot_handler.get_config_info('foo', optional=True), dict())

        config_dict = {"entry 1": "value 1", "entry 2": "value 2"}
        for key, value in config_dict.items():
            set_bot_config(self.bot_profile, key, value)
        self.assertEqual(self.bot_handler.get_config_info('foo'), config_dict)

        config_update = {"entry 2": "new value", "entry 3": "value 3"}
        for key, value in config_update.items():
            set_bot_config(self.bot_profile, key, value)
        config_dict.update(config_update)
        self.assertEqual(self.bot_handler.get_config_info('foo'), config_dict)

    @override_settings(BOT_CONFIG_SIZE_LIMIT=100)
    def test_config_entry_limit(self) -> None:
        set_bot_config(self.bot_profile, "some key",
                       'x' * (settings.BOT_CONFIG_SIZE_LIMIT - 8))
        self.assertRaisesMessage(
            ConfigError,
            "Cannot store configuration. Request would require 101 characters. "
            "The current configuration size limit is 100 characters.",
            lambda: set_bot_config(
                self.bot_profile, "some key", 'x' *
                (settings.BOT_CONFIG_SIZE_LIMIT - 8 + 1)))
        set_bot_config(self.bot_profile, "some key",
                       'x' * (settings.BOT_CONFIG_SIZE_LIMIT - 20))
        set_bot_config(self.bot_profile, "another key", 'x')
        self.assertRaisesMessage(
            ConfigError,
            "Cannot store configuration. Request would require 116 characters. "
            "The current configuration size limit is 100 characters.",
            lambda: set_bot_config(self.bot_profile, "yet another key", 'x'))

    def test_load_bot_config_template(self) -> None:
        bot_config = load_bot_config_template('giphy')
        self.assertTrue(isinstance(bot_config, dict))
        self.assertEqual(len(bot_config), 1)

    def test_load_bot_config_template_for_bot_without_config_data(
            self) -> None:
        bot_config = load_bot_config_template('converter')
        self.assertTrue(isinstance(bot_config, dict))
        self.assertEqual(len(bot_config), 0)
 def setUp(self) -> None:
     self.user_profile = self.example_user("othello")
     self.bot_profile = self.create_test_bot('embedded', self.user_profile,
                                             full_name='Embedded bot',
                                             bot_type=UserProfile.EMBEDDED_BOT,
                                             service_name='helloworld')
     self.bot_handler = EmbeddedBotHandler(self.bot_profile)
Example #3
0
 def setUp(self) -> None:
     self.user_profile = self.example_user("othello")
     self.bot_profile = self.create_test_bot(
         '*****@*****.**',
         self.user_profile,
         'Embedded bot',
         'embedded',
         UserProfile.EMBEDDED_BOT,
         service_name='helloworld')
     self.bot_handler = EmbeddedBotHandler(self.bot_profile)
Example #4
0
 def setUp(self) -> None:
     super().setUp()
     self.user_profile = self.example_user("othello")
     self.bot_profile = self.create_test_bot(
         "embedded",
         self.user_profile,
         full_name="Embedded bot",
         bot_type=UserProfile.EMBEDDED_BOT,
         service_name="helloworld",
     )
     self.bot_handler = EmbeddedBotHandler(self.bot_profile)
Example #5
0
class TestServiceBotConfigHandler(ZulipTestCase):
    def setUp(self) -> None:
        self.user_profile = self.example_user("othello")
        self.bot_profile = self.create_test_bot('embedded', self.user_profile,
                                                full_name='Embedded bot',
                                                bot_type=UserProfile.EMBEDDED_BOT,
                                                service_name='helloworld')
        self.bot_handler = EmbeddedBotHandler(self.bot_profile)

    def test_basic_storage_and_retrieval(self) -> None:
        with self.assertRaises(ConfigError):
            self.bot_handler.get_config_info('foo')

        self.assertEqual(self.bot_handler.get_config_info('foo', optional=True), dict())

        config_dict = {"entry 1": "value 1", "entry 2": "value 2"}
        for key, value in config_dict.items():
            set_bot_config(self.bot_profile, key, value)
        self.assertEqual(self.bot_handler.get_config_info('foo'), config_dict)

        config_update = {"entry 2": "new value", "entry 3": "value 3"}
        for key, value in config_update.items():
            set_bot_config(self.bot_profile, key, value)
        config_dict.update(config_update)
        self.assertEqual(self.bot_handler.get_config_info('foo'), config_dict)

    @override_settings(BOT_CONFIG_SIZE_LIMIT=100)
    def test_config_entry_limit(self) -> None:
        set_bot_config(self.bot_profile, "some key", 'x' * (settings.BOT_CONFIG_SIZE_LIMIT-8))
        self.assertRaisesMessage(ConfigError,
                                 "Cannot store configuration. Request would require 101 characters. "
                                 "The current configuration size limit is 100 characters.",
                                 lambda: set_bot_config(self.bot_profile, "some key", 'x' * (settings.BOT_CONFIG_SIZE_LIMIT-8+1)))
        set_bot_config(self.bot_profile, "some key", 'x' * (settings.BOT_CONFIG_SIZE_LIMIT-20))
        set_bot_config(self.bot_profile, "another key", 'x')
        self.assertRaisesMessage(ConfigError,
                                 "Cannot store configuration. Request would require 116 characters. "
                                 "The current configuration size limit is 100 characters.",
                                 lambda: set_bot_config(self.bot_profile, "yet another key", 'x'))

    def test_load_bot_config_template(self) -> None:
        bot_config = load_bot_config_template('giphy')
        self.assertTrue(isinstance(bot_config, dict))
        self.assertEqual(len(bot_config), 1)

    def test_load_bot_config_template_for_bot_without_config_data(self) -> None:
        bot_config = load_bot_config_template('converter')
        self.assertTrue(isinstance(bot_config, dict))
        self.assertEqual(len(bot_config), 0)
Example #6
0
 def setUp(self) -> None:
     self.user_profile = self.example_user("othello")
     self.bot_profile = self.create_test_bot('embedded', self.user_profile,
                                             full_name='Embedded bot',
                                             bot_type=UserProfile.EMBEDDED_BOT,
                                             service_name='helloworld')
     self.bot_handler = EmbeddedBotHandler(self.bot_profile)
Example #7
0
 def get_bot_api_client(self,
                        user_profile: UserProfile) -> EmbeddedBotHandler:
     return EmbeddedBotHandler(user_profile)
Example #8
0
 def get_bot_api_client(self, user_profile):
     # type: (UserProfile) -> EmbeddedBotHandler
     return EmbeddedBotHandler(user_profile)
Example #9
0
class TestServiceBotConfigHandler(ZulipTestCase):
    def setUp(self) -> None:
        super().setUp()
        self.user_profile = self.example_user("othello")
        self.bot_profile = self.create_test_bot(
            "embedded",
            self.user_profile,
            full_name="Embedded bot",
            bot_type=UserProfile.EMBEDDED_BOT,
            service_name="helloworld",
        )
        self.bot_handler = EmbeddedBotHandler(self.bot_profile)

    def test_basic_storage_and_retrieval(self) -> None:
        with self.assertRaises(ConfigError):
            self.bot_handler.get_config_info("foo")

        self.assertEqual(
            self.bot_handler.get_config_info("foo", optional=True), {})

        config_dict = {"entry 1": "value 1", "entry 2": "value 2"}
        for key, value in config_dict.items():
            set_bot_config(self.bot_profile, key, value)
        self.assertEqual(self.bot_handler.get_config_info("foo"), config_dict)

        config_update = {"entry 2": "new value", "entry 3": "value 3"}
        for key, value in config_update.items():
            set_bot_config(self.bot_profile, key, value)
        config_dict.update(config_update)
        self.assertEqual(self.bot_handler.get_config_info("foo"), config_dict)

    @override_settings(BOT_CONFIG_SIZE_LIMIT=100)
    def test_config_entry_limit(self) -> None:
        set_bot_config(self.bot_profile, "some key",
                       "x" * (settings.BOT_CONFIG_SIZE_LIMIT - 8))
        self.assertRaisesMessage(
            ConfigError,
            "Cannot store configuration. Request would require 101 characters. "
            "The current configuration size limit is 100 characters.",
            lambda: set_bot_config(
                self.bot_profile, "some key", "x" *
                (settings.BOT_CONFIG_SIZE_LIMIT - 8 + 1)),
        )
        set_bot_config(self.bot_profile, "some key",
                       "x" * (settings.BOT_CONFIG_SIZE_LIMIT - 20))
        set_bot_config(self.bot_profile, "another key", "x")
        self.assertRaisesMessage(
            ConfigError,
            "Cannot store configuration. Request would require 116 characters. "
            "The current configuration size limit is 100 characters.",
            lambda: set_bot_config(self.bot_profile, "yet another key", "x"),
        )

    def test_load_bot_config_template(self) -> None:
        bot_config = load_bot_config_template("giphy")
        self.assertTrue(isinstance(bot_config, dict))
        self.assert_length(bot_config, 1)

    def test_load_bot_config_template_for_bot_without_config_data(
            self) -> None:
        bot_config = load_bot_config_template("converter")
        self.assertTrue(isinstance(bot_config, dict))
        self.assert_length(bot_config, 0)

    def test_bot_send_pm_with_empty_recipients_list(self) -> None:
        with self.assertRaisesRegex(EmbeddedBotEmptyRecipientsList,
                                    "Message must have recipients!"):
            self.bot_handler.send_message(message={
                "type": "private",
                "to": []
            })
 def setUp(self) -> None:
     self.user_profile = self.example_user("othello")
     self.bot_profile = self.create_test_bot('*****@*****.**', self.user_profile, 'Embedded bot',
                                             'embedded', UserProfile.EMBEDDED_BOT, service_name='helloworld')
     self.bot_handler = EmbeddedBotHandler(self.bot_profile)