From 5f0d441fa6aea4ec40a4760e26c6d93dd65e023a Mon Sep 17 00:00:00 2001 From: Brady Kieffer Date: Thu, 3 Dec 2020 17:01:51 -0500 Subject: [PATCH 1/3] fix: Remove keyword only argument for RequestsMiddleware Remove keyword only arguments from request middleware. This causes django to fail when attempting to load middleware. Django currently only supports handlers being passed in as args. --- google/cloud/logging_v2/handlers/middleware/request.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/cloud/logging_v2/handlers/middleware/request.py b/google/cloud/logging_v2/handlers/middleware/request.py index da361b967..c238511d1 100644 --- a/google/cloud/logging_v2/handlers/middleware/request.py +++ b/google/cloud/logging_v2/handlers/middleware/request.py @@ -42,7 +42,7 @@ def _get_django_request(): class RequestMiddleware(MiddlewareMixin): """Saves the request in thread local""" - def __init__(self, *, get_response=None): + def __init__(self, get_response=None): self.get_response = get_response def process_request(self, request): From 048de831ede3e505a50afebb832a3ee39cc192cb Mon Sep 17 00:00:00 2001 From: Brady Kieffer Date: Fri, 4 Dec 2020 15:47:26 -0500 Subject: [PATCH 2/3] Test that we can instantiate middleware with or without kwargs --- tests/unit/handlers/middleware/test_request.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/unit/handlers/middleware/test_request.py b/tests/unit/handlers/middleware/test_request.py index 16d3f9ba2..ab5f6461a 100644 --- a/tests/unit/handlers/middleware/test_request.py +++ b/tests/unit/handlers/middleware/test_request.py @@ -54,6 +54,16 @@ def test_process_request(self): django_request = request._get_django_request() self.assertEqual(django_request, mock_request) + def test_can_instantiate_middleware_without_kwargs(self): + handler = mock.Mock() + middleware = self._make_one(handler) + self.assertEqual(middleware.get_response, handler) + + def test_can_instantiate_middleware_with_kwargs(self): + handler = mock.Mock() + middleware = self._make_one(get_response=handler) + self.assertEqual(middleware.get_response, handler) + class Test__get_django_request(DjangoBase): @staticmethod From 17811e8128ca100b8ae1f13b657c2d4056d94d33 Mon Sep 17 00:00:00 2001 From: Brady Kieffer Date: Mon, 7 Dec 2020 15:28:58 -0500 Subject: [PATCH 3/3] Make get_response a required parameter in RequestMiddleware --- google/cloud/logging_v2/handlers/middleware/request.py | 2 +- tests/unit/handlers/middleware/test_request.py | 3 +++ tests/unit/handlers/test__helpers.py | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/google/cloud/logging_v2/handlers/middleware/request.py b/google/cloud/logging_v2/handlers/middleware/request.py index c238511d1..1804947ec 100644 --- a/google/cloud/logging_v2/handlers/middleware/request.py +++ b/google/cloud/logging_v2/handlers/middleware/request.py @@ -42,7 +42,7 @@ def _get_django_request(): class RequestMiddleware(MiddlewareMixin): """Saves the request in thread local""" - def __init__(self, get_response=None): + def __init__(self, get_response): self.get_response = get_response def process_request(self, request): diff --git a/tests/unit/handlers/middleware/test_request.py b/tests/unit/handlers/middleware/test_request.py index ab5f6461a..d0e3daf24 100644 --- a/tests/unit/handlers/middleware/test_request.py +++ b/tests/unit/handlers/middleware/test_request.py @@ -41,6 +41,9 @@ def _get_target_class(self): return request.RequestMiddleware def _make_one(self, *args, **kw): + if not args and "get_response" not in kw: + kw["get_response"] = None + return self._get_target_class()(*args, **kw) def test_process_request(self): diff --git a/tests/unit/handlers/test__helpers.py b/tests/unit/handlers/test__helpers.py index 0cd3b30d8..1fbf6c860 100644 --- a/tests/unit/handlers/test__helpers.py +++ b/tests/unit/handlers/test__helpers.py @@ -87,7 +87,7 @@ def test_no_context_header(self): django_request = RequestFactory().get("/") - middleware = request.RequestMiddleware() + middleware = request.RequestMiddleware(None) middleware.process_request(django_request) trace_id = self._call_fut() self.assertIsNone(trace_id) @@ -104,7 +104,7 @@ def test_valid_context_header(self): "/", **{django_trace_header: django_trace_id} ) - middleware = request.RequestMiddleware() + middleware = request.RequestMiddleware(None) middleware.process_request(django_request) trace_id = self._call_fut()