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)
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()
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
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)
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
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()
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)
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({})
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})
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))
def hipchat(self, request): h = HipChat(nick='Sarah', jid='test@localhost', password='******', plugins=None, max_workers=4) return h
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
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.'))
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)
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.'))