예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
 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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
 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)
예제 #7
0
    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)