def test_sendChatMessageToUser_only_text(self): """ Проверка метода на отправку сообщения в уже существующий диалог, содержащего только текст. Элемент сообщения один - текст. 1) Проверяем FOLDER_DIALOGS и результат от воркера. 2) Проверяем FOLDER_MESSAGES и результат от воркера. 3) Проверяем FOLDER_MESSAGES и заданные в тесте данные. """ # Создаём новый диалог и несколько сообщений для него message_old1 = self.create_simple_text_message(self.owner_id, self.text_old1, self.locale) message_old2 = self.create_simple_text_message(self.owner_id, self.text_old2, self.locale) services.messaging.root.tframed.sendChatMessageToUser(message_old1, self.opponent_id) services.messaging.root.tframed.sendChatMessageToUser(message_old2, self.opponent_id) # Отправляем сообщение с которым будем работать message = self.create_simple_text_message(self.owner_id, self.text, self.locale) result = services.messaging.root.tframed.sendChatMessageToUser(message, self.opponent_id) users_id = self.organize_users(self.owner_id, self.opponent_id) self.assertEqual("%s_%s" % (users_id[0], users_id[1]), result.dialogId, "Not right form dialog.") dialog_data = json_to_dict(databases.db2.messaging.get_dialog(users_id[0], users_id[1])) dialog_messages = databases.db2.messaging.get_all_message(users_id[0], users_id[1]) message_data = json_to_dict(databases.db2.messaging.get_message(result.messageId)) self.check_dialog_data(dialog_data, result, self.owner_id, self.opponent_id) self.check_message_in_messages(result, dialog_messages) self.check_item(message.items[0], message_data['baseMessage']['items'][0], self.cont_type_name, text=self.pack_text) self.assertEqual(message_data['readTimestamp'], 0, "Not correct readTimestamp") # 0 - т.к. не прочитано self.check_base_message_data(message_data, self.owner_id, 1)
def test_sendDealMessage_new_dialog(self, cont_deal_offer_name): """ Проверка сделочных сообщений. Предложение о сделки для нового диалога. Warning: Начать сделочный диалог может только покупатель. """ self.cont_deal_offer = self.get_DealContentType(cont_deal_offer_name) self.pack_deal = {"contentType": cont_deal_offer_name, "count": self.count, "wareId": self.ware_id, "pricePerUnit": {"currency": self.currency, "exponent": self.exponent, "significand": self.significand}} cont_deal = self.cont_deal_offer price = self.get_CurrencyAmount(self.get_CurrencyType(self.currency), self.significand, self.exponent) message = self.create_simple_deal_message(self.owner_dialog, self.ware_id, self.count, price, cont_deal) result = services.messaging.root.tframed.sendDealMessage(message, self.seller, self.ware_id) dialog_data = json_to_dict(databases.db2.messaging.get_dialog_by_id(result.dialogId)) self.check_dialog_data(dialog_data, result, self.owner_dialog, self.seller) self.assertEqual(dialog_data['dialogId']['subject'], self.ware_id, "Not correct subject message.") # Проверяем, что сообщение в списке всех сообщений диалога dialog_messages = databases.db2.messaging.get_all_message_by_id(result.dialogId) self.check_message_in_messages(result, dialog_messages) message_data = json_to_dict(databases.db2.messaging.get_message(result.messageId)) params = (self.owner_dialog, self.seller, self.ware_id, dialog_data['dialogId']['startTimestamp']) self.assertEqual("%s_%s_%s_%s" % params, result.dialogId, "Not right form dialog.") self.check_item(message.items[0], message_data['baseMessage']['items'][0], self.cont_type_name, deal=self.pack_deal) self.assertEqual(message_data['readTimestamp'], 0, "Not correct readTimestamp") # 0 - т.к. не прочитано self.check_base_message_data(message_data, self.owner_dialog, 1)
def parsing_segment_data(data): """ Парсим результат работы методов Segment. :param data: строка с данными :return: type(dict) """ service_log.put("Parsing segment data.") segment_data = url_decode(data).replace("segmentData=", "") return json_to_dict(segment_data)
def test_sendChatMessageToUser_only_picture_for_new_dialog(self): """Проверка метода на отправку сообщения в новый диалог, содержащего только изображение. Элемент сообщения один - изображение. 1) Проверяем FOLDER_DIALOGS и результат от воркера. 2) Проверяем FOLDER_MESSAGES и результат от воркера. 3) Проверяем FOLDER_MESSAGES и заданные в тесте данные. """ # Одновременно создаём новый диалог message = self.create_simple_picture_message(self.owner_id, self.pict_id) result = services.messaging.root.tframed.sendChatMessageToUser(message, self.opponent_id) users_id = self.organize_users(self.owner_id, self.opponent_id) self.assertEqual("%s_%s" % (users_id[0], users_id[1]), result.dialogId, "Not right form dialog.") dialog_data = json_to_dict(databases.db2.messaging.get_dialog(users_id[0], users_id[1])) dialog_messages = databases.db2.messaging.get_all_message(users_id[0], users_id[1]) message_data = json_to_dict(databases.db2.messaging.get_message(result.messageId)) self.check_dialog_data(dialog_data, result, self.owner_id, self.opponent_id) self.check_message_in_messages(result, dialog_messages) self.check_item(message.items[0], message_data['baseMessage']['items'][0], self.cont_type_name, picture=self.pack_pict) self.assertEqual(message_data['readTimestamp'], 0, "Not correct readTimestamp") # 0 - т.к. не прочитано self.check_base_message_data(message_data, self.owner_id, 1)
def test_sendDealMessage_deal_type(self, cont_deal_name="DEAL_OFFER"): """ Проверяем метод sendChatMessageToUser на создание различных сделочных сообщений. :param cont_deal_name: тип сделочного сообщения """ self.cont_deal = self.get_DealContentType(cont_deal_name) self.pack_ware = {'wareId': self.ware_id, "contentType": cont_deal_name, "count": self.count, "pricePerUnit": {"currency": self.currency, "exponent": self.exponent, "significand": self.significand}} price = self.get_CurrencyAmount(self.get_CurrencyType(self.currency), self.significand, self.exponent) message = self.create_simple_deal_message(self.owner_id, self.ware_id, self.count, price, self.cont_deal) result = services.messaging.root.tframed.sendChatMessageToUser(message, self.opponent_id) users_id = self.organize_users(self.owner_id, self.opponent_id) self.assertEqual("%s_%s" % (users_id[0], users_id[1]), result.dialogId, "Not right form dialog.") dialog_data = json_to_dict(databases.db2.messaging.get_dialog(users_id[0], users_id[1])) dialog_messages = databases.db2.messaging.get_all_message(users_id[0], users_id[1]) message_data = json_to_dict(databases.db2.messaging.get_message(result.messageId)) self.check_dialog_data(dialog_data, result, self.owner_id, self.opponent_id) self.check_message_in_messages(result, dialog_messages) self.check_item(message.items[0], message_data['baseMessage']['items'][0], self.cont_type_name, deal=self.pack_ware) self.assertEqual(message_data['readTimestamp'], 0, "Not correct readTimestamp") # 0 - т.к. не прочитано self.check_base_message_data(message_data, self.owner_id, 1)
def tests_sendChatMessageToUser_text_national_language(self, locale_text): """ Тестирование отправки сообщений на различных языках. 1) Китай 2) Вьетнам 3) Кирилица :param locale_text: текст сообщения """ # TODO: https://youtrack.home.oorraa.net/issue/M-193 created_message = self.create_simple_text_message(self.owner_id, locale_text.values()[0], locale_text.keys()[0]) result = services.messaging.root.tframed.sendChatMessageToUser(created_message, self.opponent_id) message = json_to_dict(databases.db2.messaging.get_message(result.messageId)) # Сравнить заданные значения и значения в redis self.assertEqual(locale_text.values()[0], message['baseMessage']['items'][0]['text']['text'], self.msg1) self.assertEqual(locale_text.keys()[0], message['baseMessage']['items'][0]['text']['locale'], self.msg2) # Сравнить заданные значения и вернувшиеся значения от воркера self.assertEqual(locale_text.values()[0], result.message.items[0].text.text, self.msg1) self.assertEqual(locale_text.keys()[0], result.message.items[0].text.locale, self.msg2)
def test_send_message_to_user_only_text(self): """ Проверка отправки тектового сообщения пользователю. Метод sendChatMessageToUser: Послать сообщение юзеру и создать чат если его не существует - Если при посылке произошли внутренние ошибки то будет выброшено UnavailableException. - На некорректный запрос бужет выброшено BadRequestException. - Если сообщение будет послано в несуществующий диалог то будет выброшено NoSuchResourceException. - Ошибки посылки сообщения SendMessageException """ service_log.run(self) # формируем и отправляем текстовое сообщение user1 = AccountingMethods.get_default_user_id("seller_alien") user2 = AccountingMethods.get_default_user_id("buyer") dialog_id = self.create_dialog_id(user1=user1, user2=user2) parse_dialog_id = dialog_id.split("_") owner_id = int(parse_dialog_id[0]) recipient_id = int(parse_dialog_id[1]) text_message = "Autotest_%s" % random.randint(1000, 1000000) + " testing message" name_cont_type = "TEXT" locale_name = "ru" cont_type = self.get_ContentType(name_cont_type) cont_text = self.get_TextContentDto(text_message, locale_name) items = [self.get_ContentItemDto(cont_type, text=cont_text)] message = self.get_BaseInstantMessageDto(owner_id, items) start_timestamp_msg = int(str(time.time()).replace(".", "") + "0") time.sleep(5) # делаем задержку явной result = services.messaging.root.tframed.sendChatMessageToUser(message, recipient_id) # делаем выборку информации из БД end_timestamp_msg = int(str(time.time()).replace(".", "") + "0") info_dialog_not_parse = databases.nutcracker.shards.messaging.get_dialog_by_id(dialog_id) info_message_not_parse = databases.nutcracker.shards.messaging.get_message(result.messageId) # объявляем переменные для проверок info_dialog = json_to_dict(info_dialog_not_parse) info_message = json_to_dict(info_message_not_parse) item_iterator = info_message['baseMessage']["itemsIterator"][0] item = info_message['baseMessage']["items"][0] item_result = result.message.items[0] message_meta = info_message['messageId'] parsed_message_id = self.parse_form_messageId(result.messageId) count_msg = 0 # проверка информации диалога с заданной self.check_dialog_data(info_dialog, owner_id, recipient_id, count_msg, start_timestamp_msg, end_timestamp_msg) # проверка общей информации сообщения self.check_message_info_for_text(info_message['baseMessage'], owner_id, count_message=1) self.check_message_meta(message_meta, owner_id, recipient_id, start_timestamp_msg, end_timestamp_msg) # проверка элемента сообщения только с текстом (в данном случае элемент только один) self.assertEqual(info_message['readTimestamp'], 0, "The message was someone to read.") self.check_item_message_info_for_text(item, name_cont_type, text_message, locale_name) self.check_item_message_info_for_text(item_iterator, name_cont_type, text_message, locale_name) # проверка информации диалога и информации вернувшейся из воркера msg1 = "The last added message time of the message not equal time creating dialog." msg2 = "Not the same owners of the dialogue" msg3 = "The message is not found in unread" self.assertEqual(info_dialog["lastAddedMessageTimestamp"], result.creationTimestamp, msg1) self.assertEqual(info_dialog["dialogId"]["sender"], result.message.ownerId, msg2) self.assertTrue(result.messageId in info_dialog["unreadMessages"], msg3) # проверка информации сообщения и информации вернувшийся от воркера self.assertEqual(result.readTimestamp, info_message['readTimestamp']) self.assertEqual(result.dialogId, dialog_id) self.assertEqual(parsed_message_id["hash"], message_meta["hash"]) self.assertEqual(parsed_message_id["sending_timestamp"], str(message_meta["sendingTimestamp"])) self.assertEqual(parsed_message_id["participant_id"], str(message_meta["participantId"])) self.assertEqual(parsed_message_id["dialog_id"], dialog_id) self.assertEqual(result.message.ownerId, owner_id) # проверка элемента сообщения вернувшего воркером (в данном случае он один) self.assertEqual(item_result.contentType, cont_type) self.assertEqual(item_result.text.locale, locale_name) self.assertEqual(item_result.text.text, text_message) self.assertIsNone(item_result.dealContent) self.assertIsNone(item_result.pictureId) self.assertIsNone(item_result.userId) self.assertIsNone(item_result.wareId)