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