summaryrefslogtreecommitdiff
path: root/tests/test_session.py
diff options
context:
space:
mode:
authorMichael Merickel <github@m.merickel.org>2018-11-03 14:17:11 -0500
committerGitHub <noreply@github.com>2018-11-03 14:17:11 -0500
commit133db09d179c3f5afe7e02dc13ab6687517db5a1 (patch)
tree4f433ad0811495ced4900055426f5d9ac3c658f5 /tests/test_session.py
parentfc67869fb2732e715905614af3f9a69d48aed644 (diff)
parent02caee917f1b629467942ae3112d10e13d03202a (diff)
downloadpyramid-133db09d179c3f5afe7e02dc13ab6687517db5a1.tar.gz
pyramid-133db09d179c3f5afe7e02dc13ab6687517db5a1.tar.bz2
pyramid-133db09d179c3f5afe7e02dc13ab6687517db5a1.zip
Merge pull request #3412 from mmerickel/remove-unencrypted-session-config
remove UnencryptedCookieSessionFactoryConfig and signed_(de)serialize
Diffstat (limited to 'tests/test_session.py')
-rw-r--r--tests/test_session.py173
1 files changed, 0 insertions, 173 deletions
diff --git a/tests/test_session.py b/tests/test_session.py
index 05c257e73..6f93864a5 100644
--- a/tests/test_session.py
+++ b/tests/test_session.py
@@ -524,94 +524,6 @@ class TestSignedCookieSession(SharedCookieSessionTests, unittest.TestCase):
self.assertEqual(session, {})
-class TestUnencryptedCookieSession(
- SharedCookieSessionTests, unittest.TestCase
-):
- def setUp(self):
- super(TestUnencryptedCookieSession, self).setUp()
- from zope.deprecation import __show__
-
- __show__.off()
-
- def tearDown(self):
- super(TestUnencryptedCookieSession, self).tearDown()
- from zope.deprecation import __show__
-
- __show__.on()
-
- def _makeOne(self, request, **kw):
- from pyramid.session import UnencryptedCookieSessionFactoryConfig
-
- self._rename_cookie_var(kw, 'path', 'cookie_path')
- self._rename_cookie_var(kw, 'domain', 'cookie_domain')
- self._rename_cookie_var(kw, 'secure', 'cookie_secure')
- self._rename_cookie_var(kw, 'httponly', 'cookie_httponly')
- self._rename_cookie_var(kw, 'set_on_exception', 'cookie_on_exception')
- return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)
-
- def _rename_cookie_var(self, kw, src, dest):
- if src in kw:
- kw.setdefault(dest, kw.pop(src))
-
- def _serialize(self, value):
- from pyramid.compat import bytes_
- from pyramid.session import signed_serialize
-
- return bytes_(signed_serialize(value, 'secret'))
-
- def test_serialize_option(self):
- from pyramid.response import Response
-
- secret = 'secret'
- request = testing.DummyRequest()
- session = self._makeOne(
- request, signed_serialize=dummy_signed_serialize
- )
- session['key'] = 'value'
- response = Response()
- self.assertEqual(session._set_cookie(response), True)
- cookie = response.headerlist[-1][1]
- expected_cookieval = dummy_signed_serialize(
- (session.accessed, session.created, {'key': 'value'}), secret
- )
- response = Response()
- response.set_cookie('session', expected_cookieval, samesite='Lax')
- expected_cookie = response.headerlist[-1][1]
- self.assertEqual(cookie, expected_cookie)
-
- def test_deserialize_option(self):
- import time
-
- secret = 'secret'
- request = testing.DummyRequest()
- accessed = time.time()
- state = {'key': 'value'}
- cookieval = dummy_signed_serialize((accessed, accessed, state), secret)
- request.cookies['session'] = cookieval
- session = self._makeOne(
- request, signed_deserialize=dummy_signed_deserialize
- )
- self.assertEqual(dict(session), state)
-
-
-def dummy_signed_serialize(data, secret):
- import base64
- from pyramid.compat import pickle, bytes_
-
- pickled = pickle.dumps(data)
- return base64.b64encode(bytes_(secret)) + base64.b64encode(pickled)
-
-
-def dummy_signed_deserialize(serialized, secret):
- import base64
- from pyramid.compat import pickle, bytes_
-
- serialized_data = base64.b64decode(
- serialized[len(base64.b64encode(bytes_(secret))) :]
- )
- return pickle.loads(serialized_data)
-
-
class Test_manage_accessed(unittest.TestCase):
def _makeOne(self, wrapped):
from pyramid.session import manage_accessed
@@ -669,91 +581,6 @@ class Test_manage_changed(unittest.TestCase):
self.assertTrue(session._dirty)
-def serialize(data, secret):
- import hmac
- import base64
- from hashlib import sha1
- from pyramid.compat import bytes_
- from pyramid.compat import native_
- from pyramid.compat import pickle
-
- pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
- sig = hmac.new(bytes_(secret, 'utf-8'), pickled, sha1).hexdigest()
- return sig + native_(base64.b64encode(pickled))
-
-
-class Test_signed_serialize(unittest.TestCase):
- def _callFUT(self, data, secret):
- from pyramid.session import signed_serialize
-
- return signed_serialize(data, secret)
-
- def test_it(self):
- expected = serialize('123', 'secret')
- result = self._callFUT('123', 'secret')
- self.assertEqual(result, expected)
-
- def test_it_with_highorder_secret(self):
- secret = b'\xce\xb1\xce\xb2\xce\xb3\xce\xb4'.decode('utf-8')
- expected = serialize('123', secret)
- result = self._callFUT('123', secret)
- self.assertEqual(result, expected)
-
- def test_it_with_latin1_secret(self):
- secret = b'La Pe\xc3\xb1a'
- expected = serialize('123', secret)
- result = self._callFUT('123', secret.decode('latin-1'))
- self.assertEqual(result, expected)
-
-
-class Test_signed_deserialize(unittest.TestCase):
- def _callFUT(self, serialized, secret, hmac=None):
- if hmac is None:
- import hmac
- from pyramid.session import signed_deserialize
-
- return signed_deserialize(serialized, secret, hmac=hmac)
-
- def test_it(self):
- serialized = serialize('123', 'secret')
- result = self._callFUT(serialized, 'secret')
- self.assertEqual(result, '123')
-
- def test_invalid_bits(self):
- serialized = serialize('123', 'secret')
- self.assertRaises(ValueError, self._callFUT, serialized, 'seekrit')
-
- def test_invalid_len(self):
- class hmac(object):
- def new(self, *arg):
- return self
-
- def hexdigest(self):
- return '1234'
-
- serialized = serialize('123', 'secret123')
- self.assertRaises(
- ValueError, self._callFUT, serialized, 'secret', hmac=hmac()
- )
-
- def test_it_bad_encoding(self):
- serialized = 'bad' + serialize('123', 'secret')
- self.assertRaises(ValueError, self._callFUT, serialized, 'secret')
-
- def test_it_with_highorder_secret(self):
- secret = b'\xce\xb1\xce\xb2\xce\xb3\xce\xb4'.decode('utf-8')
- serialized = serialize('123', secret)
- result = self._callFUT(serialized, secret)
- self.assertEqual(result, '123')
-
- # bwcompat with pyramid <= 1.5b1 where latin1 is the default
- def test_it_with_latin1_secret(self):
- secret = b'La Pe\xc3\xb1a'
- serialized = serialize('123', secret)
- result = self._callFUT(serialized, secret.decode('latin-1'))
- self.assertEqual(result, '123')
-
-
class TestPickleSerializer(unittest.TestCase):
def _makeOne(self):
from pyramid.session import PickleSerializer