Skip to content
Permalink
Browse files
fix: Remove keyword only argument for RequestsMiddleware (#113)
* 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.

* Test that we can instantiate middleware with or without kwargs

* Make get_response a required parameter in RequestMiddleware
  • Loading branch information
bradykieffer committed Dec 7, 2020
1 parent 021cfbb commit e704f287a40db38d0da42fa5e21e7a9ef73922ec
Showing with 16 additions and 3 deletions.
  1. +1 −1 google/cloud/logging_v2/handlers/middleware/request.py
  2. +13 −0 tests/unit/handlers/middleware/test_request.py
  3. +2 −2 tests/unit/handlers/test__helpers.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):
@@ -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):
@@ -54,6 +57,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
@@ -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()

0 comments on commit e704f28

Please sign in to comment.