Changeset View
Changeset View
Standalone View
Standalone View
contrib/buildbot/test/test_slackbot.py
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||
# | # | ||||
# Copyright (c) 2019 The Bitcoin ABC developers | # Copyright (c) 2019 The Bitcoin ABC developers | ||||
# Distributed under the MIT software license, see the accompanying | # Distributed under the MIT software license, see the accompanying | ||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | # file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
import test.mocks.slackbot | import test.mocks.slackbot | ||||
import unittest | import unittest | ||||
import mock | import mock | ||||
from slackbot import SlackBot | from slackbot import SlackBot | ||||
def mockSlackBot(): | def mockSlackBot(): | ||||
channels = { | channels = { | ||||
'test': '#test-channel', | "test": "#test-channel", | ||||
} | } | ||||
slackbot = SlackBot(mock.Mock, 'slack-token', channels) | slackbot = SlackBot(mock.Mock, "slack-token", channels) | ||||
return slackbot | return slackbot | ||||
class SlackbotTestCase(unittest.TestCase): | class SlackbotTestCase(unittest.TestCase): | ||||
def setUp(self): | def setUp(self): | ||||
self.slackbot = mockSlackBot() | self.slackbot = mockSlackBot() | ||||
def tearDown(self): | def tearDown(self): | ||||
pass | pass | ||||
def test_postMessage(self): | def test_postMessage(self): | ||||
message = "test message" | message = "test message" | ||||
expectedAssertionMessage = "Invalid channel: Channel must be a user ID or configured with a channel name" | expectedAssertionMessage = ( | ||||
"Invalid channel: Channel must be a user ID or configured with a channel" | |||||
" name" | |||||
) | |||||
self.assertRaisesRegex( | self.assertRaisesRegex( | ||||
AssertionError, | AssertionError, | ||||
expectedAssertionMessage, | expectedAssertionMessage, | ||||
self.slackbot.postMessage, | self.slackbot.postMessage, | ||||
None, | None, | ||||
message) | message, | ||||
) | |||||
self.assertRaisesRegex( | self.assertRaisesRegex( | ||||
AssertionError, | AssertionError, | ||||
expectedAssertionMessage, | expectedAssertionMessage, | ||||
self.slackbot.postMessage, | self.slackbot.postMessage, | ||||
'doesnt-exist', | "doesnt-exist", | ||||
message) | message, | ||||
) | |||||
self.slackbot.postMessage('U1234', message) | self.slackbot.postMessage("U1234", message) | ||||
self.slackbot.client.chat_postMessage.assert_called_with( | self.slackbot.client.chat_postMessage.assert_called_with( | ||||
channel='U1234', text=message) | channel="U1234", text=message | ||||
) | |||||
self.slackbot.postMessage('test', message) | self.slackbot.postMessage("test", message) | ||||
self.slackbot.client.chat_postMessage.assert_called_with( | self.slackbot.client.chat_postMessage.assert_called_with( | ||||
channel='#test-channel', text=message) | channel="#test-channel", text=message | ||||
) | |||||
def test_getUserByName(self): | def test_getUserByName(self): | ||||
user = test.mocks.slackbot.user() | user = test.mocks.slackbot.user() | ||||
self.slackbot.client.users_list.return_value = test.mocks.slackbot.users_list( | self.slackbot.client.users_list.return_value = test.mocks.slackbot.users_list( | ||||
initialUsers=[user]) | initialUsers=[user] | ||||
self.assertIsNone(self.slackbot.getUserByName('Other Name')) | ) | ||||
self.assertEqual(self.slackbot.getUserByName('Real Name'), user) | self.assertIsNone(self.slackbot.getUserByName("Other Name")) | ||||
self.assertEqual(self.slackbot.getUserByName( | self.assertEqual(self.slackbot.getUserByName("Real Name"), user) | ||||
'Real Name Normalized'), user) | self.assertEqual(self.slackbot.getUserByName("Real Name Normalized"), user) | ||||
self.assertEqual(self.slackbot.getUserByName('Display Name'), user) | self.assertEqual(self.slackbot.getUserByName("Display Name"), user) | ||||
self.assertEqual(self.slackbot.getUserByName( | self.assertEqual(self.slackbot.getUserByName("Display Name Normalized"), user) | ||||
'Display Name Normalized'), user) | |||||
def test_formatMentionByName(self): | def test_formatMentionByName(self): | ||||
user = test.mocks.slackbot.user() | user = test.mocks.slackbot.user() | ||||
expectedMention = f"<@{user['id']}>" | expectedMention = f"<@{user['id']}>" | ||||
self.slackbot.client.users_list.return_value = test.mocks.slackbot.users_list( | self.slackbot.client.users_list.return_value = test.mocks.slackbot.users_list( | ||||
initialUsers=[user]) | initialUsers=[user] | ||||
self.assertIsNone(self.slackbot.formatMentionByName('testname')) | ) | ||||
self.assertIsNone(self.slackbot.formatMentionByName("testname")) | |||||
self.assertEqual( | self.assertEqual( | ||||
self.slackbot.formatMentionByName('Real Name'), | self.slackbot.formatMentionByName("Real Name"), expectedMention | ||||
expectedMention) | ) | ||||
self.assertEqual(self.slackbot.formatMentionByName( | |||||
'Real Name Normalized'), expectedMention) | |||||
self.assertEqual( | self.assertEqual( | ||||
self.slackbot.formatMentionByName('Display Name'), | self.slackbot.formatMentionByName("Real Name Normalized"), expectedMention | ||||
expectedMention) | ) | ||||
self.assertEqual(self.slackbot.formatMentionByName( | self.assertEqual( | ||||
'Display Name Normalized'), expectedMention) | self.slackbot.formatMentionByName("Display Name"), expectedMention | ||||
) | |||||
self.assertEqual( | |||||
self.slackbot.formatMentionByName("Display Name Normalized"), | |||||
expectedMention, | |||||
) | |||||
if __name__ == '__main__': | if __name__ == "__main__": | ||||
unittest.main() | unittest.main() |