def test_multiple_choices(self): i18n = Constants.i18n handler = sb.lambda_handler() # A: "First name" # U: "Mik" multiple_choices["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN multiple_choices["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(multiple_choices, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[7:15] in i18n.NO_CONTACT) # A: "I found: 1 Michael, 2 Martin, and 3 Riki." # U: "One" user_made_choice["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN user_made_choice["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(user_made_choice, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[-17:-8] in i18n.MESSAGE.format('Michael')) # A: "I found: 1 Michael, 2 Martin, and 3 Riki." # U: "Mik" user_says_wrong_on_choice["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN user_says_wrong_on_choice["session"]["user"][ "accessToken"] = VALID_TOKEN event = handler(user_says_wrong_on_choice, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[7:30] in i18n.MAX_NO_CONTACT)
def test_first_time_setting_intent(self): i18n = Constants.i18n handler = sb.lambda_handler() # Creates a new settings object in backend open_settings_first_time["context"]["System"]["user"]["accessToken"] = VALID_TOKEN open_settings_first_time["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(open_settings_first_time, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertEqual(ssml[7:-8], i18n.SETTINGS_OPENED)
def send_telegram(self): i18n = Constants.i18n handler = sb.lambda_handler() send_telegram["context"]["System"]["user"]["accessToken"] = VALID_TOKEN send_telegram["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(send_telegram, None) ssml = event.get('response').get('outputSpeech').get('ssml') test_case = ssml.split('.')[1][1:-8] self.assertTrue(test_case in i18n.ANYTHING_ELSE)
def test_account_not_authorized_launch_request(self): i18n = Constants.i18n handler = sb.lambda_handler() launch_request["context"]["System"]["user"][ "accessToken"] = INVALID_TOKEN launch_request["session"]["user"]["accessToken"] = INVALID_TOKEN event = handler(launch_request, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertEqual(ssml, '<speak>{}</speak>'.format(i18n.NOT_AUTHORIZED))
def authorization_with_no_phone(self): i18n = NonVerboseLanguageModel('de-DE', False) handler = sb.lambda_handler() # User wants to authorize: user did not add phone number no_phone_added["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN no_phone_added["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(no_phone_added, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertEqual(ssml, '<speak>{}</speak>'.format(i18n.NO_PHONE))
def start_send_intent(self): i18n = Constants.i18n handler = sb.lambda_handler() # User says: "Send a telegram" start_send_intent["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN start_send_intent["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(start_send_intent, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[-16:-8] in i18n.FIRST_NAME)
def test_account_not_linked_launch_request(self): i18n = Constants.i18n handler = sb.lambda_handler() # Remove access token to simulate a user who did not link account launch_request["context"]["System"]["user"]["accessToken"] = None launch_request["session"]["user"]["accessToken"] = None event = handler(launch_request, None) ssml = ssml = event.get('response').get('outputSpeech').get('ssml') self.assertEqual( ssml, '<speak>{}</speak>'.format(i18n.ACCOUNT_LINKING_REQUIRED))
def test_multiple_telegrams(self): i18n = Constants.i18n handler = sb.lambda_handler() # User: "******" (last one) multiple_messages_last_one["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN multiple_messages_last_one["session"]["user"][ "accessToken"] = VALID_TOKEN event = handler(multiple_messages_last_one, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[-31:-8] in i18n.REPLY_SEND_OR_STOP)
def test_open_message_intent(self): i18n = Constants.i18n handler = sb.lambda_handler() # User: "******". new_telegrams["context"]["System"]["user"]["accessToken"] = VALID_TOKEN new_telegrams["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(new_telegrams, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[-31:-8] in i18n.REPLY_OR_NEXT_TELEGRAM or ssml[-31:-8] in i18n.REPLY_SEND_OR_STOP or ssml[-40:-8] in i18n.NO_TELEGRAMS)
def ask_for_message(self): i18n = Constants.i18n handler = sb.lambda_handler() # U: 'Lorenz' # Alexa now asks for message ask_for_message["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN ask_for_message["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(ask_for_message, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[19:-8] in i18n.MESSAGE.format('Lorenz'))
def test_authorized_launch_request(self): i18n = Constants.i18n handler = sb.lambda_handler() launch_request["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN launch_request["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(launch_request, None) ssml = event.get('response').get('outputSpeech').get('ssml') ssml = ssml[-7:8] self.assertTrue(ssml in i18n.WELCOME or ssml in i18n.USER_HAS_TELEGRAMS)
def german_speed_dial(self): set_language_model('de-DE', True) i18n = Constants.i18n handler = sb.lambda_handler() german_speed_dial["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN german_speed_dial["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(german_speed_dial, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[19:-8] in i18n.MESSAGE.format('Lorenz')) set_language_model('en-US', True)
def no_intent_on_new_telegrams(self): i18n = Constants.i18n handler = sb.lambda_handler() # User answered No on question: "Welcome, do you want to hear your new Telegrams?" no_on_listen_to_new_telegrams["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN no_on_listen_to_new_telegrams["session"]["user"][ "accessToken"] = VALID_TOKEN event = handler(no_on_listen_to_new_telegrams, None) ssml = event.get('response').get('outputSpeech').get('ssml') ssml = ssml[-33:-8] self.assertTrue(ssml in i18n.HELP_USER)
def yes_intent_on_new_telegrams(self): i18n = Constants.i18n handler = sb.lambda_handler() yes_on_listen_to_new_telegrams["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN yes_on_listen_to_new_telegrams["session"]["user"][ "accessToken"] = VALID_TOKEN event = handler(yes_on_listen_to_new_telegrams, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[-31:-8] in i18n.REPLY_OR_NEXT_TELEGRAM or ssml[-31:-8] in i18n.REPLY_SEND_OR_STOP or ssml[-40:-8] in i18n.NO_TELEGRAMS)
def test_send_intent_with_speed_number(self): i18n = Constants.i18n handler = sb.lambda_handler() # U: "10" # Alexa asks for message ask_for_message_speed_dial["context"]["System"]["user"][ "accessToken"] = VALID_TOKEN ask_for_message_speed_dial["session"]["user"][ "accessToken"] = VALID_TOKEN event = handler(ask_for_message_speed_dial, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[19:-8] in i18n.MESSAGE.format('Lorenz')) # U: "111" # Alexa: "No speed dial contact" ask_for_message_speed_dial["request"]["intent"]["slots"]["first_name"][ "value"] = "111" event = handler(ask_for_message_speed_dial, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertTrue(ssml[19:-8] in i18n.NO_SPEED_DIAL_CONTACT)
def test_settings_intent(self): i18n = Constants.i18n handler = sb.lambda_handler() service = DailyTelegramsService() account = service.get_daily_telegrams_account() # User: "******" open_settings["context"]["System"]["user"]["accessToken"] = VALID_TOKEN open_settings["session"]["user"]["accessToken"] = VALID_TOKEN event = handler(open_settings, None) ssml = event.get('response').get('outputSpeech').get('ssml') self.assertEqual(ssml[7:-8], i18n.SETTINGS_OPENED) # A: "In settings mode. Do you want to enable or disable non-verbose mode?" # U: "Enable/disable non-verbose mode" enable_non_verbose_mode["context"]["System"]["user"]["accessToken"] = VALID_TOKEN enable_non_verbose_mode["session"]["user"]["accessToken"] = VALID_TOKEN enable_non_verbose_mode["session"]["attributes"]["ACCOUNT"]["SETTINGS_ID"] = account.settings_id event = handler(enable_non_verbose_mode, None) ssml = event.get('response').get('outputSpeech').get('ssml') ssml = ssml[7:25] self.assertTrue(ssml in i18n.NON_VERBOSE_CHOICE.format( 'enable') or ssml in i18n.NON_VERBOSE_CHOICE.format('disable'))