Ejemplo n.º 1
0
    def test_channel_message_to_zerver_message(self, mock_build_usermessage: mock.Mock) -> None:

        user_data = [{"id": "U066MTL5U", "name": "john doe", "deleted": False, "real_name": "John"},
                     {"id": "U061A5N1G", "name": "jane doe", "deleted": False, "real_name": "Jane"},
                     {"id": "U061A1R2R", "name": "jon", "deleted": False, "real_name": "Jon"}]

        slack_user_id_to_zulip_user_id = {"U066MTL5U": 5, "U061A5N1G": 24, "U061A1R2R": 43}

        reactions = [{"name": "grinning", "users": ["U061A5N1G"], "count": 1}]

        all_messages = [{"text": "<@U066MTL5U> has joined the channel", "subtype": "channel_join",
                         "user": "******", "ts": "1434139102.000002", "channel_name": "random"},
                        {"text": "<@U061A5N1G>: hey!", "user": "******",
                         "ts": "1437868294.000006", "has_image": True, "channel_name": "random"},
                        {"text": "random", "user": "******", "reactions": reactions,
                         "ts": "1439868294.000006", "channel_name": "random"},
                        {"text": "without a user", "user": None,  # this message will be ignored as it has no user
                         "ts": "1239868294.000006", "channel_name": "general"},
                        {"text": "<http://journals.plos.org/plosone/article>", "user": "******",
                         "ts": "1463868370.000008", "channel_name": "general"},
                        {"text": "added bot", "user": "******", "subtype": "bot_add",
                         "ts": "1433868549.000010", "channel_name": "general"},
                        # This message will be ignored since it has no user and file is None.
                        # See #9217 for the situation; likely file uploads on archived channels
                        {'upload': False, 'file': None, 'text': 'A file was shared',
                         'channel_name': 'general', 'type': 'message', 'ts': '1433868549.000011',
                         'subtype': 'file_share'},
                        {"text": "random test", "user": "******",
                         "ts": "1433868669.000012", "channel_name": "general"},
                        {"text": "Hello everyone", "user": "******", "type": "message",
                         "ts": "1433868669.000015", "mpim_name": "mpdm-user9--user2--user10-1"},
                        {"text": "Who is watching the World Cup", "user": "******", "type": "message",
                         "ts": "1433868949.000015", "mpim_name": "mpdm-user6--user7--user4-1"},
                        {'client_msg_id': '998d9229-35aa-424f-8d87-99e00df27dc9', 'type': 'message',
                         'text': 'Who is coming for camping this weekend?', 'user': '******',
                         'ts': '1553607595.000700', 'pm_name': 'DHX1UP7EG'},
                        {"client_msg_id": "998d9229-35aa-424f-8d87-99e00df27dc9", "type": "message",
                         "text": "<@U061A5N1G>: Are you in Kochi?", "user": "******",
                         "ts": "1553607595.000700", "pm_name": "DJ47BL849"}]  # type: List[Dict[str, Any]]

        slack_recipient_name_to_zulip_recipient_id = {'random': 2, 'general': 1, 'mpdm-user9--user2--user10-1': 5,
                                                      'mpdm-user6--user7--user4-1': 6, 'U066MTL5U': 7, 'U061A5N1G': 8,
                                                      'U061A1R2R': 8}
        dm_members = {'DJ47BL849': ('U066MTL5U', 'U061A5N1G'), 'DHX1UP7EG': ('U061A5N1G', 'U061A1R2R')}

        zerver_usermessage = []  # type: List[Dict[str, Any]]
        subscriber_map = dict()  # type: Dict[int, Set[int]]
        added_channels = {'random': ('c5', 1), 'general': ('c6', 2)}  # type: Dict[str, Tuple[str, int]]

        zerver_message, zerver_usermessage, attachment, uploads, reaction = \
            channel_message_to_zerver_message(
                1, user_data, slack_user_id_to_zulip_user_id, slack_recipient_name_to_zulip_recipient_id,
                all_messages, [], subscriber_map, added_channels, dm_members, 'domain', set())
        # functioning already tested in helper function
        self.assertEqual(zerver_usermessage, [])
        # subtype: channel_join is filtered
        self.assertEqual(len(zerver_message), 9)

        self.assertEqual(uploads, [])
        self.assertEqual(attachment, [])

        # Test reactions
        self.assertEqual(reaction[0]['user_profile'], 24)
        self.assertEqual(reaction[0]['emoji_name'], reactions[0]['name'])

        # Message conversion already tested in tests.test_slack_message_conversion
        self.assertEqual(zerver_message[0]['content'], '@**Jane**: hey!')
        self.assertEqual(zerver_message[0]['has_link'], False)
        self.assertEqual(zerver_message[2]['content'], 'http://journals.plos.org/plosone/article')
        self.assertEqual(zerver_message[2]['has_link'], True)
        self.assertEqual(zerver_message[5]['has_link'], False)
        self.assertEqual(zerver_message[7]['has_link'], False)

        self.assertEqual(zerver_message[3][EXPORT_TOPIC_NAME], 'imported from slack')
        self.assertEqual(zerver_message[3]['content'], '/me added bot')
        self.assertEqual(zerver_message[4]['recipient'], slack_recipient_name_to_zulip_recipient_id['general'])
        self.assertEqual(zerver_message[2][EXPORT_TOPIC_NAME], 'imported from slack')
        self.assertEqual(zerver_message[1]['recipient'], slack_recipient_name_to_zulip_recipient_id['random'])
        self.assertEqual(zerver_message[5]['recipient'], slack_recipient_name_to_zulip_recipient_id['mpdm-user9--user2--user10-1'])
        self.assertEqual(zerver_message[6]['recipient'], slack_recipient_name_to_zulip_recipient_id['mpdm-user6--user7--user4-1'])
        self.assertEqual(zerver_message[7]['recipient'], slack_recipient_name_to_zulip_recipient_id['U061A5N1G'])
        self.assertEqual(zerver_message[7]['recipient'], slack_recipient_name_to_zulip_recipient_id['U061A5N1G'])

        self.assertEqual(zerver_message[3]['id'], zerver_message[0]['id'] + 3)
        self.assertEqual(zerver_message[4]['id'], zerver_message[0]['id'] + 4)
        self.assertEqual(zerver_message[5]['id'], zerver_message[0]['id'] + 5)
        self.assertEqual(zerver_message[7]['id'], zerver_message[0]['id'] + 7)

        self.assertIsNone(zerver_message[3]['rendered_content'])
        self.assertEqual(zerver_message[0]['has_image'], False)
        self.assertEqual(zerver_message[0]['date_sent'], float(all_messages[1]['ts']))
        self.assertEqual(zerver_message[2]['rendered_content_version'], 1)

        self.assertEqual(zerver_message[0]['sender'], 43)
        self.assertEqual(zerver_message[3]['sender'], 24)
        self.assertEqual(zerver_message[5]['sender'], 43)
        self.assertEqual(zerver_message[6]['sender'], 24)
        self.assertEqual(zerver_message[7]['sender'], 43)
        self.assertEqual(zerver_message[8]['sender'], 5)
Ejemplo n.º 2
0
    def test_channel_message_to_zerver_message(
            self, mock_build_usermessage: mock.Mock) -> None:

        user_data = [
            {
                "id": "U066MTL5U",
                "name": "john doe",
                "deleted": False,
                "real_name": "John"
            },
            {
                "id": "U061A5N1G",
                "name": "jane doe",
                "deleted": False,
                "real_name": "Jane"
            },
            {
                "id": "U061A1R2R",
                "name": "jon",
                "deleted": False,
                "real_name": "Jon"
            },
        ]

        slack_user_id_to_zulip_user_id = {
            "U066MTL5U": 5,
            "U061A5N1G": 24,
            "U061A1R2R": 43
        }

        reactions = [{"name": "grinning", "users": ["U061A5N1G"], "count": 1}]

        all_messages: List[Dict[str, Any]] = [
            {
                "text": "<@U066MTL5U> has joined the channel",
                "subtype": "channel_join",
                "user": "******",
                "ts": "1434139102.000002",
                "channel_name": "random",
            },
            {
                "text": "<@U061A5N1G>: hey!",
                "user": "******",
                "ts": "1437868294.000006",
                "has_image": True,
                "channel_name": "random",
            },
            {
                "text": "random",
                "user": "******",
                "reactions": reactions,
                "ts": "1439868294.000006",
                "channel_name": "random",
            },
            {
                "text": "without a user",
                "user": None,  # this message will be ignored as it has no user
                "ts": "1239868294.000006",
                "channel_name": "general",
            },
            {
                "text": "<http://journals.plos.org/plosone/article>",
                "user": "******",
                "ts": "1463868370.000008",
                "channel_name": "general",
            },
            {
                "text": "added bot",
                "user": "******",
                "subtype": "bot_add",
                "ts": "1433868549.000010",
                "channel_name": "general",
            },
            # This message will be ignored since it has no user and file is None.
            # See #9217 for the situation; likely file uploads on archived channels
            {
                "upload": False,
                "file": None,
                "text": "A file was shared",
                "channel_name": "general",
                "type": "message",
                "ts": "1433868549.000011",
                "subtype": "file_share",
            },
            {
                "text": "random test",
                "user": "******",
                "ts": "1433868669.000012",
                "channel_name": "general",
            },
            {
                "text": "Hello everyone",
                "user": "******",
                "type": "message",
                "ts": "1433868669.000015",
                "mpim_name": "mpdm-user9--user2--user10-1",
            },
            {
                "text": "Who is watching the World Cup",
                "user": "******",
                "type": "message",
                "ts": "1433868949.000015",
                "mpim_name": "mpdm-user6--user7--user4-1",
            },
            {
                "client_msg_id": "998d9229-35aa-424f-8d87-99e00df27dc9",
                "type": "message",
                "text": "Who is coming for camping this weekend?",
                "user": "******",
                "ts": "1553607595.000700",
                "pm_name": "DHX1UP7EG",
            },
            {
                "client_msg_id": "998d9229-35aa-424f-8d87-99e00df27dc9",
                "type": "message",
                "text": "<@U061A5N1G>: Are you in Kochi?",
                "user": "******",
                "ts": "1553607595.000700",
                "pm_name": "DJ47BL849",
            },
        ]

        slack_recipient_name_to_zulip_recipient_id = {
            "random": 2,
            "general": 1,
            "mpdm-user9--user2--user10-1": 5,
            "mpdm-user6--user7--user4-1": 6,
            "U066MTL5U": 7,
            "U061A5N1G": 8,
            "U061A1R2R": 8,
        }
        dm_members = {
            "DJ47BL849": ("U066MTL5U", "U061A5N1G"),
            "DHX1UP7EG": ("U061A5N1G", "U061A1R2R"),
        }

        zerver_usermessage: List[Dict[str, Any]] = []
        subscriber_map: Dict[int, Set[int]] = {}
        added_channels: Dict[str, Tuple[str, int]] = {
            "random": ("c5", 1),
            "general": ("c6", 2)
        }

        (
            zerver_message,
            zerver_usermessage,
            attachment,
            uploads,
            reaction,
        ) = channel_message_to_zerver_message(
            1,
            user_data,
            slack_user_id_to_zulip_user_id,
            slack_recipient_name_to_zulip_recipient_id,
            all_messages,
            [],
            subscriber_map,
            added_channels,
            dm_members,
            "domain",
            set(),
        )
        # functioning already tested in helper function
        self.assertEqual(zerver_usermessage, [])
        # subtype: channel_join is filtered
        self.assert_length(zerver_message, 9)

        self.assertEqual(uploads, [])
        self.assertEqual(attachment, [])

        # Test reactions
        self.assertEqual(reaction[0]["user_profile"], 24)
        self.assertEqual(reaction[0]["emoji_name"], reactions[0]["name"])

        # Message conversion already tested in tests.test_slack_message_conversion
        self.assertEqual(zerver_message[0]["content"], "@**Jane**: hey!")
        self.assertEqual(zerver_message[0]["has_link"], False)
        self.assertEqual(zerver_message[2]["content"],
                         "http://journals.plos.org/plosone/article")
        self.assertEqual(zerver_message[2]["has_link"], True)
        self.assertEqual(zerver_message[5]["has_link"], False)
        self.assertEqual(zerver_message[7]["has_link"], False)

        self.assertEqual(zerver_message[3][EXPORT_TOPIC_NAME],
                         "imported from Slack")
        self.assertEqual(zerver_message[3]["content"], "/me added bot")
        self.assertEqual(zerver_message[4]["recipient"],
                         slack_recipient_name_to_zulip_recipient_id["general"])
        self.assertEqual(zerver_message[2][EXPORT_TOPIC_NAME],
                         "imported from Slack")
        self.assertEqual(zerver_message[1]["recipient"],
                         slack_recipient_name_to_zulip_recipient_id["random"])
        self.assertEqual(
            zerver_message[5]["recipient"],
            slack_recipient_name_to_zulip_recipient_id[
                "mpdm-user9--user2--user10-1"],
        )
        self.assertEqual(
            zerver_message[6]["recipient"],
            slack_recipient_name_to_zulip_recipient_id[
                "mpdm-user6--user7--user4-1"],
        )
        self.assertEqual(
            zerver_message[7]["recipient"],
            slack_recipient_name_to_zulip_recipient_id["U061A5N1G"])
        self.assertEqual(
            zerver_message[7]["recipient"],
            slack_recipient_name_to_zulip_recipient_id["U061A5N1G"])

        self.assertEqual(zerver_message[3]["id"], zerver_message[0]["id"] + 3)
        self.assertEqual(zerver_message[4]["id"], zerver_message[0]["id"] + 4)
        self.assertEqual(zerver_message[5]["id"], zerver_message[0]["id"] + 5)
        self.assertEqual(zerver_message[7]["id"], zerver_message[0]["id"] + 7)

        self.assertIsNone(zerver_message[3]["rendered_content"])
        self.assertEqual(zerver_message[0]["has_image"], False)
        self.assertEqual(zerver_message[0]["date_sent"],
                         float(all_messages[1]["ts"]))
        self.assertEqual(zerver_message[2]["rendered_content_version"], 1)

        self.assertEqual(zerver_message[0]["sender"], 43)
        self.assertEqual(zerver_message[3]["sender"], 24)
        self.assertEqual(zerver_message[5]["sender"], 43)
        self.assertEqual(zerver_message[6]["sender"], 24)
        self.assertEqual(zerver_message[7]["sender"], 43)
        self.assertEqual(zerver_message[8]["sender"], 5)
Ejemplo n.º 3
0
    def test_channel_message_to_zerver_message(
            self, mock_build_usermessage: mock.Mock) -> None:

        user_data = [{
            "id": "U066MTL5U",
            "name": "john doe",
            "deleted": False,
            "real_name": "John"
        }, {
            "id": "U061A5N1G",
            "name": "jane doe",
            "deleted": False,
            "real_name": "Jane"
        }, {
            "id": "U061A1R2R",
            "name": "jon",
            "deleted": False,
            "real_name": "Jon"
        }]

        added_users = {"U066MTL5U": 5, "U061A5N1G": 24, "U061A1R2R": 43}

        reactions = [{"name": "grinning", "users": ["U061A5N1G"], "count": 1}]

        all_messages = [
            {
                "text": "<@U066MTL5U> has joined the channel",
                "subtype": "channel_join",
                "user": "******",
                "ts": "1434139102.000002",
                "channel_name": "random"
            },
            {
                "text": "<@U061A5N1G>: hey!",
                "user": "******",
                "ts": "1437868294.000006",
                "has_image": True,
                "channel_name": "random"
            },
            {
                "text": "random",
                "user": "******",
                "reactions": reactions,
                "ts": "1439868294.000006",
                "channel_name": "random"
            },
            {
                "text": "without a user",
                "user": None,  # this message will be ignored as it has no user
                "ts": "1239868294.000006",
                "channel_name": "general"
            },
            {
                "text": "<http://journals.plos.org/plosone/article>",
                "user": "******",
                "ts": "1463868370.000008",
                "channel_name": "general"
            },
            {
                "text": "added bot",
                "user": "******",
                "subtype": "bot_add",
                "ts": "1433868549.000010",
                "channel_name": "general"
            },
            # This message will be ignored since it has no user and file is None.
            # See #9217 for the situation; likely file uploads on archived channels
            {
                'upload': False,
                'file': None,
                'text': 'A file was shared',
                'channel_name': 'general',
                'type': 'message',
                'ts': '1433868549.000011',
                'subtype': 'file_share'
            },
            {
                "text": "random test",
                "user": "******",
                "ts": "1433868669.000012",
                "channel_name": "general"
            }
        ]  # type: List[Dict[str, Any]]

        added_recipient = {'random': 2, 'general': 1}

        zerver_usermessage = []  # type: List[Dict[str, Any]]
        subscriber_map = dict()  # type: Dict[int, Set[int]]
        added_channels = {
            'random': ('c5', 1),
            'general': ('c6', 2)
        }  # type: Dict[str, Tuple[str, int]]

        zerver_message, zerver_usermessage, attachment, uploads, reaction = \
            channel_message_to_zerver_message(
                1, user_data, added_users, added_recipient,
                all_messages, [], subscriber_map,
                added_channels, 'domain', set())
        # functioning already tested in helper function
        self.assertEqual(zerver_usermessage, [])
        # subtype: channel_join is filtered
        self.assertEqual(len(zerver_message), 5)

        self.assertEqual(uploads, [])
        self.assertEqual(attachment, [])

        # Test reactions
        self.assertEqual(reaction[0]['user_profile'], 24)
        self.assertEqual(reaction[0]['emoji_name'], reactions[0]['name'])

        # Message conversion already tested in tests.test_slack_message_conversion
        self.assertEqual(zerver_message[0]['content'], '@**Jane**: hey!')
        self.assertEqual(zerver_message[0]['has_link'], False)
        self.assertEqual(zerver_message[2]['content'],
                         'http://journals.plos.org/plosone/article')
        self.assertEqual(zerver_message[2]['has_link'], True)

        self.assertEqual(zerver_message[3][EXPORT_TOPIC_NAME],
                         'imported from slack')
        self.assertEqual(zerver_message[3]['content'], '/me added bot')
        self.assertEqual(zerver_message[4]['recipient'],
                         added_recipient['general'])
        self.assertEqual(zerver_message[2][EXPORT_TOPIC_NAME],
                         'imported from slack')
        self.assertEqual(zerver_message[1]['recipient'],
                         added_recipient['random'])

        self.assertEqual(zerver_message[3]['id'], zerver_message[0]['id'] + 3)
        self.assertEqual(zerver_message[4]['id'], zerver_message[0]['id'] + 4)

        self.assertIsNone(zerver_message[3]['rendered_content'])
        self.assertEqual(zerver_message[0]['has_image'], False)
        self.assertEqual(zerver_message[0]['pub_date'],
                         float(all_messages[1]['ts']))
        self.assertEqual(zerver_message[2]['rendered_content_version'], 1)

        self.assertEqual(zerver_message[0]['sender'], 43)
        self.assertEqual(zerver_message[3]['sender'], 24)
Ejemplo n.º 4
0
    def test_channel_message_to_zerver_message(self, mock_build_usermessage: mock.Mock) -> None:

        user_data = [{"id": "U066MTL5U", "name": "john doe", "deleted": False, "real_name": "John"},
                     {"id": "U061A5N1G", "name": "jane doe", "deleted": False, "real_name": "Jane"},
                     {"id": "U061A1R2R", "name": "jon", "deleted": False, "real_name": "Jon"}]

        added_users = {"U066MTL5U": 5, "U061A5N1G": 24, "U061A1R2R": 43}

        reactions = [{"name": "grinning", "users": ["U061A5N1G"], "count": 1}]

        all_messages = [{"text": "<@U066MTL5U> has joined the channel", "subtype": "channel_join",
                         "user": "******", "ts": "1434139102.000002", "channel_name": "random"},
                        {"text": "<@U061A5N1G>: hey!", "user": "******",
                         "ts": "1437868294.000006", "has_image": True, "channel_name": "random"},
                        {"text": "random", "user": "******", "reactions": reactions,
                         "ts": "1439868294.000006", "channel_name": "random"},
                        {"text": "without a user", "user": None,  # this message will be ignored as it has no user
                         "ts": "1239868294.000006", "channel_name": "general"},
                        {"text": "<http://journals.plos.org/plosone/article>", "user": "******",
                         "ts": "1463868370.000008", "channel_name": "general"},
                        {"text": "added bot", "user": "******", "subtype": "bot_add",
                         "ts": "1433868549.000010", "channel_name": "general"},
                        # This message will be ignored since it has no user and file is None.
                        # See #9217 for the situation; likely file uploads on archived channels
                        {'upload': False, 'file': None, 'text': 'A file was shared',
                         'channel_name': 'general', 'type': 'message', 'ts': '1433868549.000011',
                         'subtype': 'file_share'},
                        {"text": "random test", "user": "******",
                         "ts": "1433868669.000012", "channel_name": "general"}]  # type: List[Dict[str, Any]]

        added_recipient = {'random': 2, 'general': 1}

        zerver_usermessage = []  # type: List[Dict[str, Any]]
        subscriber_map = dict()  # type: Dict[int, Set[int]]
        added_channels = {'random': ('c5', 1), 'general': ('c6', 2)}  # type: Dict[str, Tuple[str, int]]

        zerver_message, zerver_usermessage, attachment, uploads, reaction = \
            channel_message_to_zerver_message(
                1, user_data, added_users, added_recipient,
                all_messages, [], subscriber_map,
                added_channels, 'domain', set())
        # functioning already tested in helper function
        self.assertEqual(zerver_usermessage, [])
        # subtype: channel_join is filtered
        self.assertEqual(len(zerver_message), 5)

        self.assertEqual(uploads, [])
        self.assertEqual(attachment, [])

        # Test reactions
        self.assertEqual(reaction[0]['user_profile'], 24)
        self.assertEqual(reaction[0]['emoji_name'], reactions[0]['name'])

        # Message conversion already tested in tests.test_slack_message_conversion
        self.assertEqual(zerver_message[0]['content'], '@**Jane**: hey!')
        self.assertEqual(zerver_message[0]['has_link'], False)
        self.assertEqual(zerver_message[2]['content'], 'http://journals.plos.org/plosone/article')
        self.assertEqual(zerver_message[2]['has_link'], True)

        self.assertEqual(zerver_message[3][EXPORT_TOPIC_NAME], 'imported from slack')
        self.assertEqual(zerver_message[3]['content'], '/me added bot')
        self.assertEqual(zerver_message[4]['recipient'], added_recipient['general'])
        self.assertEqual(zerver_message[2][EXPORT_TOPIC_NAME], 'imported from slack')
        self.assertEqual(zerver_message[1]['recipient'], added_recipient['random'])

        self.assertEqual(zerver_message[3]['id'], zerver_message[0]['id'] + 3)
        self.assertEqual(zerver_message[4]['id'], zerver_message[0]['id'] + 4)

        self.assertIsNone(zerver_message[3]['rendered_content'])
        self.assertEqual(zerver_message[0]['has_image'], False)
        self.assertEqual(zerver_message[0]['pub_date'], float(all_messages[1]['ts']))
        self.assertEqual(zerver_message[2]['rendered_content_version'], 1)

        self.assertEqual(zerver_message[0]['sender'], 43)
        self.assertEqual(zerver_message[3]['sender'], 24)