|
@@ -384,3 +384,47 @@ class CsrfViewMiddlewareTest(TestCase):
|
|
|
finally:
|
|
|
logger.removeHandler(test_handler)
|
|
|
logger.setLevel(old_log_level)
|
|
|
+
|
|
|
+ def test_csrf_cookie_age(self):
|
|
|
+ """
|
|
|
+ Test to verify CSRF cookie age can be set using
|
|
|
+ settings.CSRF_COOKIE_AGE.
|
|
|
+ """
|
|
|
+ req = self._get_GET_no_csrf_cookie_request()
|
|
|
+
|
|
|
+ MAX_AGE = 123
|
|
|
+ with self.settings(CSRF_COOKIE_NAME='csrfcookie',
|
|
|
+ CSRF_COOKIE_DOMAIN='.example.com',
|
|
|
+ CSRF_COOKIE_AGE=MAX_AGE,
|
|
|
+ CSRF_COOKIE_PATH='/test/',
|
|
|
+ CSRF_COOKIE_SECURE=True,
|
|
|
+ CSRF_COOKIE_HTTPONLY=True):
|
|
|
+ # token_view calls get_token() indirectly
|
|
|
+ CsrfViewMiddleware().process_view(req, token_view, (), {})
|
|
|
+ resp = token_view(req)
|
|
|
+
|
|
|
+ resp2 = CsrfViewMiddleware().process_response(req, resp)
|
|
|
+ max_age = resp2.cookies.get('csrfcookie').get('max-age')
|
|
|
+ self.assertEqual(max_age, MAX_AGE)
|
|
|
+
|
|
|
+ def test_csrf_cookie_age_none(self):
|
|
|
+ """
|
|
|
+ Test to verify CSRF cookie age does not have max age set and therefore
|
|
|
+ uses session-based cookies.
|
|
|
+ """
|
|
|
+ req = self._get_GET_no_csrf_cookie_request()
|
|
|
+
|
|
|
+ MAX_AGE = None
|
|
|
+ with self.settings(CSRF_COOKIE_NAME='csrfcookie',
|
|
|
+ CSRF_COOKIE_DOMAIN='.example.com',
|
|
|
+ CSRF_COOKIE_AGE=MAX_AGE,
|
|
|
+ CSRF_COOKIE_PATH='/test/',
|
|
|
+ CSRF_COOKIE_SECURE=True,
|
|
|
+ CSRF_COOKIE_HTTPONLY=True):
|
|
|
+ # token_view calls get_token() indirectly
|
|
|
+ CsrfViewMiddleware().process_view(req, token_view, (), {})
|
|
|
+ resp = token_view(req)
|
|
|
+
|
|
|
+ resp2 = CsrfViewMiddleware().process_response(req, resp)
|
|
|
+ max_age = resp2.cookies.get('csrfcookie').get('max-age')
|
|
|
+ self.assertEqual(max_age, '')
|