# -*- coding: utf-8 -*-
from webapp2_extras import securecookie
import test_base
class TestSecureCookie(test_base.BaseTestCase):
def test_secure_cookie_serializer(self):
serializer = securecookie.SecureCookieSerializer('secret-key')
serializer._get_timestamp = lambda: 1
value = ['a', 'b', 'c']
result = 'WyJhIiwiYiIsImMiXQ==|1|38837d6af8ac1ded9292b83924fc8521ce76f47e'
rv = serializer.serialize('foo', value)
self.assertEqual(rv, result)
rv = serializer.deserialize('foo', result)
self.assertEqual(rv, value)
# no value
rv = serializer.deserialize('foo', None)
self.assertEqual(rv, None)
# not 3 parts
rv = serializer.deserialize('foo', 'a|b')
self.assertEqual(rv, None)
# bad signature
rv = serializer.deserialize('foo', result + 'foo')
self.assertEqual(rv, None)
# too old
rv = serializer.deserialize('foo', result, max_age=-86400)
self.assertEqual(rv, None)
# not correctly encoded
serializer2 = securecookie.SecureCookieSerializer('foo')
serializer2._encode = lambda x: 'foo'
result2 = serializer2.serialize('foo', value)
rv2 = serializer2.deserialize('foo', result2)
self.assertEqual(rv2, None)
if __name__ == '__main__':
test_base.main()