Skip to content

Commit c03f839

Browse files
authored
Use a real SessionBase object on FooterNoSessionMiddleware (#5797)
Use a real SessionBase object on FooterNoSessionMiddleware
2 parents 8a6c193 + d121776 commit c03f839

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

readthedocs/core/middleware.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import logging
22

33
from django.conf import settings
4+
from django.contrib.sessions.backends.base import SessionBase
45
from django.contrib.sessions.middleware import SessionMiddleware
56
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
67
from django.http import Http404, HttpResponseBadRequest
@@ -205,7 +206,7 @@ def process_request(self, request):
205206
settings.SESSION_COOKIE_NAME not in request.COOKIES
206207
):
207208
# Hack request.session otherwise the Authentication middleware complains.
208-
request.session = {}
209+
request.session = SessionBase() # create an empty session
209210
return
210211
super().process_request(request)
211212

readthedocs/rtd_tests/tests/test_footer.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import mock
2+
from django.contrib.sessions.backends.base import SessionBase
23
from django.test import TestCase
34
from rest_framework.test import APIRequestFactory, APITestCase
45

@@ -80,7 +81,8 @@ def test_no_session_logged_out(self):
8081
# Null session here
8182
request = self.factory.get('/api/v2/footer_html/')
8283
mid.process_request(request)
83-
self.assertEqual(request.session, {})
84+
self.assertIsInstance(request.session, SessionBase)
85+
self.assertEqual(list(request.session.keys()), [])
8486

8587
# Proper session here
8688
home_request = self.factory.get('/')

0 commit comments

Comments
 (0)