def handle_api_call(http_request, url, api): if not action_resolver.is_valid_resource(url, api): return HttpResponseNotFound() action = action_resolver.resolve_action(http_request, url, api) if action is None: # we could not resolve what action to call for this http request. # return method not allowed response return HttpResponseNotAllowed("%s:%s" % (url, http_request.method)) request_body = http_request.read() request_data = api_request_builder.build_request_data(request_body, http_request.META) if request_data.get('error_message'): return HttpResponseBadRequest( json.dumps(request_data), content_type='application/json') request = api_request_builder.build_request(http_request=http_request, url=url, api=api, request_data=request_data, request_body=request_body) response = action(request) http_response = django_response_builder.build_http_response( http_request, response) return http_response
def handle_api_call(http_request, url, api): if not action_resolver.is_valid_resource(url, api): return HttpResponseNotFound() action = action_resolver.resolve_action(http_request, url, api) if action is None: # we could not resolve what action to call for this http request. # return method not allowed response return HttpResponseNotAllowed("%s:%s" % (url, http_request.method)) request_body = http_request.read() request_data = api_request_builder.build_request_data( request_body, http_request.META) if request_data.get('error_message'): return HttpResponseBadRequest(json.dumps(request_data), content_type='application/json') request = api_request_builder.build_request(http_request=http_request, url=url, api=api, request_data=request_data, request_body=request_body) response = action(request) http_response = django_response_builder.build_http_response( http_request, response) return http_response
def test_resolve_non_existing_endpoint(self): mock_http_request = MagicMock() mock_http_request.method = "DELETE" mock_api = MagicMock(spec_set=[]) action = action_resolver.resolve_action(mock_http_request, api=mock_api, url="foo") assert_that(action, equal_to(None))
def test_resolve_non_existing_endpoint(self): mock_http_request = MagicMock() mock_http_request.method = 'DELETE' mock_api = MagicMock(spec_set=[]) action = action_resolver.resolve_action(mock_http_request, api=mock_api, url='foo') assert_that(action, equal_to(None))
def test_resolve_non_existing_action_options(self): mock_http_request = MagicMock() mock_http_request.method = "OPTIONS" mock_api = MagicMock() mock_resource = object() mock_api.resolve_resource.return_value = mock_resource action = action_resolver.resolve_action(mock_http_request, api=mock_api, url="foo") assert_that(action, equal_to(None))
def test_resolve_post_on_list_as_create_detail(self): mock_http_request = MagicMock() mock_http_request.method = "POST" mock_api = MagicMock() mock_resource = MagicMock() mock_api.resolve_resource.return_value = mock_resource mock_resource.create_detail = expected_create_action = MagicMock() action = action_resolver.resolve_action(mock_http_request, api=mock_api, url="foo") assert_that(action, equal_to(expected_create_action))
def test_resolve_detail_action_on_api(self): mock_http_request = MagicMock() mock_http_request.method = "DELETE" mock_api = MagicMock() mock_resource = MagicMock() mock_api.resolve_resource.return_value = mock_resource mock_resource.delete_detail = expected_delete_action = MagicMock() action = action_resolver.resolve_action(mock_http_request, api=mock_api, url="foo/1") assert_that(action, equal_to(expected_delete_action))
def test_resolve_non_existing_action_put(self): mock_http_request = MagicMock() mock_http_request.method = 'PUT' mock_api = MagicMock() mock_resource = object() mock_api.resolve_resource.return_value = mock_resource action = action_resolver.resolve_action(mock_http_request, api=mock_api, url='foo') assert_that(action, equal_to(None))
def test_resolve_non_existing_action_options(self): mock_http_request = MagicMock() mock_http_request.method = 'OPTIONS' mock_api = MagicMock() mock_resource = object() mock_api.resolve_resource.return_value = mock_resource action = action_resolver.resolve_action(mock_http_request, api=mock_api, url='foo') assert_that(action, equal_to(None))
def test_resolve_put_action_on_api(self): mock_http_request = MagicMock() mock_http_request.method = 'PUT' mock_api = MagicMock() mock_resource = MockResource() mock_api.resolve_resource.return_value = mock_resource mock_resource.create_or_update_detail = expected_action = MagicMock() action = action_resolver.resolve_action(mock_http_request, api=mock_api, url='foo/1') assert_that(action, equal_to(expected_action))
def test_resolve_view_action(self): mock_http_request = MagicMock() mock_http_request.method = 'GET' mock_api = MagicMock() mock_resource = MockViewResource() mock_api.resolve_resource.return_value = mock_resource mock_resource.read = expected_read_action = MagicMock() action = action_resolver.resolve_action(mock_http_request, api=mock_api, url='foo') assert_that(action, equal_to(expected_read_action))
def test_resolve_post_on_list_as_create_detail(self): mock_http_request = MagicMock() mock_http_request.method = 'POST' mock_api = MagicMock() mock_resource = MagicMock() mock_api.resolve_resource.return_value = mock_resource mock_resource.create_detail = expected_create_action = MagicMock() action = action_resolver.resolve_action(mock_http_request, api=mock_api, url='foo') assert_that(action, equal_to(expected_create_action))
def test_resolve_detail_action_on_api(self): mock_http_request = MagicMock() mock_http_request.method = 'DELETE' mock_api = MagicMock() mock_resource = MagicMock() mock_api.resolve_resource.return_value = mock_resource mock_resource.delete_detail = expected_delete_action = MagicMock() action = action_resolver.resolve_action(mock_http_request, api=mock_api, url='foo/1') assert_that(action, equal_to(expected_delete_action))