예제 #1
0
    def test_channel_message_to_zerver_message(self, mock_build_zerver_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}

        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": "******",
                         "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": "test message 2", "user": "******",
                         "ts": "1433868549.000010", "channel_name": "general"},
                        {"text": "random test", "user": "******",
                         "ts": "1433868669.000012", "channel_name": "general"}]  # type: List[Dict[str, Any]]

        added_recipient = {'random': 2, 'general': 1}
        ids = [[3, 4, 5, 6, 7], [], []]

        zerver_usermessage = []  # type: List[Dict[str, Any]]
        zerver_subscription = []  # type: List[Dict[str, Any]]
        zerver_message, zerver_usermessage, attachment, uploads = channel_message_to_zerver_message(
            1, user_data, added_users, added_recipient, all_messages, zerver_subscription,
            'domain', ids)
        # 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, [])

        # 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]['subject'], 'imported from slack')
        self.assertEqual(zerver_message[4]['recipient'], added_recipient['general'])
        self.assertEqual(zerver_message[2]['subject'], 'imported from slack')
        self.assertEqual(zerver_message[1]['recipient'], added_recipient['random'])

        self.assertEqual(zerver_message[1]['id'], 4)
        self.assertEqual(zerver_message[4]['id'], 7)

        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)
예제 #2
0
    def test_channel_message_to_zerver_message(self, mock_build_zerver_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}

        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": "******",
                         "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": "test message 2", "user": "******",
                         "ts": "1433868549.000010", "channel_name": "general"},
                        {"text": "random test", "user": "******",
                         "ts": "1433868669.000012", "channel_name": "general"}]  # type: List[Dict[str, Any]]

        added_recipient = {'random': 2, 'general': 1}
        ids = [[3, 4, 5, 6, 7], []]

        zerver_usermessage = []  # type: List[Dict[str, Any]]
        zerver_subscription = []  # type: List[Dict[str, Any]]
        zerver_message, zerver_usermessage = channel_message_to_zerver_message(1, user_data, added_users,
                                                                               added_recipient,
                                                                               all_messages,
                                                                               zerver_subscription, ids)
        # functioning already tested in helper function
        self.assertEqual(zerver_usermessage, [])
        # subtype: channel_join is filtered
        self.assertEqual(len(zerver_message), 5)

        # 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]['subject'], 'from slack')
        self.assertEqual(zerver_message[4]['recipient'], added_recipient['general'])
        self.assertEqual(zerver_message[2]['subject'], 'from slack')
        self.assertEqual(zerver_message[1]['recipient'], added_recipient['random'])

        self.assertEqual(zerver_message[1]['id'], 4)
        self.assertEqual(zerver_message[4]['id'], 7)

        self.assertIsNone(zerver_message[3]['rendered_content'])
        self.assertEqual(zerver_message[0]['has_image'], all_messages[1]['has_image'])
        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)
예제 #3
0
    def test_channel_message_to_zerver_message(
            self, mock_build_zerver_usermessage: mock.Mock,
            mock_get_data_file: mock.Mock, mock_listdir: 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}

        date1 = [{
            "text": "<@U066MTL5U> has joined the channel",
            "subtype": "channel_join",
            "user": "******",
            "ts": "1434139102.000002"
        }, {
            "text": "<@U061A5N1G>: hey!",
            "user": "******",
            "ts": "1437868294.000006",
            "has_image": True
        }, {
            "text": "random",
            "user": "******",
            "ts": "1439868294.000006"
        }, {
            "text": "<http://journals.plos.org/plosone/article>",
            "user": "******",
            "ts": "1463868370.000008"
        }]  # type: List[Dict[str, Any]]

        date2 = [{
            "text": "test message 2",
            "user": "******",
            "ts": "1433868549.000010"
        }, {
            "text": "random test",
            "user": "******",
            "ts": "1433868669.000012"
        }]

        mock_get_data_file.side_effect = [date1, date2]
        added_recipient = {'random': 2}
        constants = ['./random_path', 2]
        ids = [0, 0, [3, 4, 5, 6, 7], []]
        channel_name = 'random'

        zerver_usermessage = []  # type: List[Dict[str, Any]]
        zerver_subscription = []  # type: List[Dict[str, Any]]
        zerver_message, zerver_usermessage = channel_message_to_zerver_message(
            constants, channel_name, user_data, added_users, added_recipient,
            zerver_subscription, ids)
        # functioning already tested in helper function
        self.assertEqual(zerver_usermessage, [])
        # subtype: channel_join is filtered
        self.assertEqual(len(zerver_message), 5)

        # 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]['subject'], 'from slack')
        self.assertEqual(zerver_message[4]['recipient'],
                         added_recipient[channel_name])
        self.assertEqual(zerver_message[2]['subject'], 'from slack')
        self.assertEqual(zerver_message[1]['recipient'],
                         added_recipient[channel_name])

        self.assertEqual(zerver_message[1]['id'], 4)
        self.assertEqual(zerver_message[4]['id'], 7)

        self.assertIsNone(zerver_message[3]['rendered_content'])
        self.assertEqual(zerver_message[0]['has_image'], date1[1]['has_image'])
        self.assertEqual(zerver_message[0]['pub_date'], float(date1[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)
예제 #4
0
    def test_channel_message_to_zerver_message(self, mock_build_zerver_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": "test message 2", "user": "******",
                         "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]]
        zerver_subscription = []  # type: List[Dict[str, Any]]
        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, zerver_subscription, [],
                                                         added_channels, 'domain')
        # 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]['message'], 1)
        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]['subject'], 'imported from slack')
        self.assertEqual(zerver_message[4]['recipient'], added_recipient['general'])
        self.assertEqual(zerver_message[2]['subject'], 'imported from slack')
        self.assertEqual(zerver_message[1]['recipient'], added_recipient['random'])

        self.assertEqual(zerver_message[1]['id'], 1)
        self.assertEqual(zerver_message[4]['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)
예제 #5
0
    def test_channel_message_to_zerver_message(
            self, mock_build_zerver_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": "test message 2",
                "user": "******",
                "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]]
        zerver_subscription = []  # type: List[Dict[str, Any]]
        added_channels = {
            'random': ('c5', 1),
            'general': ('c6', 2)
        }  # type: Dict[str, Tuple[str, int]]
        zerver_message, zerver_usermessage, attachment, uploads, \
            reaction, id_list = channel_message_to_zerver_message(
                1, user_data, added_users, added_recipient,
                all_messages, zerver_subscription, [],
                added_channels, (0, 0, 0, 0), 'domain')
        # 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, [])
        self.assertEqual(id_list, (5, 2, 1, 0))

        # Test reactions
        self.assertEqual(reaction[0]['user_profile'], 24)
        self.assertEqual(reaction[0]['message'], 1)
        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]['subject'], 'imported from slack')
        self.assertEqual(zerver_message[4]['recipient'],
                         added_recipient['general'])
        self.assertEqual(zerver_message[2]['subject'], 'imported from slack')
        self.assertEqual(zerver_message[1]['recipient'],
                         added_recipient['random'])

        self.assertEqual(zerver_message[1]['id'], 1)
        self.assertEqual(zerver_message[4]['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)