示例#1
0
    def test_channels_to_zerver_stream(self,
                                       mock_get_data_file: mock.Mock) -> None:

        added_users = {
            "U061A1R2R": 1,
            "U061A3E0G": 8,
            "U061A5N1G": 7,
            "U064KUGRJ": 5
        }
        zerver_userprofile = [{'id': 1}, {'id': 8}, {'id': 7}, {'id': 5}]
        realm_id = 3

        channel_data = [{
            'id': "C061A0WJG",
            'name': 'random',
            'created': '1433558319',
            'is_general': False,
            'members': ['U061A1R2R', 'U061A5N1G'],
            'is_archived': True,
            'topic': {
                'value': 'random'
            },
            'purpose': {
                'value': 'no purpose'
            }
        }, {
            'id': "C061A0YJG",
            'name': 'general',
            'created': '1433559319',
            'is_general': False,
            'is_archived': False,
            'members': ['U061A1R2R', 'U061A5N1G', 'U064KUGRJ'],
            'topic': {
                'value': 'general'
            },
            'purpose': {
                'value': 'general'
            }
        }, {
            'id': "C061A0YJP",
            'name': 'general1',
            'created': '1433559319',
            'is_general': False,
            'is_archived': False,
            'members': ['U061A1R2R'],
            'topic': {
                'value': 'general channel'
            },
            'purpose': {
                'value': 'For everyone'
            }
        }, {
            'id': "C061A0HJG",
            'name': 'feedback',
            'created': '1433558359',
            'is_general': False,
            'members': ['U061A3E0G'],
            'is_archived': False,
            'topic': {
                'value': ''
            },
            'purpose': {
                'value': ''
            }
        }]
        mock_get_data_file.return_value = channel_data

        channel_to_zerver_stream_output = channels_to_zerver_stream(
            './random_path', realm_id, added_users, zerver_userprofile)
        zerver_defaultstream = channel_to_zerver_stream_output[0]
        zerver_stream = channel_to_zerver_stream_output[1]
        added_channels = channel_to_zerver_stream_output[2]
        zerver_subscription = channel_to_zerver_stream_output[3]
        zerver_recipient = channel_to_zerver_stream_output[4]
        added_recipient = channel_to_zerver_stream_output[5]

        test_added_channels = {
            'feedback': ("C061A0HJG", 3),
            'general': ("C061A0YJG", 1),
            'general1': ("C061A0YJP", 2),
            'random': ("C061A0WJG", 0)
        }
        test_added_recipient = {
            'feedback': 3,
            'general': 1,
            'general1': 2,
            'random': 0
        }

        # zerver defaultstream already tested in helper functions
        self.assertEqual(zerver_defaultstream, [{
            'id': 0,
            'realm': 3,
            'stream': 0
        }, {
            'id': 1,
            'realm': 3,
            'stream': 1
        }])

        self.assertDictEqual(test_added_channels, added_channels)
        self.assertDictEqual(test_added_recipient, added_recipient)

        # functioning of zerver subscriptions are already tested in the helper functions
        # This is to check the concatenation of the output lists from the helper functions
        # subscriptions for stream
        self.assertEqual(zerver_subscription[3]['recipient'], 1)
        self.assertEqual(zerver_subscription[5]['recipient'], 2)
        # subscription for users
        self.assertEqual(zerver_subscription[6]['recipient'], 3)
        self.assertEqual(zerver_subscription[7]['user_profile'], 1)

        # recipients for stream
        self.assertEqual(zerver_recipient[1]['id'],
                         zerver_subscription[3]['recipient'])
        self.assertEqual(zerver_recipient[2]['type_id'],
                         zerver_stream[2]['id'])
        self.assertEqual(zerver_recipient[0]['type'], 2)
        # recipients for users (already tested in helped function)
        self.assertEqual(zerver_recipient[3]['type'], 2)
        self.assertEqual(zerver_recipient[4]['type'], 1)

        # stream mapping
        self.assertEqual(zerver_stream[0]['name'], channel_data[0]['name'])
        self.assertEqual(zerver_stream[0]['deactivated'],
                         channel_data[0]['is_archived'])
        self.assertEqual(zerver_stream[0]['description'], 'no purpose')
        self.assertEqual(zerver_stream[0]['invite_only'], False)
        self.assertEqual(zerver_stream[0]['realm'], realm_id)
        self.assertEqual(zerver_stream[2]['id'],
                         test_added_channels[zerver_stream[2]['name']][1])
示例#2
0
    def test_channels_to_zerver_stream(self) -> None:
        slack_user_id_to_zulip_user_id = {
            "U061A1R2R": 1,
            "U061A3E0G": 8,
            "U061A5N1G": 7,
            "U064KUGRJ": 5
        }
        zerver_userprofile = [{'id': 1}, {'id': 8}, {'id': 7}, {'id': 5}]
        realm_id = 3

        realm, added_channels, added_mpims, dm_members, slack_recipient_name_to_zulip_recipient_id = \
            channels_to_zerver_stream(self.fixture_file_name("", "slack_fixtures"), realm_id,
                                      {"zerver_userpresence": []}, slack_user_id_to_zulip_user_id,
                                      zerver_userprofile)

        test_added_channels = {
            'sharedchannel': ("C061A0HJG", 3),
            'general': ("C061A0YJG", 1),
            'general1': ("C061A0YJP", 2),
            'random': ("C061A0WJG", 0)
        }
        test_added_mpims = {
            'mpdm-user9--user2--user10-1': ('G9HBG2A5D', 0),
            'mpdm-user6--user7--user4-1': ('G6H1Z0ZPS', 1),
            'mpdm-user4--user1--user5-1': ('G6N944JPL', 2)
        }
        test_dm_members = {
            'DJ47BL849': ('U061A1R2R', 'U061A5N1G'),
            'DHX1UP7EG': ('U061A5N1G', 'U064KUGRJ'),
            'DK8HSJDHS': ('U061A1R2R', 'U064KUGRJ'),
            'DRS3PSLDK': ('U064KUGRJ', 'U064KUGRJ')
        }
        slack_recipient_names = set(slack_user_id_to_zulip_user_id.keys()) | set(test_added_channels.keys()) \
            | set(test_added_mpims.keys())

        self.assertDictEqual(test_added_channels, added_channels)
        # zerver defaultstream already tested in helper functions
        self.assertEqual(realm["zerver_defaultstream"], [{
            'id': 0,
            'realm': 3,
            'stream': 0
        }, {
            'id': 1,
            'realm': 3,
            'stream': 1
        }])

        self.assertDictEqual(test_added_mpims, added_mpims)
        self.assertDictEqual(test_dm_members, dm_members)

        # We can't do an assertDictEqual since during the construction of Personal
        # recipients, slack_user_id_to_zulip_user_id are iterated in diffrent order in Python 3.5 and 3.6.
        self.assertEqual(
            set(slack_recipient_name_to_zulip_recipient_id.keys()),
            slack_recipient_names)
        self.assertEqual(
            set(slack_recipient_name_to_zulip_recipient_id.values()),
            set(i for i in range(11)))

        # functioning of zerver subscriptions are already tested in the helper functions
        # This is to check the concatenation of the output lists from the helper functions
        # subscriptions for stream
        zerver_subscription = realm["zerver_subscription"]
        zerver_recipient = realm["zerver_recipient"]
        zerver_stream = realm["zerver_stream"]

        self.assertEqual(self.get_set(zerver_subscription, "recipient"),
                         {i
                          for i in range(11)})
        self.assertEqual(self.get_set(zerver_subscription, "user_profile"),
                         {1, 5, 7, 8})

        self.assertEqual(self.get_set(zerver_recipient, "id"),
                         self.get_set(zerver_subscription, "recipient"))
        self.assertEqual(self.get_set(zerver_recipient, "type_id"),
                         {0, 1, 2, 3, 5, 7, 8})
        self.assertEqual(self.get_set(zerver_recipient, "type"), {1, 2, 3})

        # stream mapping
        self.assertEqual(zerver_stream[0]['name'], "random")
        self.assertEqual(zerver_stream[0]['deactivated'], True)
        self.assertEqual(zerver_stream[0]['description'], 'no purpose')
        self.assertEqual(zerver_stream[0]['invite_only'], False)
        self.assertEqual(zerver_stream[0]['realm'], realm_id)
        self.assertEqual(zerver_stream[2]['id'],
                         test_added_channels[zerver_stream[2]['name']][1])

        self.assertEqual(self.get_set(realm["zerver_huddle"], "id"), {0, 1, 2})
        self.assertEqual(realm["zerver_userpresence"], [])
示例#3
0
    def test_channels_to_zerver_stream(self, mock_get_data_file: mock.Mock) -> None:

        added_users = {"U061A1R2R": 1, "U061A3E0G": 8, "U061A5N1G": 7, "U064KUGRJ": 5}
        zerver_userprofile = [{'id': 1}, {'id': 8}, {'id': 7}, {'id': 5}]
        realm_id = 3

        channel_data = [{'id': "C061A0WJG", 'name': 'random', 'created': '1433558319',
                         'is_general': False, 'members': ['U061A1R2R', 'U061A5N1G'],
                         'is_archived': True, 'topic': {'value': 'random'},
                         'purpose': {'value': 'no purpose'}},
                        {'id': "C061A0YJG", 'name': 'general', 'created': '1433559319',
                         'is_general': False, 'is_archived': False,
                         'members': ['U061A1R2R', 'U061A5N1G', 'U064KUGRJ'],
                         'topic': {'value': 'general'}, 'purpose': {'value': 'general'}},
                        {'id': "C061A0YJP", 'name': 'general1', 'created': '1433559319',
                         'is_general': False, 'is_archived': False,
                         'members': ['U061A1R2R'],
                         'topic': {'value': 'general channel'}, 'purpose': {'value': 'For everyone'}},
                        {'id': "C061A0HJG", 'name': 'feedback', 'created': '1433558359',
                         'is_general': False, 'members': ['U061A3E0G'], 'is_archived': False,
                         'topic': {'value': ''}, 'purpose': {'value': ''}}]
        mock_get_data_file.return_value = channel_data

        channel_to_zerver_stream_output = channels_to_zerver_stream('./random_path', realm_id, added_users,
                                                                    zerver_userprofile)
        zerver_defaultstream = channel_to_zerver_stream_output[0]
        zerver_stream = channel_to_zerver_stream_output[1]
        added_channels = channel_to_zerver_stream_output[2]
        zerver_subscription = channel_to_zerver_stream_output[3]
        zerver_recipient = channel_to_zerver_stream_output[4]
        added_recipient = channel_to_zerver_stream_output[5]

        test_added_channels = {'feedback': ("C061A0HJG", 3), 'general': ("C061A0YJG", 1),
                               'general1': ("C061A0YJP", 2), 'random': ("C061A0WJG", 0)}
        test_added_recipient = {'feedback': 3, 'general': 1, 'general1': 2, 'random': 0}

        # zerver defaultstream already tested in helper functions
        self.assertEqual(zerver_defaultstream, [{'id': 0, 'realm': 3, 'stream': 0},
                                                {'id': 1, 'realm': 3, 'stream': 1}])

        self.assertDictEqual(test_added_channels, added_channels)
        self.assertDictEqual(test_added_recipient, added_recipient)

        # functioning of zerver subscriptions are already tested in the helper functions
        # This is to check the concatenation of the output lists from the helper functions
        # subscriptions for stream
        self.assertEqual(zerver_subscription[3]['recipient'], 1)
        self.assertEqual(zerver_subscription[5]['recipient'], 2)
        # subscription for users
        self.assertEqual(zerver_subscription[6]['recipient'], 3)
        self.assertEqual(zerver_subscription[7]['user_profile'], 1)

        # recipients for stream
        self.assertEqual(zerver_recipient[1]['id'], zerver_subscription[3]['recipient'])
        self.assertEqual(zerver_recipient[2]['type_id'], zerver_stream[2]['id'])
        self.assertEqual(zerver_recipient[0]['type'], 2)
        # recipients for users (already tested in helped function)
        self.assertEqual(zerver_recipient[3]['type'], 2)
        self.assertEqual(zerver_recipient[4]['type'], 1)

        # stream mapping
        self.assertEqual(zerver_stream[0]['name'], channel_data[0]['name'])
        self.assertEqual(zerver_stream[0]['deactivated'], channel_data[0]['is_archived'])
        self.assertEqual(zerver_stream[0]['description'], 'no purpose')
        self.assertEqual(zerver_stream[0]['invite_only'], False)
        self.assertEqual(zerver_stream[0]['realm'], realm_id)
        self.assertEqual(zerver_stream[2]['id'],
                         test_added_channels[zerver_stream[2]['name']][1])
示例#4
0
    def test_channels_to_zerver_stream(self) -> None:
        slack_user_id_to_zulip_user_id = {
            "U061A1R2R": 1,
            "U061A3E0G": 8,
            "U061A5N1G": 7,
            "U064KUGRJ": 5,
        }
        zerver_userprofile = [{"id": 1}, {"id": 8}, {"id": 7}, {"id": 5}]
        realm_id = 3

        with self.assertLogs(level="INFO"):
            (
                realm,
                added_channels,
                added_mpims,
                dm_members,
                slack_recipient_name_to_zulip_recipient_id,
            ) = channels_to_zerver_stream(
                self.fixture_file_name("", "slack_fixtures"),
                realm_id,
                {"zerver_userpresence": []},
                slack_user_id_to_zulip_user_id,
                zerver_userprofile,
            )

        test_added_channels = {
            "sharedchannel": ("C061A0HJG", 3),
            "general": ("C061A0YJG", 1),
            "general1": ("C061A0YJP", 2),
            "random": ("C061A0WJG", 0),
        }
        test_added_mpims = {
            "mpdm-user9--user2--user10-1": ("G9HBG2A5D", 0),
            "mpdm-user6--user7--user4-1": ("G6H1Z0ZPS", 1),
            "mpdm-user4--user1--user5-1": ("G6N944JPL", 2),
        }
        test_dm_members = {
            "DJ47BL849": ("U061A1R2R", "U061A5N1G"),
            "DHX1UP7EG": ("U061A5N1G", "U064KUGRJ"),
            "DK8HSJDHS": ("U061A1R2R", "U064KUGRJ"),
            "DRS3PSLDK": ("U064KUGRJ", "U064KUGRJ"),
        }
        slack_recipient_names = (set(slack_user_id_to_zulip_user_id.keys())
                                 | set(test_added_channels.keys())
                                 | set(test_added_mpims.keys()))

        self.assertDictEqual(test_added_channels, added_channels)
        # zerver defaultstream already tested in helper functions.
        # Note that the `random` stream is archived and thus should
        # not be created as a DefaultStream.
        self.assertEqual(realm["zerver_defaultstream"], [{
            "id": 0,
            "realm": 3,
            "stream": 1
        }])

        self.assertDictEqual(test_added_mpims, added_mpims)
        self.assertDictEqual(test_dm_members, dm_members)

        # We can't do an assertDictEqual since during the construction of personal
        # recipients, slack_user_id_to_zulip_user_id are iterated in different order in Python 3.5 and 3.6.
        self.assertEqual(
            set(slack_recipient_name_to_zulip_recipient_id.keys()),
            slack_recipient_names)
        self.assertEqual(
            set(slack_recipient_name_to_zulip_recipient_id.values()),
            set(range(11)))

        # functioning of zerver subscriptions are already tested in the helper functions
        # This is to check the concatenation of the output lists from the helper functions
        # subscriptions for stream
        zerver_subscription = realm["zerver_subscription"]
        zerver_recipient = realm["zerver_recipient"]
        zerver_stream = realm["zerver_stream"]

        self.assertEqual(self.get_set(zerver_subscription, "recipient"),
                         set(range(11)))
        self.assertEqual(self.get_set(zerver_subscription, "user_profile"),
                         {1, 5, 7, 8})

        self.assertEqual(self.get_set(zerver_recipient, "id"),
                         self.get_set(zerver_subscription, "recipient"))
        self.assertEqual(self.get_set(zerver_recipient, "type_id"),
                         {0, 1, 2, 3, 5, 7, 8})
        self.assertEqual(self.get_set(zerver_recipient, "type"), {1, 2, 3})

        # stream mapping
        self.assertEqual(zerver_stream[0]["name"], "random")
        self.assertEqual(zerver_stream[0]["deactivated"], True)
        self.assertEqual(zerver_stream[0]["description"], "no purpose")
        self.assertEqual(zerver_stream[0]["invite_only"], False)
        self.assertEqual(zerver_stream[0]["realm"], realm_id)
        self.assertEqual(zerver_stream[2]["id"],
                         test_added_channels[zerver_stream[2]["name"]][1])

        self.assertEqual(self.get_set(realm["zerver_huddle"], "id"), {0, 1, 2})
        self.assertEqual(realm["zerver_userpresence"], [])
示例#5
0
    def test_channels_to_zerver_stream(self) -> None:
        added_users = {
            "U061A1R2R": 1,
            "U061A3E0G": 8,
            "U061A5N1G": 7,
            "U064KUGRJ": 5
        }
        zerver_userprofile = [{'id': 1}, {'id': 8}, {'id': 7}, {'id': 5}]
        realm_id = 3

        channel_to_zerver_stream_output = channels_to_zerver_stream(
            self.fixture_file_name("", "slack_fixtures"), realm_id,
            added_users, zerver_userprofile)

        zerver_defaultstream = channel_to_zerver_stream_output[0]
        zerver_stream = channel_to_zerver_stream_output[1]
        zerver_huddle = channel_to_zerver_stream_output[2]
        added_channels = channel_to_zerver_stream_output[3]
        added_mpims = channel_to_zerver_stream_output[4]
        zerver_subscription = channel_to_zerver_stream_output[5]
        zerver_recipient = channel_to_zerver_stream_output[6]
        added_recipient = channel_to_zerver_stream_output[7]

        test_added_channels = {
            'feedback': ("C061A0HJG", 3),
            'general': ("C061A0YJG", 1),
            'general1': ("C061A0YJP", 2),
            'random': ("C061A0WJG", 0)
        }
        test_added_mpims = {
            'mpdm-user9--user2--user10-1': ('G9HBG2A5D', 0),
            'mpdm-user6--user7--user4-1': ('G6H1Z0ZPS', 1),
            'mpdm-user4--user1--user5-1': ('G6N944JPL', 2)
        }
        test_added_recipient = {
            'feedback': 3,
            'general': 1,
            'general1': 2,
            'random': 0,
            'mpdm-user9--user2--user10-1': 4,
            'mpdm-user6--user7--user4-1': 5,
            'mpdm-user4--user1--user5-1': 6
        }

        # zerver defaultstream already tested in helper functions
        self.assertEqual(zerver_defaultstream, [{
            'id': 0,
            'realm': 3,
            'stream': 0
        }, {
            'id': 1,
            'realm': 3,
            'stream': 1
        }])

        self.assertDictEqual(test_added_channels, added_channels)
        self.assertDictEqual(test_added_mpims, added_mpims)
        self.assertDictEqual(test_added_recipient, added_recipient)

        # functioning of zerver subscriptions are already tested in the helper functions
        # This is to check the concatenation of the output lists from the helper functions
        # subscriptions for stream
        self.assertEqual(self.get_set(zerver_subscription, "recipient"),
                         {i
                          for i in range(11)})
        self.assertEqual(self.get_set(zerver_subscription, "user_profile"),
                         {1, 5, 7, 8})

        self.assertEqual(self.get_set(zerver_recipient, "id"),
                         self.get_set(zerver_subscription, "recipient"))
        self.assertEqual(self.get_set(zerver_recipient, "type_id"),
                         {0, 1, 2, 3, 5, 7, 8})
        self.assertEqual(self.get_set(zerver_recipient, "type"), {1, 2, 3})

        # stream mapping
        self.assertEqual(zerver_stream[0]['name'], "random")
        self.assertEqual(zerver_stream[0]['deactivated'], True)
        self.assertEqual(zerver_stream[0]['description'], 'no purpose')
        self.assertEqual(zerver_stream[0]['invite_only'], False)
        self.assertEqual(zerver_stream[0]['realm'], realm_id)
        self.assertEqual(zerver_stream[2]['id'],
                         test_added_channels[zerver_stream[2]['name']][1])

        self.assertEqual(self.get_set(zerver_huddle, "id"), {0, 1, 2})