def setUp(self): self.get_obj = MagicMock() self.del_obj = MagicMock() self.get_obj.__name__ = 'get_obj' self.del_obj.__name__ = 'del_obj' self.get_obj.return_value = Request(user=None, request_params=None) self.del_obj.return_value = Response()
def wrapper(self, request): action = CrudActions.resolve_action(func.__name__) request.context_params['crud_action'] = action if not self.is_action_allowed(action): return Response(is_success=False, reason=error_types.MethodNotAllowed) return func(self, request=request)
def validate_request_data(self, request): data_to_validate = request.data errors = self.validate_data(request, data=data_to_validate) if errors: return Response(is_success=False, reason=error_types.InvalidData, data=errors) else: return request
def test_api_method_calls_handler(self): test_api_method = PipelineComposer(pipeline=[self.get_obj]) self.get_obj.return_value = Response() expected_request = Request(user=None, request_params={'somearg1': 1, 'somearg2': 2}) test_api_method(expected_request) self.get_obj.assert_called_with(request=expected_request)
def test_should_return_bad_request_for_invalid_data(self): response = Response(is_success=False, reason=error_types.InvalidData, data={'defg': 1121}) http_request = MagicMock() http_response = django_response_builder.build_http_response( http_request, response) self.assertEqual(http_response.status_code, 400) self.assertEqual(http_response.content, simplejson.dumps({'defg': 1121}))
def test_should_return_not_authenticated_response_if_auth_fails(self): response = Response(is_success=False, reason=error_types.AuthenticationFailed, data={'asdf': 1121}) http_request = MagicMock() http_response = django_response_builder.build_http_response( http_request, response) self.assertEqual(http_response.status_code, 401) self.assertEqual(http_response.content, simplejson.dumps({'asdf': 1121}))
def test_api_method_exits_pipeline_on_response(self): test_method = PipelineComposer(pipeline=[self.get_obj, self.del_obj]) expected_response = Response() expected_request = Request(user=None, request_params={'somearg1': 1, 'somearg2': 2}) self.get_obj.return_value = expected_response test_method(expected_request) self.get_obj.assert_called_with( request=expected_request) self.assertEqual(self.del_obj.call_count, 0)
def validate_request_params(self, request): request_params = request.request_params validation_errors = self._validate_fields(request_params) if validation_errors is None: validation_errors = self.validate_order_by(request_params) if validation_errors is None: validation_errors = self.validate_aggregate_by(request_params) if validation_errors is None: validation_errors = self.validate_limit(request_params) or \ self.validate_offset(request_params) if validation_errors: return Response(is_success=False, reason=error_types.InvalidData, data=validation_errors) return request
def read_detail(self, request): """ :param request: an apiv2 request object :return: request if successful with entities set on request """ request_filters = request.context_params.get( self.request_filters_property, {}) entity = self.get_entity(request, **request_filters) if entity is None: return Response(is_success=False, reason=error_types.ObjectNotFound) request.context_params[self.detail_property_name] = entity return request
def convert_serialized_data_to_response(self, request): return Response(is_success=True, data=request.context_params['serialized_data'])
def convert_to_simple_response(self, request): return Response(is_success=True)
def authenticate(request): return request if request.user \ else Response(is_success=False, reason=error_types.AuthenticationFailed)