Exemplo n.º 1
0
    def _test_possible_problems_during_sign_in(self, locale,
                                               mock_pyrogram_manager):
        i18n = get_i18n_for_tests(locale)
        req = update_request(setup_request, locale)
        code = 1234
        req["session"]["attributes"]["phone_code_hash"] = 'random_code_hash'
        req["request"]["intent"]["slots"]["code"]["value"] = code

        mock_pyrogram_manager.sign_in = Mock(side_effect=PhoneCodeInvalid())
        mock_pyrogram_manager.return_value = mock_pyrogram_manager
        event = self.handler(req, None)
        output = remove_ssml_tags(
            event.get('response').get('outputSpeech').get('ssml'))
        self.assertEqual(output, i18n.PHONE_CODE_INVALID.format(code))
        self.assertEqual(
            event.get('response').get('directives')[0].get('type'),
            'Dialog.ElicitSlot')

        mock_pyrogram_manager.sign_in = Mock(side_effect=PhoneCodeExpired())
        mock_pyrogram_manager.return_value = mock_pyrogram_manager
        event = self.handler(req, None)
        output = remove_ssml_tags(
            event.get('response').get('outputSpeech').get('ssml'))
        self.assertEqual(output, i18n.PHONE_CODE_EXPIRED)

        mock_pyrogram_manager.sign_in = Mock(
            side_effect=SessionPasswordNeeded())
        mock_pyrogram_manager.return_value = mock_pyrogram_manager
        event = self.handler(req, None)
        output = remove_ssml_tags(
            event.get('response').get('outputSpeech').get('ssml'))
        self.assertEqual(output, i18n.TWO_STEP_ON)
Exemplo n.º 2
0
    def execute_setup_intent(self):
        """
        This method will help to create a dynamo db database entry with id: 'test_user_authorized'
        You need to provide your real phone number and the code you receive in Telegram once you execute this method.

        This user can then be used to actually fetch data from the Telegram API like in the PyrogramTest
        """
        locale = 'en-US'
        i18n = get_i18n_for_tests(locale)
        req = update_request(setup_request, locale)
        req["session"]["user"]["userId"] = "AUTHORIZED_USER"
        req["context"]["System"]["user"]["userId"] = "AUTHORIZED_USER"

        req["session"]["attributes"]["phone_num"] = input(
            'Type in your phone number (e.g.: 49123456)')

        event = self.handler(req, None)

        req["session"]["attributes"]["phone_code_hash"] = event.get(
            "sessionAttributes").get("phone_code_hash")
        req["request"]["intent"]["slots"]["code"]["value"] = input(
            'Check your phone for a code. What is the code?')

        event = self.handler(req, None)
        output = remove_ssml_tags(
            event.get('response').get('outputSpeech').get('ssml'))

        self.assertEqual(output, i18n.SUCCESS_SETUP)
        self.assertTrue(
            event.get("sessionAttributes").get("phone_code_hash") is not None)
Exemplo n.º 3
0
 def setUp(self) -> None:
     skill = CustomSkill(skill_configuration=sb.skill_configuration)
     req = update_request(message_request, 'en-US')
     request_envelope = skill.serializer.deserialize(
         payload=json.dumps(req), obj_type=RequestEnvelope)
     attributes_manager = AttributesManager(
         request_envelope=request_envelope,
         persistence_adapter=skill.persistence_adapter)
     self.handler_input = HandlerInput(request_envelope, attributes_manager)
     self.handler = sb.lambda_handler()
Exemplo n.º 4
0
    def test_when_user_has_no_new_telegrams(self, locale, mock_pyrogram_manager):
        i18n = get_i18n_for_tests(locale)
        req = update_request(message_request, locale)
        mock_pyrogram_manager.get_unread_dialogs = Mock(return_value=[])
        mock_pyrogram_manager.return_value = mock_pyrogram_manager

        event = self.handler(req, None)
        output_text = remove_ssml_tags(event.get('response').get('outputSpeech').get('ssml'))

        self.assertTrue(i18n.NO_NEW_TELEGRAMS in output_text)
Exemplo n.º 5
0
    def _test_user_provides_correct_code(self, locale):
        i18n = get_i18n_for_tests(locale)
        req = update_request(setup_request, locale)
        req["session"]["attributes"]["phone_num"] = 'random_phone_number'
        req["session"]["attributes"]["phone_code_hash"] = 'random_code_hash'
        req["request"]["intent"]["slots"]["code"]["value"] = 1234

        event = self.handler(req, None)
        output = remove_ssml_tags(
            event.get('response').get('outputSpeech').get('ssml'))

        self.assertEqual(output, i18n.SUCCESS_SETUP)
Exemplo n.º 6
0
    def test_when_user_has_new_telegrams(self, locale, mock_pyrogram_manager):
        req = update_request(message_request, locale)
        mock_pyrogram_manager.get_unread_dialogs = Mock(return_value=mock_data)
        mock_pyrogram_manager.read_history = Mock(return_value=True)
        mock_pyrogram_manager.return_value = mock_pyrogram_manager

        for new_telegrams_index in range(len(mock_data)):
            req["session"]["attributes"]["unread_dialog_index"] = new_telegrams_index

            event = self.handler(req, None)
            output_text = event.get('response').get('outputSpeech').get('ssml')

            self.assertEqual(output_text, expected_results[locale][new_telegrams_index])
Exemplo n.º 7
0
    def _test_start_of_setup_intent(self, locale):
        req = update_request(setup_request, locale)

        event = self.handler(req, None)

        self.assertTrue(
            event.get("sessionAttributes").get("phone_code_hash") ==
            'random_phone_code_hash')
        self.assertTrue(
            event.get("sessionAttributes").get("phone_num") ==
            'random_phone_number')
        self.assertEqual(
            event.get('response').get('directives')[0].get('type'),
            'Dialog.ElicitSlot')