From 10dd6084ff6ee3fd96e56a7a14f301855dc6f89f Mon Sep 17 00:00:00 2001 From: Bert JW Regeer Date: Mon, 3 Aug 2015 16:00:19 -0600 Subject: base64 encode cookie values This way they are valid according to the RFC, and newer versions of WebOb won't complain. --- pyramid/tests/test_session.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pyramid/tests/test_session.py b/pyramid/tests/test_session.py index b013ffa66..2fd764e5e 100644 --- a/pyramid/tests/test_session.py +++ b/pyramid/tests/test_session.py @@ -1,3 +1,4 @@ +import base64 import json import unittest from pyramid import testing @@ -277,7 +278,7 @@ class TestBaseCookieSession(SharedCookieSessionTests, unittest.TestCase): return BaseCookieSessionFactory(serializer, **kw)(request) def _serialize(self, value): - return json.dumps(value) + return base64.b64encode(json.dumps(value).encode('utf-8')) def test_reissue_not_triggered(self): import time @@ -650,10 +651,10 @@ class Test_check_csrf_token(unittest.TestCase): class DummySerializer(object): def dumps(self, value): - return json.dumps(value).encode('utf-8') + return base64.b64encode(json.dumps(value).encode('utf-8')) def loads(self, value): - return json.loads(value.decode('utf-8')) + return json.loads(base64.b64decode(value).decode('utf-8')) class DummySessionFactory(dict): _dirty = False -- cgit v1.2.3 From 5b5d5ed4c011ef71258a2c34463c6fe3821dab40 Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Mon, 31 Aug 2015 11:30:01 -0500 Subject: fix difference between py2 and py3 with base64.b64decode --- pyramid/tests/test_session.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pyramid/tests/test_session.py b/pyramid/tests/test_session.py index 2fd764e5e..eac6593d9 100644 --- a/pyramid/tests/test_session.py +++ b/pyramid/tests/test_session.py @@ -654,7 +654,13 @@ class DummySerializer(object): return base64.b64encode(json.dumps(value).encode('utf-8')) def loads(self, value): - return json.loads(base64.b64decode(value).decode('utf-8')) + try: + return json.loads(base64.b64decode(value).decode('utf-8')) + + # base64.b64decode raises a TypeError on py2 instead of a ValueError + # and a ValueError is required for the session to handle it properly + except TypeError: + raise ValueError class DummySessionFactory(dict): _dirty = False -- cgit v1.2.3