forked from pool/python-Beaker
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Beaker?expand=0&rev=50
1465 lines
53 KiB
Diff
1465 lines
53 KiB
Diff
---
|
|
beaker/cache.py | 2
|
|
beaker/util.py | 2
|
|
setup.cfg | 2
|
|
setup.py | 4 -
|
|
tests/test_cache.py | 16 +++----
|
|
tests/test_cache_decorator.py | 5 --
|
|
tests/test_cachemanager.py | 8 +--
|
|
tests/test_container.py | 39 ++++++++----------
|
|
tests/test_cookie_domain_only.py | 25 ++++--------
|
|
tests/test_cookie_expires.py | 5 --
|
|
tests/test_cookie_only.py | 58 +++++++++++++--------------
|
|
tests/test_database.py | 28 ++++++-------
|
|
tests/test_domain_setting.py | 15 ++-----
|
|
tests/test_increment.py | 31 +++++++-------
|
|
tests/test_managers/base.py | 16 +++----
|
|
tests/test_memcached.py | 60 +++++++++++++---------------
|
|
tests/test_namespacing.py | 2
|
|
tests/test_session.py | 81 +++++++++++++++++----------------------
|
|
tests/test_sqla.py | 14 +++---
|
|
tests/test_synchronizer.py | 2
|
|
tests/test_unicode_cache_keys.py | 12 +++--
|
|
21 files changed, 202 insertions(+), 225 deletions(-)
|
|
|
|
--- a/beaker/util.py
|
|
+++ b/beaker/util.py
|
|
@@ -50,7 +50,7 @@ def skip_if(predicate, reason=None):
|
|
"""Skip a test if predicate is true."""
|
|
reason = reason or predicate.__name__
|
|
|
|
- from nose import SkipTest
|
|
+ from unittest import SkipTest
|
|
|
|
def decorate(fn):
|
|
fn_name = fn.__name__
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -23,7 +23,7 @@ if not hasattr(inspect, 'signature'):
|
|
INSTALL_REQUIRES.append('funcsigs')
|
|
|
|
|
|
-TESTS_REQUIRE = ['nose', 'Mock', 'pycryptodome']
|
|
+TESTS_REQUIRE = ['pytest', 'Mock', 'pycryptodome']
|
|
|
|
if py_version == (2, 6):
|
|
TESTS_REQUIRE.append('WebTest<2.0.24')
|
|
@@ -94,7 +94,7 @@ setup(name='Beaker',
|
|
'cryptography': ['cryptography'],
|
|
'testsuite': [TESTS_REQUIRE]
|
|
},
|
|
- test_suite='nose.collector',
|
|
+ test_suite='tests',
|
|
tests_require=TESTS_REQUIRE,
|
|
entry_points="""
|
|
[paste.filter_factory]
|
|
--- a/tests/test_cache.py
|
|
+++ b/tests/test_cache.py
|
|
@@ -10,15 +10,15 @@ import time
|
|
from beaker.middleware import CacheMiddleware
|
|
from beaker import util
|
|
from beaker.cache import Cache
|
|
-from nose import SkipTest
|
|
+from unittest import SkipTest
|
|
from beaker.util import skip_if
|
|
import base64
|
|
import zlib
|
|
|
|
try:
|
|
- from webtest import TestApp
|
|
+ from webtest import TestApp as WebTestApp
|
|
except ImportError:
|
|
- TestApp = None
|
|
+ WebTestApp = None
|
|
|
|
# Tarballs of the output of:
|
|
# >>> from beaker.cache import Cache
|
|
@@ -202,9 +202,9 @@ def test_multi_keys():
|
|
assert 'howdy' == cache.get_value('key2', createfunc=create_func)
|
|
assert called == {}
|
|
|
|
-@skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_increment():
|
|
- app = TestApp(CacheMiddleware(simple_app))
|
|
+ app = WebTestApp(CacheMiddleware(simple_app))
|
|
res = app.get('/', extra_environ={'beaker.type':type, 'beaker.clear':True})
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -212,9 +212,9 @@ def test_increment():
|
|
res = app.get('/')
|
|
assert 'current value is: 3' in res
|
|
|
|
-@skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_cache_manager():
|
|
- app = TestApp(CacheMiddleware(cache_manager_app))
|
|
+ app = WebTestApp(CacheMiddleware(cache_manager_app))
|
|
res = app.get('/')
|
|
assert 'test_key is: test value' in res
|
|
assert 'test_key cleared' in res
|
|
@@ -300,6 +300,6 @@ def _test_upgrade_setitem(dir):
|
|
assert cache['foo'] == 'bar'
|
|
|
|
|
|
-def teardown():
|
|
+def teardown_module():
|
|
import shutil
|
|
shutil.rmtree('./cache', True)
|
|
--- a/tests/test_cache_decorator.py
|
|
+++ b/tests/test_cache_decorator.py
|
|
@@ -1,14 +1,13 @@
|
|
import time
|
|
from datetime import datetime
|
|
|
|
-import beaker.cache as cache
|
|
from beaker.cache import CacheManager, cache_region, region_invalidate
|
|
from beaker import util
|
|
-from nose import SkipTest
|
|
+from unittest import SkipTest
|
|
|
|
defaults = {'cache.data_dir':'./cache', 'cache.type':'dbm', 'cache.expire': 2}
|
|
|
|
-def teardown():
|
|
+def teardown_module():
|
|
import shutil
|
|
shutil.rmtree('./cache', True)
|
|
|
|
--- a/tests/test_cachemanager.py
|
|
+++ b/tests/test_cachemanager.py
|
|
@@ -8,7 +8,7 @@ from beaker.util import parse_cache_conf
|
|
|
|
defaults = {'cache.data_dir':'./cache', 'cache.type':'dbm', 'cache.expire': 2}
|
|
|
|
-def teardown():
|
|
+def teardown_module():
|
|
import shutil
|
|
shutil.rmtree('./cache', True)
|
|
|
|
@@ -58,7 +58,7 @@ def test_parse_doesnt_allow_empty_region
|
|
|
|
def test_decorators():
|
|
for func in (make_region_cached_func, make_cached_func):
|
|
- yield check_decorator, func()
|
|
+ check_decorator(func())
|
|
|
|
def check_decorator(func):
|
|
result = func('Fred')
|
|
@@ -119,7 +119,7 @@ def test_long_name():
|
|
name = 'Fred' * 250
|
|
result = func(name)
|
|
assert name in result
|
|
-
|
|
+
|
|
result2 = func(name)
|
|
assert result == result2
|
|
# This won't actually invalidate it since the key won't be sha'd
|
|
@@ -127,7 +127,7 @@ def test_long_name():
|
|
|
|
result3 = func(name)
|
|
assert result3 == result2
|
|
-
|
|
+
|
|
# And now this should invalidate it
|
|
_cache_obj.invalidate(func, 'loader', name)
|
|
result4 = func(name)
|
|
@@ -217,4 +217,4 @@ def test_directory_goes_away():
|
|
|
|
msg3 = load_with_str_expire('fred')
|
|
assert msg == msg2, (msg, msg2)
|
|
- assert msg2 != msg3, (msg2, msg3)
|
|
\ No newline at end of file
|
|
+ assert msg2 != msg3, (msg2, msg3)
|
|
--- a/tests/test_container.py
|
|
+++ b/tests/test_container.py
|
|
@@ -1,6 +1,11 @@
|
|
import os
|
|
+import pickle
|
|
import random
|
|
+import shutil
|
|
+import sys
|
|
import time
|
|
+import pytest
|
|
+
|
|
from beaker.container import *
|
|
from beaker.synchronization import _synchronizers
|
|
from beaker.cache import clsmap
|
|
@@ -34,10 +39,10 @@ def _run_container_test(cls, totaltime,
|
|
|
|
if threadlocal:
|
|
localvalue = Value(
|
|
- 'test',
|
|
- cls('test', data_dir='./cache'),
|
|
- createfunc=CachedWidget,
|
|
- expiretime=expiretime,
|
|
+ 'test',
|
|
+ cls('test', data_dir='./cache'),
|
|
+ createfunc=CachedWidget,
|
|
+ expiretime=expiretime,
|
|
starttime=starttime)
|
|
localvalue.clear_value()
|
|
else:
|
|
@@ -60,10 +65,10 @@ def _run_container_test(cls, totaltime,
|
|
|
|
if not threadlocal:
|
|
value = Value(
|
|
- 'test',
|
|
- cls('test', data_dir='./cache'),
|
|
- createfunc=CachedWidget,
|
|
- expiretime=expiretime,
|
|
+ 'test',
|
|
+ cls('test', data_dir='./cache'),
|
|
+ createfunc=CachedWidget,
|
|
+ expiretime=expiretime,
|
|
starttime=starttime)
|
|
value.clear_value()
|
|
else:
|
|
@@ -124,6 +129,9 @@ def test_file_container_3():
|
|
def test_file_container_tlocal():
|
|
test_file_container(expiretime=15, delay=2, threadlocal=True)
|
|
|
|
+
|
|
+@pytest.mark.skipif(sys.version_info < (3, 6),
|
|
+ reason="Cryptography not supported on Python 3 lower than 3.6")
|
|
def test_file_open_bug():
|
|
"""ensure errors raised during reads or writes don't lock the namespace open."""
|
|
|
|
@@ -137,35 +145,29 @@ def test_file_open_bug():
|
|
f.write("BLAH BLAH BLAH")
|
|
f.close()
|
|
|
|
- # TODO: do we have an assertRaises() in nose to use here ?
|
|
- try:
|
|
+ with pytest.raises(pickle.UnpicklingError):
|
|
value.set_value("y")
|
|
- assert False
|
|
- except:
|
|
- pass
|
|
|
|
_synchronizers.clear()
|
|
|
|
value = Value('test', clsmap['file']('reentrant_test', data_dir='./cache'))
|
|
|
|
# TODO: do we have an assertRaises() in nose to use here ?
|
|
- try:
|
|
+ with pytest.raises(pickle.UnpicklingError):
|
|
value.set_value("z")
|
|
- assert False
|
|
- except:
|
|
- pass
|
|
|
|
|
|
def test_removing_file_refreshes():
|
|
"""test that the cache doesn't ignore file removals"""
|
|
|
|
x = [0]
|
|
+
|
|
def create():
|
|
x[0] += 1
|
|
return x[0]
|
|
|
|
- value = Value('test',
|
|
- clsmap['file']('refresh_test', data_dir='./cache'),
|
|
+ value = Value('test',
|
|
+ clsmap['file']('refresh_test', data_dir='./cache'),
|
|
createfunc=create, starttime=time.time()
|
|
)
|
|
if os.path.exists(value.namespace.file):
|
|
@@ -176,6 +178,5 @@ def test_removing_file_refreshes():
|
|
assert value.get_value() == 2
|
|
|
|
|
|
-def teardown():
|
|
- import shutil
|
|
+def teardown_module():
|
|
shutil.rmtree('./cache', True)
|
|
--- a/tests/test_cookie_domain_only.py
|
|
+++ b/tests/test_cookie_domain_only.py
|
|
@@ -1,23 +1,18 @@
|
|
-import re
|
|
-import os
|
|
+import pytest
|
|
|
|
-import beaker.session
|
|
from beaker.middleware import SessionMiddleware
|
|
-from nose import SkipTest
|
|
+from beaker import crypto
|
|
|
|
-try:
|
|
- from webtest import TestApp
|
|
-except ImportError:
|
|
- raise SkipTest("webtest not installed")
|
|
+webtest = pytest.importorskip("webtest")
|
|
+
|
|
+pytest.mark.skipif(not crypto.get_crypto_module('default').has_aes,
|
|
+ reason="No AES library is installed, can't test " +
|
|
+ "cookie-only Sessions")
|
|
|
|
-from beaker import crypto
|
|
-if not crypto.get_crypto_module('default').has_aes:
|
|
- raise SkipTest("No AES library is installed, can't test cookie-only "
|
|
- "Sessions")
|
|
|
|
def simple_app(environ, start_response):
|
|
session = environ['beaker.session']
|
|
- if not session.has_key('value'):
|
|
+ if 'value' not in session:
|
|
session['value'] = 0
|
|
session['value'] += 1
|
|
domain = environ.get('domain')
|
|
@@ -33,7 +28,7 @@ def simple_app(environ, start_response):
|
|
def test_increment():
|
|
options = {'session.validate_key':'hoobermas',
|
|
'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = webtest.TestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
|
|
@@ -53,7 +48,7 @@ def test_cookie_attributes_are_preserved
|
|
'session.secure': True,
|
|
'session.cookie_path': '/app',
|
|
'session.cookie_domain': 'localhost'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = webtest.TestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/app', extra_environ=dict(
|
|
HTTP_COOKIE='beaker.session.id=oldsessid', domain='.hoop.com'))
|
|
cookie = res.headers['Set-Cookie']
|
|
--- a/tests/test_cookie_expires.py
|
|
+++ b/tests/test_cookie_expires.py
|
|
@@ -1,6 +1,5 @@
|
|
from beaker.middleware import SessionMiddleware
|
|
from beaker.session import Session
|
|
-from nose.tools import *
|
|
import datetime
|
|
import re
|
|
|
|
@@ -18,7 +17,7 @@ def test_cookie_expires():
|
|
datetime.timedelta(minutes=5), now]
|
|
|
|
expected = [datetime.timedelta(seconds=300),
|
|
- datetime.timedelta(seconds=300),
|
|
+ datetime.timedelta(seconds=300),
|
|
True, True, True, True,
|
|
False, False, False, False,
|
|
datetime.timedelta(minutes=5), now]
|
|
@@ -31,7 +30,7 @@ def test_cookie_expires():
|
|
val = s.options['cookie_expires']
|
|
except:
|
|
val = None
|
|
- assert_equal(val, expected[pos])
|
|
+ assert val == expected[pos]
|
|
|
|
|
|
def cookie_expiration(session):
|
|
--- a/tests/test_cookie_only.py
|
|
+++ b/tests/test_cookie_only.py
|
|
@@ -1,6 +1,6 @@
|
|
-import datetime, time
|
|
+import datetime
|
|
+import time
|
|
import re
|
|
-import os
|
|
import json
|
|
|
|
import beaker.session
|
|
@@ -8,9 +8,9 @@ import beaker.util
|
|
from beaker.session import SignedCookie
|
|
from beaker._compat import b64decode
|
|
from beaker.middleware import SessionMiddleware
|
|
-from nose import SkipTest
|
|
+from unittest import SkipTest
|
|
try:
|
|
- from webtest import TestApp
|
|
+ from webtest import TestApp as WebTestApp
|
|
except ImportError:
|
|
raise SkipTest("webtest not installed")
|
|
|
|
@@ -21,7 +21,7 @@ if not crypto.get_crypto_module('default
|
|
|
|
def simple_app(environ, start_response):
|
|
session = environ['beaker.session']
|
|
- if not session.has_key('value'):
|
|
+ if 'value' not in session:
|
|
session['value'] = 0
|
|
session['value'] += 1
|
|
if not environ['PATH_INFO'].startswith('/nosave'):
|
|
@@ -32,7 +32,7 @@ def simple_app(environ, start_response):
|
|
|
|
def test_increment():
|
|
options = {'session.validate_key':'hoobermas', 'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -43,7 +43,7 @@ def test_increment():
|
|
def test_invalid_cookie():
|
|
# This is not actually a cookie only session, but we still test the cookie part.
|
|
options = {'session.validate_key':'hoobermas'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
@@ -59,7 +59,7 @@ def test_invalid_cookie():
|
|
def test_invalid_cookie_cookietype():
|
|
# This is not actually a cookie only session, but we still test the cookie part.
|
|
options = {'session.validate_key':'hoobermas', 'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
@@ -74,7 +74,7 @@ def test_invalid_cookie_cookietype():
|
|
|
|
def test_json_serializer():
|
|
options = {'session.validate_key':'hoobermas', 'session.type':'cookie', 'data_serializer': 'json'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
@@ -91,7 +91,7 @@ def test_json_serializer():
|
|
|
|
def test_pickle_serializer():
|
|
options = {'session.validate_key':'hoobermas', 'session.type':'cookie', 'data_serializer': 'pickle'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
@@ -119,7 +119,7 @@ def test_custom_serializer():
|
|
|
|
serializer = CustomSerializer()
|
|
options = {'session.validate_key':'hoobermas', 'session.type':'cookie', 'data_serializer': serializer}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
@@ -139,15 +139,15 @@ def test_custom_serializer():
|
|
def test_expires():
|
|
options = {'session.validate_key':'hoobermas', 'session.type':'cookie',
|
|
'session.cookie_expires': datetime.timedelta(days=1)}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'expires=' in res.headers.getall('Set-Cookie')[0]
|
|
assert 'current value is: 1' in res
|
|
|
|
def test_different_sessions():
|
|
options = {'session.validate_key':'hoobermas', 'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
- app2 = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
+ app2 = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app2.get('/')
|
|
@@ -161,7 +161,7 @@ def test_different_sessions():
|
|
|
|
def test_nosave():
|
|
options = {'session.validate_key':'hoobermas', 'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/nosave')
|
|
assert 'current value is: 1' in res
|
|
assert [] == res.headers.getall('Set-Cookie')
|
|
@@ -177,7 +177,7 @@ def test_nosave():
|
|
def test_increment_with_encryption():
|
|
options = {'session.encrypt_key':'666a19cf7f61c64c', 'session.validate_key':'hoobermas',
|
|
'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -188,8 +188,8 @@ def test_increment_with_encryption():
|
|
def test_different_sessions_with_encryption():
|
|
options = {'session.encrypt_key':'666a19cf7f61c64c', 'session.validate_key':'hoobermas',
|
|
'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
- app2 = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
+ app2 = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app2.get('/')
|
|
@@ -204,7 +204,7 @@ def test_different_sessions_with_encrypt
|
|
def test_nosave_with_encryption():
|
|
options = {'session.encrypt_key':'666a19cf7f61c64c', 'session.validate_key':'hoobermas',
|
|
'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/nosave')
|
|
assert 'current value is: 1' in res
|
|
assert [] == res.headers.getall('Set-Cookie')
|
|
@@ -220,7 +220,7 @@ def test_nosave_with_encryption():
|
|
def test_cookie_id():
|
|
options = {'session.encrypt_key':'666a19cf7f61c64c', 'session.validate_key':'hoobermas',
|
|
'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
|
|
res = app.get('/')
|
|
assert "_id':" in res
|
|
@@ -239,7 +239,7 @@ def test_invalidate_with_save_does_not_d
|
|
|
|
options = {'session.encrypt_key':'666a19cf7f61c64c', 'session.validate_key':'hoobermas',
|
|
'session.type':'cookie'}
|
|
- app = TestApp(SessionMiddleware(invalidate_session_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(invalidate_session_app, **options))
|
|
res = app.get('/')
|
|
assert 'expires=' not in res.headers.getall('Set-Cookie')[0]
|
|
|
|
@@ -252,7 +252,7 @@ def test_changing_encrypt_key_with_timeo
|
|
'session.timeout': 300,
|
|
'session.validate_key': 'hoobermas',
|
|
'session.type': 'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'The current value is: 1' in res, res
|
|
|
|
@@ -264,7 +264,7 @@ def test_changing_encrypt_key_with_timeo
|
|
'session.timeout': 300,
|
|
'session.validate_key': 'hoobermas',
|
|
'session.type': 'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/', headers={'Cookie': cookies})
|
|
assert 'The current value is: 2' in res, res
|
|
|
|
@@ -274,7 +274,7 @@ def test_changing_encrypt_key_with_timeo
|
|
'session.timeout': 300,
|
|
'session.validate_key': 'hoobermas',
|
|
'session.type': 'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/', headers={'Cookie': cookies})
|
|
|
|
# Let's check it created a new session as the old one is invalid
|
|
@@ -289,7 +289,7 @@ def test_cookie_properly_expires():
|
|
'session.timeout': 1,
|
|
'session.validate_key': 'hoobermas',
|
|
'session.type': 'cookie'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'The current value is: 1' in res, res
|
|
|
|
@@ -308,7 +308,7 @@ def test_cookie_attributes_are_preserved
|
|
'session.httponly': True,
|
|
'session.secure': True,
|
|
'session.samesite': 'Strict'}
|
|
- app = TestApp(SessionMiddleware(simple_app, options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, options))
|
|
res = app.get('/')
|
|
cookie = res.headers['Set-Cookie']
|
|
assert 'secure' in cookie.lower()
|
|
@@ -324,7 +324,7 @@ def test_cookie_path_properly_set_after_
|
|
'session.type': 'cookie',
|
|
'session.cookie_path': COOKIE_PATH,
|
|
}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/app')
|
|
cookie = res.headers['Set-Cookie']
|
|
|
|
@@ -339,7 +339,7 @@ def test_cookie_path_properly_set_after_
|
|
'session.type': 'cookie',
|
|
'session.cookie_path': COOKIE_PATH,
|
|
}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
# Perform one request to set the cookie
|
|
res = app.get('/app')
|
|
# Perform another request to load the previous session from the cookie
|
|
@@ -363,7 +363,7 @@ def test_cookie_path_properly_set_after_
|
|
'session.type': 'cookie',
|
|
'session.cookie_path': COOKIE_PATH,
|
|
}
|
|
- app = TestApp(SessionMiddleware(delete_session_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(delete_session_app, **options))
|
|
res = app.get('/app')
|
|
cookie = res.headers['Set-Cookie']
|
|
|
|
--- a/tests/test_database.py
|
|
+++ b/tests/test_database.py
|
|
@@ -4,12 +4,12 @@ from beaker._compat import u_
|
|
from beaker.cache import clsmap, Cache, util
|
|
from beaker.exceptions import InvalidCacheBackendError
|
|
from beaker.middleware import CacheMiddleware
|
|
-from nose import SkipTest
|
|
+from unittest import SkipTest
|
|
|
|
try:
|
|
- from webtest import TestApp
|
|
+ from webtest import TestApp as WebTestApp
|
|
except ImportError:
|
|
- TestApp = None
|
|
+ WebTestApp = None
|
|
|
|
|
|
try:
|
|
@@ -57,30 +57,30 @@ def test_has_key():
|
|
cache = Cache('test', data_dir='./cache', url=db_url, type='ext:database')
|
|
o = object()
|
|
cache.set_value("test", o)
|
|
- assert cache.has_key("test")
|
|
assert "test" in cache
|
|
- assert not cache.has_key("foo")
|
|
+ assert "test" in cache
|
|
+ assert "foo" not in cache
|
|
assert "foo" not in cache
|
|
cache.remove_value("test")
|
|
- assert not cache.has_key("test")
|
|
+ assert "test" not in cache
|
|
|
|
def test_has_key_multicache():
|
|
cache = Cache('test', data_dir='./cache', url=db_url, type='ext:database')
|
|
o = object()
|
|
cache.set_value("test", o)
|
|
- assert cache.has_key("test")
|
|
+ assert "test" in cache
|
|
assert "test" in cache
|
|
cache = Cache('test', data_dir='./cache', url=db_url, type='ext:database')
|
|
- assert cache.has_key("test")
|
|
+ assert "test" in cache
|
|
cache.remove_value('test')
|
|
|
|
def test_clear():
|
|
cache = Cache('test', data_dir='./cache', url=db_url, type='ext:database')
|
|
o = object()
|
|
cache.set_value("test", o)
|
|
- assert cache.has_key("test")
|
|
+ assert "test" in cache
|
|
cache.clear()
|
|
- assert not cache.has_key("test")
|
|
+ assert "test" not in cache
|
|
|
|
def test_unicode_keys():
|
|
cache = Cache('test', data_dir='./cache', url=db_url, type='ext:database')
|
|
@@ -91,9 +91,9 @@ def test_unicode_keys():
|
|
cache.remove_value(u_('hiŏ'))
|
|
assert u_('hiŏ') not in cache
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_increment():
|
|
- app = TestApp(CacheMiddleware(simple_app))
|
|
+ app = WebTestApp(CacheMiddleware(simple_app))
|
|
res = app.get('/', extra_environ={'beaker.clear':True})
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -101,9 +101,9 @@ def test_increment():
|
|
res = app.get('/')
|
|
assert 'current value is: 3' in res
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_cache_manager():
|
|
- app = TestApp(CacheMiddleware(cache_manager_app))
|
|
+ app = WebTestApp(CacheMiddleware(cache_manager_app))
|
|
res = app.get('/')
|
|
assert 'test_key is: test value' in res
|
|
assert 'test_key cleared' in res
|
|
--- a/tests/test_domain_setting.py
|
|
+++ b/tests/test_domain_setting.py
|
|
@@ -1,14 +1,11 @@
|
|
-import re
|
|
-import os
|
|
-
|
|
from beaker.middleware import SessionMiddleware
|
|
-from nose import SkipTest
|
|
+from unittest import SkipTest
|
|
try:
|
|
- from webtest import TestApp
|
|
+ from webtest import TestApp as WebTestApp
|
|
except ImportError:
|
|
raise SkipTest("webtest not installed")
|
|
|
|
-def teardown():
|
|
+def teardown_module():
|
|
import shutil
|
|
shutil.rmtree('./cache', True)
|
|
|
|
@@ -17,7 +14,7 @@ def simple_app(environ, start_response):
|
|
domain = environ.get('domain')
|
|
if domain:
|
|
session.domain = domain
|
|
- if not session.has_key('value'):
|
|
+ if 'value' not in session:
|
|
session['value'] = 0
|
|
session['value'] += 1
|
|
if not environ['PATH_INFO'].startswith('/nosave'):
|
|
@@ -32,7 +29,7 @@ def test_same_domain():
|
|
options = {'session.data_dir':'./cache',
|
|
'session.secret':'blah',
|
|
'session.cookie_domain': '.hoop.com'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/', extra_environ=dict(HTTP_HOST='subdomain.hoop.com'))
|
|
assert 'current value is: 1' in res
|
|
assert 'Domain=.hoop.com' in res.headers['Set-Cookie']
|
|
@@ -46,7 +43,7 @@ def test_same_domain():
|
|
def test_different_domain():
|
|
options = {'session.data_dir':'./cache',
|
|
'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/', extra_environ=dict(domain='.hoop.com',
|
|
HTTP_HOST='www.hoop.com'))
|
|
res = app.get('/', extra_environ=dict(domain='.hoop.co.uk',
|
|
--- a/tests/test_increment.py
|
|
+++ b/tests/test_increment.py
|
|
@@ -1,15 +1,14 @@
|
|
import re
|
|
-import os
|
|
+import unittest
|
|
|
|
from beaker.middleware import SessionMiddleware
|
|
-from nose import SkipTest
|
|
try:
|
|
- from webtest import TestApp
|
|
+ from webtest import TestApp as WebTestApp
|
|
except ImportError:
|
|
- raise SkipTest("webtest not installed")
|
|
+ raise unittest.SkipTest("webtest not installed")
|
|
|
|
|
|
-def teardown():
|
|
+def teardown_module():
|
|
import shutil
|
|
shutil.rmtree('./cache', True)
|
|
|
|
@@ -60,7 +59,7 @@ def simple_auto_app(environ, start_respo
|
|
|
|
def test_no_save():
|
|
options = {'session.data_dir':'./cache', 'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(no_save_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(no_save_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: None' in res
|
|
assert [] == res.headers.getall('Set-Cookie')
|
|
@@ -68,7 +67,7 @@ def test_no_save():
|
|
|
|
def test_increment():
|
|
options = {'session.data_dir':'./cache', 'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -78,7 +77,7 @@ def test_increment():
|
|
|
|
def test_increment_auto():
|
|
options = {'session.data_dir':'./cache', 'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(simple_auto_app, auto=True, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_auto_app, auto=True, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -89,8 +88,8 @@ def test_increment_auto():
|
|
|
|
def test_different_sessions():
|
|
options = {'session.data_dir':'./cache', 'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
- app2 = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
+ app2 = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app2.get('/')
|
|
@@ -104,8 +103,8 @@ def test_different_sessions():
|
|
|
|
def test_different_sessions_auto():
|
|
options = {'session.data_dir':'./cache', 'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(simple_auto_app, auto=True, **options))
|
|
- app2 = TestApp(SessionMiddleware(simple_auto_app, auto=True, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_auto_app, auto=True, **options))
|
|
+ app2 = WebTestApp(SessionMiddleware(simple_auto_app, auto=True, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app2.get('/')
|
|
@@ -119,7 +118,7 @@ def test_different_sessions_auto():
|
|
|
|
def test_nosave():
|
|
options = {'session.data_dir':'./cache', 'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/nosave')
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/nosave')
|
|
@@ -132,7 +131,7 @@ def test_nosave():
|
|
|
|
def test_revert():
|
|
options = {'session.data_dir':'./cache', 'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(simple_auto_app, auto=True, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_auto_app, auto=True, **options))
|
|
res = app.get('/nosave')
|
|
assert 'current value is: 0' in res
|
|
res = app.get('/nosave')
|
|
@@ -152,7 +151,7 @@ def test_revert():
|
|
|
|
def test_load_session_by_id():
|
|
options = {'session.data_dir':'./cache', 'session.secret':'blah'}
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -161,7 +160,7 @@ def test_load_session_by_id():
|
|
old_id = re.sub(r'^.*?session id is (\S+)$', r'\1', res.body.decode('utf-8'), re.M)
|
|
|
|
# Clear the cookies and do a new request
|
|
- app = TestApp(SessionMiddleware(simple_app, **options))
|
|
+ app = WebTestApp(SessionMiddleware(simple_app, **options))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
|
|
--- a/tests/test_memcached.py
|
|
+++ b/tests/test_memcached.py
|
|
@@ -2,34 +2,32 @@
|
|
from beaker._compat import u_
|
|
|
|
import mock
|
|
-import os
|
|
|
|
-from beaker.cache import clsmap, Cache, CacheManager, util
|
|
+from beaker.cache import Cache, CacheManager, util
|
|
from beaker.middleware import CacheMiddleware, SessionMiddleware
|
|
from beaker.exceptions import InvalidCacheBackendError
|
|
from beaker.util import parse_cache_config_options
|
|
-from nose import SkipTest
|
|
import unittest
|
|
|
|
try:
|
|
- from webtest import TestApp
|
|
+ from webtest import TestApp as WebTestApp
|
|
except ImportError:
|
|
- TestApp = None
|
|
+ WebTestApp = None
|
|
|
|
try:
|
|
from beaker.ext import memcached
|
|
client = memcached._load_client()
|
|
except InvalidCacheBackendError:
|
|
- raise SkipTest("an appropriate memcached backend is not installed")
|
|
+ raise unittest.SkipTest("an appropriate memcached backend is not installed")
|
|
|
|
mc_url = '127.0.0.1:11211'
|
|
|
|
c =client.Client([mc_url])
|
|
c.set('x', 'y')
|
|
if not c.get('x'):
|
|
- raise SkipTest("Memcached is not running at %s" % mc_url)
|
|
+ raise unittest.SkipTest("Memcached is not running at %s" % mc_url)
|
|
|
|
-def teardown():
|
|
+def teardown_module():
|
|
import shutil
|
|
shutil.rmtree('./cache', True)
|
|
|
|
@@ -122,9 +120,9 @@ def cache_manager_app(environ, start_res
|
|
)).encode('utf-8')
|
|
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_session():
|
|
- app = TestApp(SessionMiddleware(simple_session_app, data_dir='./cache', type='ext:memcached', url=mc_url))
|
|
+ app = WebTestApp(SessionMiddleware(simple_session_app, data_dir='./cache', type='ext:memcached', url=mc_url))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -133,9 +131,9 @@ def test_session():
|
|
assert 'current value is: 3' in res
|
|
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_session_invalid():
|
|
- app = TestApp(SessionMiddleware(simple_session_app, data_dir='./cache', type='ext:memcached', url=mc_url))
|
|
+ app = WebTestApp(SessionMiddleware(simple_session_app, data_dir='./cache', type='ext:memcached', url=mc_url))
|
|
res = app.get('/invalid', headers=dict(Cookie='beaker.session.id=df7324911e246b70b5781c3c58328442; Path=/'))
|
|
assert 'current value is: 2' in res
|
|
|
|
@@ -230,9 +228,9 @@ def test_spaces_in_keys():
|
|
assert cache.has_key("hasspace")
|
|
assert 42 == cache.get_value("hasspace")
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_increment():
|
|
- app = TestApp(CacheMiddleware(simple_app))
|
|
+ app = WebTestApp(CacheMiddleware(simple_app))
|
|
res = app.get('/', extra_environ={'beaker.clear':True})
|
|
assert 'current value is: 1' in res.text
|
|
res = app.get('/')
|
|
@@ -240,7 +238,7 @@ def test_increment():
|
|
res = app.get('/')
|
|
assert 'current value is: 3' in res.text
|
|
|
|
- app = TestApp(CacheMiddleware(simple_app))
|
|
+ app = WebTestApp(CacheMiddleware(simple_app))
|
|
res = app.get('/', extra_environ={'beaker.clear':True})
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -248,16 +246,16 @@ def test_increment():
|
|
res = app.get('/')
|
|
assert 'current value is: 3' in res
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_cache_manager():
|
|
- app = TestApp(CacheMiddleware(cache_manager_app))
|
|
+ app = WebTestApp(CacheMiddleware(cache_manager_app))
|
|
res = app.get('/')
|
|
assert 'test_key is: test value' in res.text
|
|
assert 'test_key cleared' in res.text
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_store_none():
|
|
- app = TestApp(CacheMiddleware(using_none_app))
|
|
+ app = WebTestApp(CacheMiddleware(using_none_app))
|
|
res = app.get('/', extra_environ={'beaker.clear':True})
|
|
assert 'current value is: 10' in res.text
|
|
res = app.get('/')
|
|
@@ -286,8 +284,8 @@ class TestPylibmcInit(unittest.TestCase)
|
|
|
|
def test_uses_pylibmc_client(self):
|
|
from beaker.ext import memcached
|
|
- cache = Cache('test', data_dir='./cache',
|
|
- memcache_module='pylibmc',
|
|
+ cache = Cache('test', data_dir='./cache',
|
|
+ memcache_module='pylibmc',
|
|
url=mc_url, type="ext:memcached")
|
|
assert isinstance(cache.namespace, memcached.PyLibMCNamespaceManager)
|
|
|
|
@@ -301,7 +299,7 @@ class TestPylibmcInit(unittest.TestCase)
|
|
assert isinstance(cache.namespace, memcached.MemcachedNamespaceManager)
|
|
|
|
def test_client(self):
|
|
- cache = Cache('test', data_dir='./cache', url=mc_url, type="ext:memcached",
|
|
+ cache = Cache('test', data_dir='./cache', url=mc_url, type="ext:memcached",
|
|
protocol='binary')
|
|
o = object()
|
|
cache.set_value("test", o)
|
|
@@ -314,22 +312,22 @@ class TestPylibmcInit(unittest.TestCase)
|
|
|
|
def test_client_behaviors(self):
|
|
config = {
|
|
- 'cache.lock_dir':'./lock',
|
|
- 'cache.data_dir':'./cache',
|
|
- 'cache.type':'ext:memcached',
|
|
+ 'cache.lock_dir':'./lock',
|
|
+ 'cache.data_dir':'./cache',
|
|
+ 'cache.type':'ext:memcached',
|
|
'cache.url':mc_url,
|
|
- 'cache.memcache_module':'pylibmc',
|
|
- 'cache.protocol':'binary',
|
|
- 'cache.behavior.ketama': 'True',
|
|
- 'cache.behavior.cas':False,
|
|
+ 'cache.memcache_module':'pylibmc',
|
|
+ 'cache.protocol':'binary',
|
|
+ 'cache.behavior.ketama': 'True',
|
|
+ 'cache.behavior.cas':False,
|
|
'cache.behavior.receive_timeout':'3600',
|
|
- 'cache.behavior.send_timeout':1800,
|
|
+ 'cache.behavior.send_timeout':1800,
|
|
'cache.behavior.tcp_nodelay':1,
|
|
'cache.behavior.auto_eject':"0"
|
|
}
|
|
cache_manager = CacheManager(**parse_cache_config_options(config))
|
|
cache = cache_manager.get_cache('test_behavior', expire=6000)
|
|
-
|
|
+
|
|
with cache.namespace.pool.reserve() as mc:
|
|
assert "ketama" in mc.behaviors
|
|
assert mc.behaviors["ketama"] == 1
|
|
--- a/tests/test_namespacing.py
|
|
+++ b/tests/test_namespacing.py
|
|
@@ -2,7 +2,7 @@ import os
|
|
import sys
|
|
|
|
|
|
-def teardown():
|
|
+def teardown_module():
|
|
import shutil
|
|
shutil.rmtree('./cache', True)
|
|
|
|
--- a/tests/test_session.py
|
|
+++ b/tests/test_session.py
|
|
@@ -8,13 +8,12 @@ import time
|
|
import unittest
|
|
import warnings
|
|
|
|
-from nose import SkipTest, with_setup
|
|
+import pytest
|
|
|
|
from beaker.container import MemoryNamespaceManager
|
|
from beaker.crypto import get_crypto_module
|
|
from beaker.exceptions import BeakerException
|
|
from beaker.session import CookieSession, Session, SessionObject
|
|
-from beaker.util import assert_raises
|
|
|
|
|
|
def get_session(**kwargs):
|
|
@@ -25,6 +24,8 @@ def get_session(**kwargs):
|
|
|
|
|
|
COOKIE_REQUEST = {}
|
|
+
|
|
+
|
|
def setup_cookie_request():
|
|
COOKIE_REQUEST.clear()
|
|
|
|
@@ -38,8 +39,8 @@ def get_cookie_session(**kwargs):
|
|
return CookieSession(COOKIE_REQUEST, **options)
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_session():
|
|
+ setup_cookie_request()
|
|
for test_case in (
|
|
check_save_load,
|
|
check_save_load_encryption,
|
|
@@ -50,9 +51,9 @@ def test_session():
|
|
check_invalidate,
|
|
check_timeout,
|
|
):
|
|
- for session_getter in (get_session, get_cookie_session,):
|
|
+ for session_getter in (get_session, get_cookie_session,):
|
|
setup_cookie_request()
|
|
- yield test_case, session_getter
|
|
+ test_case(session_getter)
|
|
|
|
|
|
def check_save_load(session_getter):
|
|
@@ -73,10 +74,9 @@ def check_save_load(session_getter):
|
|
assert session[u_('Deutchland')] == u_('Sebastian Vettel')
|
|
|
|
|
|
+@pytest.mark.skipif(not get_crypto_module('default').has_aes)
|
|
def check_save_load_encryption(session_getter):
|
|
"""Test if the data is actually persistent across requests"""
|
|
- if not get_crypto_module('default').has_aes:
|
|
- raise SkipTest()
|
|
session = session_getter(encrypt_key='666a19cf7f61c64c',
|
|
validate_key='hoobermas')
|
|
session[u_('Suomi')] = u_('Kimi Räikkönen')
|
|
@@ -95,15 +95,15 @@ def check_save_load_encryption(session_g
|
|
assert session[u_('Deutchland')] == u_('Sebastian Vettel')
|
|
|
|
|
|
+# cryptography only works for py3.3+, so skip for python 3.2
|
|
+@pytest.mark.skipif(sys.version_info[0] == 3 and sys.version_info[1] < 3,
|
|
+ reason="Cryptography not supported on Python 3 lower than 3.3")
|
|
def check_save_load_encryption_cryptography(session_getter):
|
|
"""Test if the data is actually persistent across requests"""
|
|
- # cryptography only works for py3.3+, so skip for python 3.2
|
|
- if sys.version_info[0] == 3 and sys.version_info[1] < 3:
|
|
- raise SkipTest("Cryptography not supported on Python 3 lower than 3.3")
|
|
try:
|
|
get_crypto_module('cryptography').has_aes
|
|
except BeakerException:
|
|
- raise SkipTest()
|
|
+ raise unittest.SkipTest()
|
|
session = session_getter(
|
|
encrypt_key='666a19cf7f61c64c',
|
|
validate_key='hoobermas',
|
|
@@ -126,10 +126,9 @@ def check_save_load_encryption_cryptogra
|
|
assert session[u_('Deutchland')] == u_('Sebastian Vettel')
|
|
|
|
|
|
+@pytest.mark.skipif(not get_crypto_module('default').has_aes)
|
|
def check_decryption_failure(session_getter):
|
|
"""Test if the data fails without the right keys"""
|
|
- if not get_crypto_module('default').has_aes:
|
|
- raise SkipTest()
|
|
session = session_getter(encrypt_key='666a19cf7f61c64c',
|
|
validate_key='hoobermas')
|
|
session[u_('Suomi')] = u_('Kimi Räikkönen')
|
|
@@ -196,10 +195,10 @@ def check_invalidate(session_getter):
|
|
assert u_('Deutchland') not in session
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_regenerate_id():
|
|
"""Test :meth:`Session.regenerate_id`"""
|
|
# new session & save
|
|
+ setup_cookie_request()
|
|
session = get_session()
|
|
orig_id = session.id
|
|
session[u_('foo')] = u_('bar')
|
|
@@ -260,44 +259,42 @@ def check_timeout(session_getter):
|
|
assert u_('Deutchland') not in session
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_timeout_requires_accessed_time():
|
|
"""Test that it doesn't allow setting save_accessed_time to False with
|
|
timeout enabled
|
|
"""
|
|
+ setup_cookie_request()
|
|
get_session(timeout=None, save_accessed_time=True) # is ok
|
|
get_session(timeout=None, save_accessed_time=False) # is ok
|
|
- assert_raises(BeakerException,
|
|
- get_session,
|
|
- timeout=2,
|
|
- save_accessed_time=False)
|
|
+ with pytest.raises(BeakerException):
|
|
+ get_session(timeout=2, save_accessed_time=False)
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_cookies_enabled():
|
|
"""
|
|
Test if cookies are sent out properly when ``use_cookies``
|
|
is set to ``True``
|
|
"""
|
|
+ setup_cookie_request()
|
|
session = get_session(use_cookies=True)
|
|
assert 'cookie_out' in session.request
|
|
- assert session.request['set_cookie'] == False
|
|
+ assert not session.request['set_cookie']
|
|
|
|
session.domain = 'example.com'
|
|
session.path = '/example'
|
|
- assert session.request['set_cookie'] == True
|
|
+ assert session.request['set_cookie']
|
|
assert 'beaker.session.id=%s' % session.id in session.request['cookie_out']
|
|
assert 'Domain=example.com' in session.request['cookie_out']
|
|
assert 'Path=/' in session.request['cookie_out']
|
|
|
|
session = get_session(use_cookies=True)
|
|
session.save()
|
|
- assert session.request['set_cookie'] == True
|
|
+ assert session.request['set_cookie']
|
|
assert 'beaker.session.id=%s' % session.id in session.request['cookie_out']
|
|
|
|
session = get_session(use_cookies=True, id=session.id)
|
|
session.delete()
|
|
- assert session.request['set_cookie'] == True
|
|
+ assert session.request['set_cookie']
|
|
assert 'beaker.session.id=%s' % session.id in session.request['cookie_out']
|
|
assert 'expires=' in session.request['cookie_out']
|
|
|
|
@@ -310,6 +307,7 @@ def test_cookies_enabled():
|
|
class ShowWarning(object):
|
|
def __init__(self):
|
|
self.msg = None
|
|
+
|
|
def __call__(self, message, category, filename, lineno, file=None, line=None):
|
|
self.msg = str(message)
|
|
orig_sw = warnings.showwarning
|
|
@@ -324,6 +322,7 @@ def test_cookies_enabled():
|
|
assert 'httponly' in cookie, cookie
|
|
warnings.showwarning = orig_sw
|
|
|
|
+
|
|
def test_cookies_disabled():
|
|
"""
|
|
Test that no cookies are sent when ``use_cookies`` is set to ``False``
|
|
@@ -345,12 +344,12 @@ def test_cookies_disabled():
|
|
assert 'cookie_out' not in session.request
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_file_based_replace_optimization():
|
|
"""Test the file-based backend with session,
|
|
which includes the 'replace' optimization.
|
|
|
|
"""
|
|
+ setup_cookie_request()
|
|
|
|
session = get_session(use_cookies=False, type='file',
|
|
data_dir='./cache')
|
|
@@ -391,10 +390,10 @@ def test_file_based_replace_optimization
|
|
session.namespace.do_close()
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_invalidate_corrupt():
|
|
+ setup_cookie_request()
|
|
session = get_session(use_cookies=False, type='file',
|
|
- data_dir='./cache')
|
|
+ data_dir='./cache')
|
|
session['foo'] = 'bar'
|
|
session.save()
|
|
|
|
@@ -402,12 +401,9 @@ def test_invalidate_corrupt():
|
|
f.write("crap")
|
|
f.close()
|
|
|
|
- assert_raises(
|
|
- (pickle.UnpicklingError, EOFError, TypeError, binascii.Error),
|
|
- get_session,
|
|
- use_cookies=False, type='file',
|
|
- data_dir='./cache', id=session.id
|
|
- )
|
|
+ with pytest.raises((pickle.UnpicklingError, EOFError, TypeError, binascii.Error,)):
|
|
+ get_session(use_cookies=False, type='file',
|
|
+ data_dir='./cache', id=session.id)
|
|
|
|
session = get_session(use_cookies=False, type='file',
|
|
invalidate_corrupt=True,
|
|
@@ -415,8 +411,8 @@ def test_invalidate_corrupt():
|
|
assert "foo" not in dict(session)
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_invalidate_empty_cookie():
|
|
+ setup_cookie_request()
|
|
kwargs = {'validate_key': 'test_key', 'encrypt_key': 'encrypt'}
|
|
session = get_cookie_session(**kwargs)
|
|
session['foo'] = 'bar'
|
|
@@ -427,8 +423,8 @@ def test_invalidate_empty_cookie():
|
|
assert "foo" not in dict(session)
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_unrelated_cookie():
|
|
+ setup_cookie_request()
|
|
kwargs = {'validate_key': 'test_key', 'encrypt_key': 'encrypt'}
|
|
session = get_cookie_session(**kwargs)
|
|
session['foo'] = 'bar'
|
|
@@ -439,8 +435,8 @@ def test_unrelated_cookie():
|
|
assert "foo" in dict(session)
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_invalidate_invalid_signed_cookie():
|
|
+ setup_cookie_request()
|
|
kwargs = {'validate_key': 'test_key', 'encrypt_key': 'encrypt'}
|
|
session = get_cookie_session(**kwargs)
|
|
session['foo'] = 'bar'
|
|
@@ -452,16 +448,12 @@ def test_invalidate_invalid_signed_cooki
|
|
COOKIE_REQUEST['cookie_out'][25:]
|
|
)
|
|
|
|
- assert_raises(
|
|
- BeakerException,
|
|
- get_cookie_session,
|
|
- id=session.id,
|
|
- invalidate_corrupt=False,
|
|
- )
|
|
+ with pytest.raises(BeakerException):
|
|
+ get_cookie_session(id=session.id, invalidate_corrupt=False)
|
|
|
|
|
|
-@with_setup(setup_cookie_request)
|
|
def test_invalidate_invalid_signed_cookie_invalidate_corrupt():
|
|
+ setup_cookie_request()
|
|
kwargs = {'validate_key': 'test_key', 'encrypt_key': 'encrypt'}
|
|
session = get_cookie_session(**kwargs)
|
|
session['foo'] = 'bar'
|
|
@@ -476,6 +468,7 @@ def test_invalidate_invalid_signed_cooki
|
|
session = get_cookie_session(id=session.id, invalidate_corrupt=True, **kwargs)
|
|
assert "foo" not in dict(session)
|
|
|
|
+
|
|
class TestSaveAccessedTime(unittest.TestCase):
|
|
# These tests can't use the memory session type since it seems that loading
|
|
# winds up with references to the underlying storage and makes changes to
|
|
@@ -504,7 +497,6 @@ class TestSaveAccessedTime(unittest.Test
|
|
'%r is not greater than %r' %
|
|
(session.last_accessed, last_accessed))
|
|
|
|
-
|
|
def test_saves_if_session_not_written_and_accessed_time_true(self):
|
|
session = get_session(data_dir='./cache', save_accessed_time=True)
|
|
# New sessions are treated a little differently so save the session
|
|
@@ -522,7 +514,6 @@ class TestSaveAccessedTime(unittest.Test
|
|
'%r is not greater than %r' %
|
|
(session.last_accessed, last_accessed))
|
|
|
|
-
|
|
def test_doesnt_save_if_session_not_written_and_accessed_time_false(self):
|
|
session = get_session(data_dir='./cache', save_accessed_time=False)
|
|
# New sessions are treated a little differently so save the session
|
|
--- a/tests/test_sqla.py
|
|
+++ b/tests/test_sqla.py
|
|
@@ -3,12 +3,12 @@ from beaker._compat import u_
|
|
from beaker.cache import clsmap, Cache, util
|
|
from beaker.exceptions import InvalidCacheBackendError
|
|
from beaker.middleware import CacheMiddleware
|
|
-from nose import SkipTest
|
|
+from unittest import SkipTest
|
|
|
|
try:
|
|
- from webtest import TestApp
|
|
+ from webtest import TestApp as WebTestApp
|
|
except ImportError:
|
|
- TestApp = None
|
|
+ WebTestApp = None
|
|
|
|
try:
|
|
clsmap['ext:sqla']._init_dependencies()
|
|
@@ -102,9 +102,9 @@ def test_unicode_keys():
|
|
cache.remove_value(u_('hiŏ'))
|
|
assert u_('hiŏ') not in cache
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_increment():
|
|
- app = TestApp(CacheMiddleware(simple_app))
|
|
+ app = WebTestApp(CacheMiddleware(simple_app))
|
|
res = app.get('/', extra_environ={'beaker.clear': True})
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -112,9 +112,9 @@ def test_increment():
|
|
res = app.get('/')
|
|
assert 'current value is: 3' in res
|
|
|
|
-@util.skip_if(lambda: TestApp is None, "webtest not installed")
|
|
+@util.skip_if(lambda: WebTestApp is None, "webtest not installed")
|
|
def test_cache_manager():
|
|
- app = TestApp(CacheMiddleware(cache_manager_app))
|
|
+ app = WebTestApp(CacheMiddleware(cache_manager_app))
|
|
res = app.get('/')
|
|
assert 'test_key is: test value' in res
|
|
assert 'test_key cleared' in res
|
|
--- a/tests/test_synchronizer.py
|
|
+++ b/tests/test_synchronizer.py
|
|
@@ -3,7 +3,7 @@ from beaker.synchronization import *
|
|
# TODO: spawn threads, test locking.
|
|
|
|
|
|
-def teardown():
|
|
+def teardown_module():
|
|
import shutil
|
|
shutil.rmtree('./cache', True)
|
|
|
|
--- a/tests/test_unicode_cache_keys.py
|
|
+++ b/tests/test_unicode_cache_keys.py
|
|
@@ -1,14 +1,16 @@
|
|
# coding: utf-8
|
|
-"""If we try to use a character not in ascii range as a cache key, we get an
|
|
-unicodeencode error. See
|
|
+"""If we try to use a character not in ascii range as a cache key, we get an
|
|
+unicodeencode error. See
|
|
https://bitbucket.org/bbangert/beaker/issue/31/cached-function-decorators-break-when-some
|
|
for more on this
|
|
"""
|
|
|
|
-from nose.tools import *
|
|
from beaker._compat import u_
|
|
from beaker.cache import CacheManager
|
|
|
|
+def eq_(a, b, msg=''):
|
|
+ assert a == b, msg
|
|
+
|
|
memory_cache = CacheManager(type='memory')
|
|
|
|
@memory_cache.cache('foo')
|
|
@@ -47,11 +49,11 @@ def test_B_replacing_non_ascii():
|
|
the function distinguishes between the two it should not return the
|
|
past value
|
|
"""
|
|
- assert_false(foo(u_('Espaáol'))==u_('Español'))
|
|
+ assert foo(u_('Espaáol')) != u_('Español')
|
|
eq_(foo(u_('Espaáol')), u_('Espaáol'))
|
|
|
|
def test_C_more_unicode():
|
|
- """We again test the same stuff but this time we use
|
|
+ """We again test the same stuff but this time we use
|
|
http://tools.ietf.org/html/draft-josefsson-idn-test-vectors-00#section-5
|
|
as keys"""
|
|
keys = [
|
|
--- a/setup.cfg
|
|
+++ b/setup.cfg
|
|
@@ -2,7 +2,7 @@
|
|
#tag_build = dev
|
|
#tag_svn_revision = false
|
|
|
|
-[nosetests]
|
|
+[tool:pytest]
|
|
where=tests
|
|
verbose=True
|
|
detailed-errors=True
|
|
--- a/tests/test_managers/base.py
|
|
+++ b/tests/test_managers/base.py
|
|
@@ -9,7 +9,7 @@ import datetime
|
|
from beaker._compat import u_
|
|
from beaker.cache import Cache
|
|
from beaker.middleware import SessionMiddleware, CacheMiddleware
|
|
-from webtest import TestApp
|
|
+from webtest import TestApp as WebTestApp
|
|
|
|
|
|
class CacheManagerBaseTests(unittest.TestCase):
|
|
@@ -99,7 +99,7 @@ class CacheManagerBaseTests(unittest.Tes
|
|
Cache('test', **self.CACHE_ARGS).clear()
|
|
|
|
def test_session(self):
|
|
- app = TestApp(SessionMiddleware(self.simple_session_app, **self.CACHE_ARGS))
|
|
+ app = WebTestApp(SessionMiddleware(self.simple_session_app, **self.CACHE_ARGS))
|
|
res = app.get('/')
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -108,13 +108,13 @@ class CacheManagerBaseTests(unittest.Tes
|
|
assert 'current value is: 3' in res
|
|
|
|
def test_session_invalid(self):
|
|
- app = TestApp(SessionMiddleware(self.simple_session_app, **self.CACHE_ARGS))
|
|
+ app = WebTestApp(SessionMiddleware(self.simple_session_app, **self.CACHE_ARGS))
|
|
res = app.get('/invalid', headers=dict(
|
|
Cookie='beaker.session.id=df7324911e246b70b5781c3c58328442; Path=/'))
|
|
assert 'current value is: 2' in res
|
|
|
|
def test_session_timeout(self):
|
|
- app = TestApp(SessionMiddleware(self.simple_session_app, timeout=1, **self.CACHE_ARGS))
|
|
+ app = WebTestApp(SessionMiddleware(self.simple_session_app, timeout=1, **self.CACHE_ARGS))
|
|
|
|
session = app.app._get_session()
|
|
session.save()
|
|
@@ -197,7 +197,7 @@ class CacheManagerBaseTests(unittest.Tes
|
|
assert 42 == cache.get_value("hasspace")
|
|
|
|
def test_increment(self):
|
|
- app = TestApp(CacheMiddleware(self.simple_app))
|
|
+ app = WebTestApp(CacheMiddleware(self.simple_app))
|
|
res = app.get('/', extra_environ={'beaker.clear': True})
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -205,7 +205,7 @@ class CacheManagerBaseTests(unittest.Tes
|
|
res = app.get('/')
|
|
assert 'current value is: 3' in res
|
|
|
|
- app = TestApp(CacheMiddleware(self.simple_app))
|
|
+ app = WebTestApp(CacheMiddleware(self.simple_app))
|
|
res = app.get('/', extra_environ={'beaker.clear': True})
|
|
assert 'current value is: 1' in res
|
|
res = app.get('/')
|
|
@@ -214,13 +214,13 @@ class CacheManagerBaseTests(unittest.Tes
|
|
assert 'current value is: 3' in res
|
|
|
|
def test_cache_manager(self):
|
|
- app = TestApp(CacheMiddleware(self.cache_manager_app))
|
|
+ app = WebTestApp(CacheMiddleware(self.cache_manager_app))
|
|
res = app.get('/')
|
|
assert 'test_key is: test value' in res
|
|
assert 'test_key cleared' in res
|
|
|
|
def test_store_none(self):
|
|
- app = TestApp(CacheMiddleware(self.using_none_app))
|
|
+ app = WebTestApp(CacheMiddleware(self.using_none_app))
|
|
res = app.get('/', extra_environ={'beaker.clear': True})
|
|
assert 'current value is: 10' in res
|
|
res = app.get('/')
|
|
--- a/beaker/cache.py
|
|
+++ b/beaker/cache.py
|
|
@@ -176,7 +176,7 @@ def cache_region(region, *args):
|
|
:param region: String name of the region corresponding to the desired
|
|
caching arguments, established in :attr:`.cache_regions`.
|
|
|
|
- :param \*args: Optional ``str()``-compatible arguments which will uniquely
|
|
+ :param *args: Optional ``str()``-compatible arguments which will uniquely
|
|
identify the key used by this decorated function, in addition
|
|
to the positional arguments passed to the function itself at call time.
|
|
This is recommended as it is needed to distinguish between any two functions
|