Skip to content

Commit f52b3aa

Browse files
feat: support Django asgi middleware (#625)
1 parent 81fb6c2 commit f52b3aa

File tree

4 files changed

+24
-24
lines changed

4 files changed

+24
-24
lines changed

google/cloud/logging_v2/handlers/middleware/request.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,20 @@ def _get_django_request():
3333
return getattr(_thread_locals, "request", None)
3434

3535

36-
try:
37-
from django.utils.deprecation import MiddlewareMixin
38-
except ImportError: # pragma: NO COVER
39-
MiddlewareMixin = object
40-
41-
42-
class RequestMiddleware(MiddlewareMixin):
36+
def RequestMiddleware(get_response):
4337
"""Saves the request in thread local"""
4438

45-
def __init__(self, get_response):
46-
self.get_response = get_response
47-
48-
def process_request(self, request):
39+
def middleware(request):
4940
"""Called on each request, before Django decides which view to execute.
5041
5142
Args:
5243
request(django.http.request.HttpRequest):
5344
Django http request.
5445
"""
5546
_thread_locals.request = request
47+
if get_response:
48+
return get_response(request)
49+
else:
50+
return None
51+
52+
return middleware

tests/environment

tests/unit/handlers/middleware/test_request.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,26 +46,29 @@ def _make_one(self, *args, **kw):
4646

4747
return self._get_target_class()(*args, **kw)
4848

49+
def _mock_get_response(self, req):
50+
return req
51+
4952
def test_process_request(self):
5053
from django.test import RequestFactory
5154
from google.cloud.logging_v2.handlers.middleware import request
5255

5356
middleware = self._make_one()
5457
mock_request = RequestFactory().get("/")
55-
middleware.process_request(mock_request)
58+
middleware(mock_request)
5659

5760
django_request = request._get_django_request()
5861
self.assertEqual(django_request, mock_request)
5962

6063
def test_can_instantiate_middleware_without_kwargs(self):
61-
handler = mock.Mock()
62-
middleware = self._make_one(handler)
63-
self.assertEqual(middleware.get_response, handler)
64+
middleware = self._make_one(self._mock_get_response)
65+
mock_request = "test_req"
66+
self.assertEqual(middleware(mock_request), mock_request)
6467

6568
def test_can_instantiate_middleware_with_kwargs(self):
66-
handler = mock.Mock()
67-
middleware = self._make_one(get_response=handler)
68-
self.assertEqual(middleware.get_response, handler)
69+
middleware = self._make_one(get_response=self._mock_get_response)
70+
mock_request = "test_req"
71+
self.assertEqual(middleware(mock_request), mock_request)
6972

7073

7174
class Test__get_django_request(DjangoBase):

tests/unit/handlers/test__helpers.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def test_no_context_header(self):
153153
django_request = RequestFactory().get("/")
154154

155155
middleware = request.RequestMiddleware(None)
156-
middleware.process_request(django_request)
156+
middleware(django_request)
157157
http_request, trace_id, span_id, sampled = self._call_fut()
158158

159159
self.assertEqual(http_request["requestMethod"], "GET")
@@ -175,7 +175,7 @@ def test_xcloud_header(self):
175175
)
176176

177177
middleware = request.RequestMiddleware(None)
178-
middleware.process_request(django_request)
178+
middleware(django_request)
179179
http_request, trace_id, span_id, sampled = self._call_fut()
180180

181181
self.assertEqual(trace_id, expected_trace_id)
@@ -195,7 +195,7 @@ def test_traceparent_header(self):
195195
django_request = RequestFactory().get("/", **{django_trace_header: header})
196196

197197
middleware = request.RequestMiddleware(None)
198-
middleware.process_request(django_request)
198+
middleware(django_request)
199199
http_request, trace_id, span_id, sampled = self._call_fut()
200200

201201
self.assertEqual(trace_id, expected_trace_id)
@@ -222,7 +222,7 @@ def test_http_request_populated(self):
222222
django_request.read()
223223

224224
middleware = request.RequestMiddleware(None)
225-
middleware.process_request(django_request)
225+
middleware(django_request)
226226
http_request, *_ = self._call_fut()
227227
self.assertEqual(http_request["requestMethod"], "PUT")
228228
self.assertEqual(http_request["requestUrl"], expected_path)
@@ -236,7 +236,7 @@ def test_http_request_sparse(self):
236236
expected_path = "http://testserver/123"
237237
django_request = RequestFactory().put(expected_path)
238238
middleware = request.RequestMiddleware(None)
239-
middleware.process_request(django_request)
239+
middleware(django_request)
240240
http_request, *_ = self._call_fut()
241241
self.assertEqual(http_request["requestMethod"], "PUT")
242242
self.assertEqual(http_request["requestUrl"], expected_path)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy