Exemple #1
0
    def test_load_plugins(self):
        hipchat = HipChat(nick='Sarah',
                          jid='test@localhost',
                          password='******',
                          plugins=(('sarah.bot.plugins.simple_counter', {}),
                                   ('sarah.bot.plugins.echo', {})),
                          proxy={'host': 'localhost',
                                 'port': 1234,
                                 'username': '******',
                                 'password': '******'})

        hipchat.load_plugins()

        assert_that(hipchat.commands).extract('name').contains('.count',
                                                               '.reset_count',
                                                               '.echo')

        assert_that(hipchat.commands) \
            .extract('name', 'module_name') \
            .contains_sequence(('.count', 'sarah.bot.plugins.simple_counter'),
                               ('.reset_count',
                                'sarah.bot.plugins.simple_counter'),
                               ('.echo', 'sarah.bot.plugins.echo'))

        for command in hipchat.commands:
            assert_that(command.function).is_type_of(types.FunctionType)
Exemple #2
0
    def test_non_existing_plugin(self):
        h = HipChat(nick='Sarah',
                    jid='test@localhost',
                    password='******',
                    plugins=(('spam.ham.egg.onion', {}),))
        h.load_plugins()

        assert_that(h.commands).is_empty()
        assert_that(h.scheduler.get_jobs()).is_empty()
Exemple #3
0
 def hipchat(self, request):
     # NO h.start() for this test
     h = HipChat(nick='Sarah',
                 jid='test@localhost',
                 password='******',
                 plugins=(('sarah.bot.plugins.simple_counter',
                           {'spam': 'ham'}),
                          ('sarah.bot.plugins.echo',)))
     h.load_plugins()
     return h
Exemple #4
0
    def test_add_schedule_job(self):
        hipchat = HipChat(nick='Sarah',
                          jid='test@localhost',
                          password='******',
                          plugins=(('sarah.bot.plugins.bmw_quotes',
                                    {'rooms': ('123_homer@localhost',)}),))
        hipchat.connect = lambda: True
        hipchat.run()

        jobs = hipchat.scheduler.get_jobs()
        assert_that(jobs).is_length(1)
        assert_that(jobs[0]).has_id('sarah.bot.plugins.bmw_quotes.bmw_quotes')
        assert_that(jobs[0].trigger).has_interval_length(300)
Exemple #5
0
    def hipchat(self, request):
        h = HipChat(nick='Sarah',
                    jid='test@localhost',
                    password='******',
                    plugins=(('sarah.bot.plugins.hello', {}),
                             ('sarah.bot.plugins.simple_counter', {}),
                             ('sarah.bot.plugins.echo',)),
                    max_workers=4)
        h.client.connect = lambda: True
        h.client.process = lambda *args, **kwargs: True
        request.addfinalizer(h.stop)
        h.run()

        return h
Exemple #6
0
    def test_run(self):
        hipchat = HipChat(nick='Sarah',
                          jid='test@localhost',
                          password='******')

        with patch.object(hipchat.client, 'connect', return_value=True):
            with patch.object(
                    hipchat.client,
                    'process',
                    return_value=True) as mock_client_process:
                hipchat.run()

                assert_that(mock_client_process.call_count).is_equal_to(1)
                assert_that(hipchat.scheduler.running).is_true()
Exemple #7
0
    def test_connection_fail(self):
        hipchat = HipChat(nick='Sarah',
                          jid='test@localhost',
                          password='******')

        with patch.object(
                hipchat.client,
                'connect',
                return_value=False) as mock_connect:
            with pytest.raises(SarahHipChatException) as e:
                hipchat.run()

            assert_that(str(e)) \
                .matches("Couldn't connect to server\.")
            assert_that(mock_connect.call_count).is_equal_to(1)
Exemple #8
0
    def test_no_setting(self):
        h = HipChat(nick='Sarah',
                    jid='test@localhost',
                    password='******',
                    plugins=())

        with patch.object(h.client.plugin['xep_0045'].xmpp,
                          'send',
                          return_value=None) as mock_send:
            h.join_rooms({})

            assert_that(mock_send.call_count).is_zero()
            assert_that(h.client.plugin['xep_0045']) \
                .has_rooms({}) \
                .has_ourNicks({})
Exemple #9
0
    def test_no_setting(self):
        h = HipChat(nick='Sarah',
                    jid='test@localhost',
                    password='******',
                    plugins=())

        with patch.object(h.client.plugin['xep_0045'].xmpp,
                          'send',
                          return_value=None) as mock_send:
            h.join_rooms({})

            assert_that(mock_send.call_count).is_zero()
            assert_that(h.client.plugin['xep_0045']) \
                .has_rooms({}) \
                .has_ourNicks({})
Exemple #10
0
    def test_success(self):
        h = HipChat(nick='Sarah',
                    jid='test@localhost',
                    rooms=['123_homer@localhost'],
                    password='******',
                    plugins=())

        with patch.object(h.client.plugin['xep_0045'].xmpp,
                          'send',
                          return_value=None) as mock_send:
            h.join_rooms({})

            assert_that(mock_send.call_count).is_equal_to(1)
            assert_that(h.client.plugin['xep_0045']) \
                .has_rooms({'123_homer@localhost': {}}) \
                .has_ourNicks({'123_homer@localhost': h.nick})
Exemple #11
0
    def test_success(self):
        h = HipChat(nick='Sarah',
                    jid='test@localhost',
                    rooms=['123_homer@localhost'],
                    password='******',
                    plugins=())

        with patch.object(h.client.plugin['xep_0045'].xmpp,
                          'send',
                          return_value=None) as mock_send:
            h.join_rooms({})

            assert_that(mock_send.call_count).is_equal_to(1)
            assert_that(h.client.plugin['xep_0045']) \
                .has_rooms({'123_homer@localhost': {}}) \
                .has_ourNicks({'123_homer@localhost': h.nick})
Exemple #12
0
    def test_init(self):
        hipchat = HipChat(nick='Sarah',
                          jid='test@localhost',
                          password='******',
                          rooms=['123_homer@localhost'],
                          plugins=(),
                          proxy={
                              'host': 'localhost',
                              'port': 1234,
                              'username': '******',
                              'password': '******'
                          })

        # This doesn't work with assertpy.
        # Does this have something to do with ABCMeta?
        # assert_that(hipchat).is_instance_of(HipChat)
        assert isinstance(hipchat, HipChat) is True

        assert_that(hipchat) \
            .has_nick('Sarah') \
            .has_rooms(['123_homer@localhost'])

        assert_that(hipchat.client) \
            .is_instance_of(ClientXMPP) \
            .has_use_proxy(True) \
            .has_proxy_config({'host': 'localhost',
                               'port': 1234,
                               'username': '******',
                               'password': '******'})

        assert_that(hipchat.client.requested_jid) \
            .is_not_none() \
            .is_instance_of(JID) \
            .is_equal_to(JID('test@localhost', cache_lock=True))
Exemple #13
0
    def hipchat(self, request):
        h = HipChat(nick='Sarah',
                    jid='test@localhost',
                    password='******',
                    plugins=None,
                    max_workers=4)

        return h
Exemple #14
0
 def hipchat(self, request):
     # NO h.start() for this test
     h = HipChat(nick='Sarah',
                 jid='test@localhost',
                 password='******',
                 plugins=())
     h.client.send_presence = MagicMock()
     return h
Exemple #15
0
    def test_missing_config(self):
        logging.warning = MagicMock()

        hipchat = HipChat(nick='Sarah',
                          jid='test@localhost',
                          password='******',
                          plugins=(('sarah.bot.plugins.bmw_quotes',),))
        hipchat.connect = lambda: True
        hipchat.run()

        assert_that(hipchat.scheduler.get_jobs()) \
            .described_as("No module is loaded") \
            .is_empty()
        assert_that(logging.warning.call_count).is_equal_to(1)
        assert_that(logging.warning.call_args) \
            .described_as("Configuration is entirely missing.") \
            .is_equal_to(call('Missing configuration for schedule job. '
                              'sarah.bot.plugins.bmw_quotes. Skipping.'))
Exemple #16
0
    def test_connection_fail(self):
        hipchat = HipChat(nick='Sarah',
                          jid='test@localhost',
                          password='******')

        with patch.object(hipchat.client, 'connect',
                          return_value=False) as mock_connect:
            with pytest.raises(SarahHipChatException) as e:
                hipchat.connect()

            assert_that(str(e)) \
                .matches("Couldn't connect to server\.")
            assert_that(mock_connect.call_count).is_equal_to(1)
Exemple #17
0
    def test_missing_rooms_config(self):
        logging.warning = MagicMock()

        hipchat = HipChat(nick='Sarah',
                          jid='test@localhost',
                          password='******',
                          plugins=(('sarah.bot.plugins.bmw_quotes',
                                    {"dummy": "spam"}),))
        hipchat.connect = lambda: True
        hipchat.load_plugins()
        hipchat.run()

        assert_that(logging.warning.call_count).is_true()
        assert_that(logging.warning.call_args) \
            .described_as("Configuration is given, "
                          "but required field is missing") \
            .is_equal_to(call('Missing rooms configuration for schedule job. '
                              'sarah.bot.plugins.bmw_quotes. Skipping.'))