Skip to content

Commit

Permalink
Better implementation of secure requests
Browse files Browse the repository at this point in the history
  • Loading branch information
yakky committed Sep 26, 2015
1 parent 82f25ea commit 55419c6
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
13 changes: 9 additions & 4 deletions djangocms_helper/base_test.py
Expand Up @@ -203,7 +203,8 @@ def render_plugin(self, page, lang, plugin, edit=False):
rendered = plugin.render_plugin(context, plugin.placeholder)
return rendered

def _prepare_request(self, request, page, user, lang, use_middlewares, use_toolbar=False):
def _prepare_request(self, request, page, user, lang, use_middlewares, use_toolbar=False,
secure=False):
from django.contrib.auth.models import AnonymousUser

request.current_page = SimpleLazyObject(lambda: page)
Expand All @@ -215,6 +216,9 @@ def _prepare_request(self, request, page, user, lang, use_middlewares, use_toolb
request.user = user
request._cached_user = user
request.session = {}
if secure:
request.environ['SERVER_PORT'] = str('443')
request.environ['wsgi.url_scheme'] = str('https')
if user.is_authenticated():
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
request.cookies = SimpleCookie()
Expand Down Expand Up @@ -250,7 +254,7 @@ def get_request(self, page, lang, user=None, path=None, use_middlewares=False, s
"""
path = path or page and page.get_absolute_url(lang)
request = self.request_factory.get(path, secure=secure)
return self._prepare_request(request, page, user, lang, use_middlewares)
return self._prepare_request(request, page, user, lang, use_middlewares, secure=secure)

def post_request(self, page, lang, data, user=None, path=None, use_middlewares=False,
secure=False):
Expand All @@ -268,7 +272,7 @@ def post_request(self, page, lang, data, user=None, path=None, use_middlewares=F
"""
path = path or page and page.get_absolute_url(lang)
request = self.request_factory.post(path, data, secure=secure)
return self._prepare_request(request, page, user, lang, use_middlewares)
return self._prepare_request(request, page, user, lang, use_middlewares, secure=secure)

def get_page_request(self, page, user, path=None, edit=False, lang='en',
use_middlewares=False, secure=False):
Expand All @@ -294,7 +298,8 @@ def get_page_request(self, page, user, path=None, edit=False, lang='en',
if edit:
path = '{0}?{1}'.format(path, edit_on)
request = self.request_factory.get(path, secure=secure)
return self._prepare_request(request, page, user, lang, use_middlewares, use_toolbar=True)
return self._prepare_request(request, page, user, lang, use_middlewares, use_toolbar=True,
secure=secure)

def create_image(self, mode='RGB', size=(800, 600)):
"""
Expand Down
3 changes: 3 additions & 0 deletions djangocms_helper/test_utils/example1/tests/test_fake.py
Expand Up @@ -148,6 +148,9 @@ def test_request(self):
self.assertIsNotNone(getattr(request, 'toolbar', None))
self.assertIsNotNone(getattr(request, '_messages', None))

request = self.get_request(pages[1], 'en', secure=True)
self.assertTrue(request.is_secure())

def test_request_full_middlewares(self):
# naked request
request = self.get_request(
Expand Down

0 comments on commit 55419c6

Please sign in to comment.