def test_no_token_logging(self, logger_mock): self.request.json['context']['tokens'] = {"demotoken": "abcdefg"} with patch('skill_sdk.routes.request', new=self.request), \ patch.object(skill_sdk.skill.Skill, '_intents', new={'TELEKOM_Demo_Intent': self.intent}): from skill_sdk.routes import invoke invoke() log = StringIO() [log.write(str(i)) for i in logger_mock.debug.call_args_list] self.assertNotIn('abcdefh', log.getvalue()) self.assertIn('*****', log.getvalue()) self.assertEqual(self.request.json['context']['tokens'], {"demotoken": "abcdefg"})
def test_invoke_other_error(self): intent = self.intent intent.implementation = error_intent with patch('skill_sdk.routes.request', new=self.request), \ patch.object(skill_sdk.skill.Skill, '_intents', new={'TELEKOM_Demo_Intent': intent}): from skill_sdk.routes import invoke result = invoke() self.assertEqual(result.status_code, 500)
def test_invoke_close_tracing_scope(self, close_scope): """ Ensure tracing scope is closed when invoke is complete """ with patch('skill_sdk.routes.request', new=self.request), \ patch.object(skill_sdk.skill.Skill, '_intents', new={'TELEKOM_Demo_Intent': self.intent}): from skill_sdk.routes import invoke result = invoke() close_scope.assert_called_once()
def test_invoke_json_decode_error(self): intent = self.intent intent.implementation = error_intent with patch('skill_sdk.routes.request', new=self.request), \ patch('skill_sdk.log.prepare_for_logging', side_effect=JSONDecodeError('', '', 0)), \ patch.object(skill_sdk.skill.Skill, '_intents', new={'TELEKOM_Demo_Intent': intent}): from skill_sdk.routes import invoke result = invoke() self.assertEqual(result.status_code, 400)
def test_invoke_intent_not_found(self): self.request.json = { "context": { "attributes": {...}, "intent": "TELEKOM_Demo_Intent", "locale": "de", "tokens": {}, "clientAttributes": {} }, "session": { "new": True, "id": "12345", "attributes": { "key-1": "value-1", "key-2": "value-2" } }, "version": 1 } with patch('skill_sdk.routes.request', new=self.request): from skill_sdk.routes import invoke result = invoke() self.assertEqual(result.status_code, 404)
def test_invoke_exception(self): with patch('skill_sdk.routes.Context', side_effect=SyntaxError), \ patch('skill_sdk.routes.request', new=self.request): from skill_sdk.routes import invoke result = invoke() self.assertEqual(result.status_code, 500)
def test_invoke_translation_error(self): with patch('skill_sdk.routes.request', new=self.request), patch('skill_sdk.l10n.logger') as fake_log: from skill_sdk.routes import invoke result = invoke() self.assertEqual(result.status_code, 404) fake_log.error.assert_called_with('A translation for locale %s is not available.', 'de')
def test_invoke(self): with patch('skill_sdk.routes.request', new=self.request), \ patch.object(skill_sdk.skill.Skill, '_intents', new={'TELEKOM_Demo_Intent': self.intent}): from skill_sdk.routes import invoke result = invoke() self.assertEqual(result.status_code, 200)