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)
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)
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)
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)