예제 #1
0
    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)
예제 #2
0
    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)