예제 #1
0
 def test_register_handler_accepts_handler_with_single_arg_and_self(self):
     converter = ErrorResponseConverter()
     converter.register_handler(Exception, self.single_arg_with_self_handler)
     self.assertEqual(len(converter.handlers), 1)
     handler_entry_for_exception = converter.handlers[0]
     self.assertIsInstance(handler_entry_for_exception, HandlerEntry)
     self.assertEqual(handler_entry_for_exception.handler, self.single_arg_with_self_handler)
     self.assertEqual(handler_entry_for_exception.exception_type, Exception)
예제 #2
0
 def test_handle_http_exception_override(self):
     converter = ErrorResponseConverter()
     def override_conflict(exception):
         return {'status': 400, 'localizedMessage': 'That was bad'}
     converter.register_handler(Conflict, override_conflict)
     response = converter.handle(Conflict())
     self.assertEqual(400, response.status_code)
     actual_body = json.loads(response.get_data())
     self.assertEqual('That was bad', actual_body['localizedMessage'])
     self.assertEqual(400, actual_body['status'])
예제 #3
0
파일: api.py 프로젝트: IBM/ignition
def build_app(app_name):
    builder = ApplicationBuilder(app_name)
    for property_group in ADDITIONAL_PROPERTY_GROUPS:
        builder.add_property_group(property_group())
    builder.service_configurators = SERVICE_CONFIGURATORS.copy()
    builder.api_configurators = API_CONFIGURATORS.copy()
    error_converter = ErrorResponseConverter()
    error_converter.register_handler(ValidationError, validation_error_handler)
    builder.set_error_converter(error_converter)
    return builder
예제 #4
0
 def test_handler_adds_additional_keys(self):
     converter = ErrorResponseConverter()
     def handler(exception):
         return {'added_key': 'some_other_data'}
     converter.register_handler(Exception, handler)
     response = converter.handle(Exception())
     self.assertEqual(500, response.status_code)
     actual_body = json.loads(response.get_data())
     self.assertEqual(str(Exception()), actual_body['localizedMessage'])
     self.assertEqual(500, actual_body['status'])
     self.assertEqual('some_other_data', actual_body['added_key'])
예제 #5
0
 def test_register_handler_does_not_accept_multi_arg(self):
     converter = ErrorResponseConverter()
     with self.assertRaises(ValueError) as context:
         converter.register_handler(Exception, invalid_mulit_arg_handler)
     self.assertEqual(str(context.exception), 'handler must accept a single argument (excluding self)')
예제 #6
0
 def test_register_handler_not_callable(self):
     converter = ErrorResponseConverter()
     with self.assertRaises(ValueError) as context:
         converter.register_handler(Exception, 'abc')
     self.assertEqual(str(context.exception), 'handler must be a callable type')
예제 #7
0
 def test_register_handler_to_non_exception(self):
     converter = ErrorResponseConverter()
     with self.assertRaises(ValueError) as context:
         converter.register_handler('abc', single_arg_handler)
     self.assertEqual(str(context.exception), 'exception_type must be a class type')