summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Buchholz <rbu@goodpoint.de>2011-11-02 16:56:00 +0100
committerRobert Buchholz <rbu@goodpoint.de>2011-11-02 16:57:39 +0100
commit4d20038ead23d708bdcbbeacb3c2a09496c10930 (patch)
tree7e14f214753b16e5f8e34ed1b9a11499a08e5737
parent42ef9d76250b51ce2581f1743abde5896708c39f (diff)
downloadpyramid-4d20038ead23d708bdcbbeacb3c2a09496c10930.tar.gz
pyramid-4d20038ead23d708bdcbbeacb3c2a09496c10930.tar.bz2
pyramid-4d20038ead23d708bdcbbeacb3c2a09496c10930.zip
DummySession: Correctly implement ISession by generating CSRF token if it's missing
-rw-r--r--pyramid/testing.py6
-rw-r--r--pyramid/tests/test_testing.py5
2 files changed, 10 insertions, 1 deletions
diff --git a/pyramid/testing.py b/pyramid/testing.py
index e1011f5b4..0e27c301e 100644
--- a/pyramid/testing.py
+++ b/pyramid/testing.py
@@ -620,7 +620,11 @@ class DummySession(dict):
return token
def get_csrf_token(self):
- return self.get('_csrft_', None)
+ token = self.get('_csrft_', None)
+ if token is None:
+ token = self.new_csrf_token()
+ return token
+
@implementer(IRequest)
class DummyRequest(DeprecatedRequestMethodsMixin, URLMethodsMixin,
diff --git a/pyramid/tests/test_testing.py b/pyramid/tests/test_testing.py
index 05ef36fe9..5b0073b81 100644
--- a/pyramid/tests/test_testing.py
+++ b/pyramid/tests/test_testing.py
@@ -894,6 +894,11 @@ class TestDummySession(unittest.TestCase):
self.assertEqual(token, 'token')
self.assertTrue('_csrft_' in session)
+ def test_get_csrf_token_generates_token(self):
+ session = self._makeOne()
+ token = session.get_csrf_token()
+ self.assertNotEqual(token, None)
+ self.assertTrue(len(token) >= 1)
from zope.interface import Interface
from zope.interface import implementer