def test_fetch_shared_channel_users( self, messages_mock: mock.Mock, api_mock: mock.Mock, data_file_mock: mock.Mock ) -> None: users = [{"id": "U061A1R2R"}, {"id": "U061A5N1G"}, {"id": "U064KUGRJ"}] data_file_mock.side_effect = [ [ {"name": "general", "members": ["U061A1R2R", "U061A5N1G"]}, {"name": "sharedchannel", "members": ["U061A1R2R", "U061A3E0G"]}, ], [], ] api_mock.side_effect = [ {"id": "U061A3E0G", "team_id": "T6LARQE2Z"}, {"domain": "foreignteam1"}, {"id": "U061A8H1G", "team_id": "T7KJRQE8Y"}, {"domain": "foreignteam2"}, ] messages_mock.return_value = [ {"user": "******"}, {"user": "******"}, {"user": "******"}, ] slack_data_dir = self.fixture_file_name("", type="slack_fixtures") fetch_shared_channel_users(users, slack_data_dir, "token") # Normal users self.assertEqual(len(users), 5) self.assertEqual(users[0]["id"], "U061A1R2R") self.assertEqual(users[0]["is_mirror_dummy"], False) self.assertFalse("team_domain" in users[0]) self.assertEqual(users[1]["id"], "U061A5N1G") self.assertEqual(users[2]["id"], "U064KUGRJ") # Shared channel users self.assertEqual(users[3]["id"], "U061A3E0G") self.assertEqual(users[3]["team_domain"], "foreignteam1") self.assertEqual(users[3]["is_mirror_dummy"], True) self.assertEqual(users[4]["id"], "U061A8H1G") self.assertEqual(users[4]["team_domain"], "foreignteam2") self.assertEqual(users[4]["is_mirror_dummy"], True) api_calls = [ call("https://slack.com/api/users.info", "user", token="token", user="******"), call("https://slack.com/api/team.info", "team", token="token", team="T6LARQE2Z"), call("https://slack.com/api/users.info", "user", token="token", user="******"), call("https://slack.com/api/team.info", "team", token="token", team="T7KJRQE8Y"), ] api_mock.assert_has_calls(api_calls, any_order=True)
def test_fetch_shared_channel_users( self, messages_mock: mock.Mock, data_file_mock: mock.Mock ) -> None: users = [{"id": "U061A1R2R"}, {"id": "U061A5N1G"}, {"id": "U064KUGRJ"}] data_file_mock.side_effect = [ [ {"name": "general", "members": ["U061A1R2R", "U061A5N1G"]}, {"name": "sharedchannel", "members": ["U061A1R2R", "U061A3E0G"]}, ], [], ] messages_mock.return_value = [ {"user": "******"}, {"user": "******"}, {"user": "******"}, ] # Users info slack_users_info_url = "https://slack.com/api/users.info" responses.add_callback(responses.GET, slack_users_info_url, callback=request_callback) # Team info slack_team_info_url = "https://slack.com/api/team.info" responses.add_callback(responses.GET, slack_team_info_url, callback=request_callback) slack_data_dir = self.fixture_file_name("", type="slack_fixtures") fetch_shared_channel_users(users, slack_data_dir, "xoxp-valid-token") # Normal users self.assert_length(users, 5) self.assertEqual(users[0]["id"], "U061A1R2R") self.assertEqual(users[0]["is_mirror_dummy"], False) self.assertFalse("team_domain" in users[0]) self.assertEqual(users[1]["id"], "U061A5N1G") self.assertEqual(users[2]["id"], "U064KUGRJ") # Shared channel users # We need to do this because the outcome order of `users` list is # not deterministic. fourth_fifth = [users[3], users[4]] fourth_fifth.sort(key=lambda x: x["id"]) self.assertEqual(fourth_fifth[0]["id"], "U061A3E0G") self.assertEqual(fourth_fifth[0]["team_domain"], "foreignteam1") self.assertEqual(fourth_fifth[0]["is_mirror_dummy"], True) self.assertEqual(fourth_fifth[1]["id"], "U061A8H1G") self.assertEqual(fourth_fifth[1]["team_domain"], "foreignteam2") self.assertEqual(fourth_fifth[1]["is_mirror_dummy"], True)