class TestSendJiraIssueResponse(asynctest.TestCase): def setUp(self): patcher2 = patch( 'charlesbot.slack.slack_connection.SlackConnection.api_call' ) # NOQA self.addCleanup(patcher2.stop) self.mock_api_call = patcher2.start() from charlesbot_jira.jira_helpers import send_jira_issue_response self.send_response = send_jira_issue_response from charlesbot.slack.slack_connection import SlackConnection self.slack_connection = SlackConnection() def tearDown(self): self.slack_connection._drop() def test_send_issue(self): issue = JiraIssue(key="JIRA-9", summary="this is the problem", description="detailed description here") expected_attachment = SlackAttachment( color="#A4ADAD", fallback="JIRA-9: this is the problem", text="detailed description here", mrkdwn_in=['text'], thumb_url= "https://slack.global.ssl.fastly.net/12d4/img/services/jira_48.png", # NOQA title="JIRA-9: this is the problem", title_link="https://jira.atlassian.com/browse/JIRA-9") yield from self.send_response(self.slack_connection, "#work", "https://jira.atlassian.com", issue) expected_call = call( 'chat.postMessage', channel="#work", attachments=expected_attachment, as_user=False, username="******", icon_url= "https://avatars.slack-edge.com/2015-07-31/8502215814_6662f69db3bed43d32e6_48.jpg" # NOQA ) self.assertEqual(self.mock_api_call.mock_calls, [expected_call])
class TestSlackConnectionApiCall(asynctest.TestCase): def setUp(self): self.channel_list_one = load_fixture("channel_list_one.json") self.channel_list_two = load_fixture("channel_list_two.json") self.channel_list_three = load_fixture("channel_list_three.json") self.channel_list_four = load_fixture("channel_list_four.json") from charlesbot.slack.slack_connection import SlackConnection self.slack = SlackConnection() self.slack.initialized = True self.slack.sc = MagicMock() def tearDown(self): self.slack._drop() def test_slack_rtm_api_call_ok(self): channel_list = self.channel_list_one.encode("utf8") self.slack.sc.api_call.return_value = channel_list val = yield from self.slack.api_call("fake_endpoint") self.assertEqual(json.loads(val), json.loads(channel_list.decode("utf-8"))) def test_slack_rtm_api_call_not_ok(self): channel_list = self.channel_list_two.encode("utf8") self.slack.sc.api_call.return_value = channel_list val = yield from self.slack.api_call("fake_endpoint") self.assertEqual(json.loads(val), "{}") def test_slack_rtm_api_call_not_encoded_utf8(self): channel_list = self.channel_list_three self.slack.sc.api_call.return_value = channel_list with self.assertRaises(AttributeError): yield from self.slack.api_call("fake_endpoint") def test_slack_rtm_api_call_malformed_json(self): channel_list = self.channel_list_four.encode("utf8") self.slack.sc.api_call.return_value = channel_list with self.assertRaises(ValueError): yield from self.slack.api_call("fake_endpoint")
class TestSlackUser(asynctest.TestCase): def setUp(self): patcher1 = patch( 'charlesbot.slack.slack_connection.SlackConnection.api_call' ) # NOQA self.addCleanup(patcher1.stop) self.mock_api_call = patcher1.start() from charlesbot.slack.slack_connection import SlackConnection self.slack_connection = SlackConnection() from charlesbot.slack.slack_user import SlackUser self.su = SlackUser() def tearDown(self): self.slack_connection._drop() @asynctest.ignore_loop def test_user_equality(self): from charlesbot.slack.slack_user import SlackUser user1 = SlackUser(id="SU01", name="userone", color="red") user2 = SlackUser(id="SU02", name="usertwo", color="blue") self.assertNotEqual(user1, user2) user2.id = "SU01" self.assertNotEqual(user1, user2) user2.name = "userone" self.assertNotEqual(user1, user2) user2.color = "red" self.assertEqual(user1, user2) @asynctest.ignore_loop def test_user_return_string(self): self.su.id = "SU01" self.su.name = "User One" self.su.deleted = False self.su.is_admin = False self.su.has_2fa = True user_json = json.loads(str(self.su)) self.assertEqual(user_json.get('id'), "SU01") self.assertEqual(user_json.get('name'), "User One") self.assertEqual(user_json.get('deleted'), False) self.assertEqual(user_json.get('is_admin'), False) self.assertEqual(user_json.get('has_2fa'), True) self.assertEqual(user_json.get('is_owner'), "") def test_empty_slack_response(self): self.su.name = "suser" self.mock_api_call.side_effect = ["{}"] yield from self.su.retrieve_slack_user_info(self.slack_connection, "fake123") expected_call = call("users.info", user="******") self.assertEqual(self.mock_api_call.mock_calls, [expected_call]), self.assertEqual(self.su.name, "suser") self.assertEqual(self.su.last_name, "") self.assertEqual(self.su.is_bot, "") def test_no_profile_key(self): self.su.name = "suser" user_info = {"ok": True, "user": {"id": "U023BECGF", "name": "bobby"}} self.mock_api_call.side_effect = [json.dumps(user_info)] yield from self.su.retrieve_slack_user_info(self.slack_connection, "fake123") expected_call = call("users.info", user="******") self.assertEqual(self.mock_api_call.mock_calls, [expected_call]), self.assertEqual(self.su.name, "bobby") self.assertEqual(self.su.id, "U023BECGF") self.assertEqual(self.su.last_name, "") self.assertEqual(self.su.is_bot, "") def test_with_profile_key(self): self.su.name = "suser" user_info = { "ok": True, "user": { "id": "U023BECGF", "name": "bobby", "profile": { "real_name": "Bobby Tables", "image_24": "https://www.tables.com", } } } self.mock_api_call.side_effect = [json.dumps(user_info)] yield from self.su.retrieve_slack_user_info(self.slack_connection, "fake123") expected_call = call("users.info", user="******") self.assertEqual(self.mock_api_call.mock_calls, [expected_call]), self.assertEqual(self.su.name, "bobby") self.assertEqual(self.su.id, "U023BECGF") self.assertEqual(self.su.real_name, "Bobby Tables") self.assertEqual(self.su.image_24, "https://www.tables.com") self.assertEqual(self.su.is_bot, "")
class TestSlackUser(asynctest.TestCase): def setUp(self): patcher1 = patch('charlesbot.slack.slack_connection.SlackConnection.api_call') # NOQA self.addCleanup(patcher1.stop) self.mock_api_call = patcher1.start() from charlesbot.slack.slack_connection import SlackConnection self.slack_connection = SlackConnection() from charlesbot.slack.slack_user import SlackUser self.su = SlackUser() def tearDown(self): self.slack_connection._drop() @asynctest.ignore_loop def test_user_equality(self): from charlesbot.slack.slack_user import SlackUser user1 = SlackUser(id="SU01", name="userone", color="red") user2 = SlackUser(id="SU02", name="usertwo", color="blue") self.assertNotEqual(user1, user2) user2.id = "SU01" self.assertNotEqual(user1, user2) user2.name = "userone" self.assertNotEqual(user1, user2) user2.color = "red" self.assertEqual(user1, user2) @asynctest.ignore_loop def test_user_return_string(self): self.su.id = "SU01" self.su.name = "User One" self.su.deleted = False self.su.is_admin = False self.su.has_2fa = True user_json = json.loads(str(self.su)) self.assertEqual(user_json.get('id'), "SU01") self.assertEqual(user_json.get('name'), "User One") self.assertEqual(user_json.get('deleted'), False) self.assertEqual(user_json.get('is_admin'), False) self.assertEqual(user_json.get('has_2fa'), True) self.assertEqual(user_json.get('is_owner'), "") def test_empty_slack_response(self): self.su.name = "suser" self.mock_api_call.side_effect = ["{}"] yield from self.su.retrieve_slack_user_info(self.slack_connection, "fake123") expected_call = call("users.info", user="******") self.assertEqual(self.mock_api_call.mock_calls, [expected_call]), self.assertEqual(self.su.name, "suser") self.assertEqual(self.su.last_name, "") self.assertEqual(self.su.is_bot, "") def test_no_profile_key(self): self.su.name = "suser" user_info = { "ok": True, "user": { "id": "U023BECGF", "name": "bobby" } } self.mock_api_call.side_effect = [json.dumps(user_info)] yield from self.su.retrieve_slack_user_info(self.slack_connection, "fake123") expected_call = call("users.info", user="******") self.assertEqual(self.mock_api_call.mock_calls, [expected_call]), self.assertEqual(self.su.name, "bobby") self.assertEqual(self.su.id, "U023BECGF") self.assertEqual(self.su.last_name, "") self.assertEqual(self.su.is_bot, "") def test_with_profile_key(self): self.su.name = "suser" user_info = { "ok": True, "user": { "id": "U023BECGF", "name": "bobby", "profile": { "real_name": "Bobby Tables", "image_24": "https://www.tables.com", } } } self.mock_api_call.side_effect = [json.dumps(user_info)] yield from self.su.retrieve_slack_user_info(self.slack_connection, "fake123") expected_call = call("users.info", user="******") self.assertEqual(self.mock_api_call.mock_calls, [expected_call]), self.assertEqual(self.su.name, "bobby") self.assertEqual(self.su.id, "U023BECGF") self.assertEqual(self.su.real_name, "Bobby Tables") self.assertEqual(self.su.image_24, "https://www.tables.com") self.assertEqual(self.su.is_bot, "")