Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
 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}))
Ejemplo n.º 6
0
 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}))
Ejemplo n.º 7
0
    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
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
 def convert_serialized_data_to_response(self, request):
     return Response(is_success=True,
                     data=request.context_params['serialized_data'])
Ejemplo n.º 11
0
 def convert_to_simple_response(self, request):
     return Response(is_success=True)
Ejemplo n.º 12
0
def authenticate(request):
    return request if request.user \
        else Response(is_success=False, reason=error_types.AuthenticationFailed)