Skip to content
This repository was archived by the owner on Jul 29, 2025. It is now read-only.

Commit 1e1b9e4

Browse files
committed
Adding coverage for RedisDriver and DriverFactory
1 parent 5613e21 commit 1e1b9e4

3 files changed

Lines changed: 80 additions & 8 deletions

File tree

pycket/driver.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ class RedisDriver(object):
1616
def __init__(self, settings):
1717
self.settings = settings
1818

19-
def load(self, dataset):
20-
self.dataset = dataset
21-
2219
def set(self, session_id, session):
2320
pickled_session = pickle.dumps(session)
2421
self.__setup_dataset()
@@ -46,9 +43,9 @@ class DriverFactory(object):
4643
STORAGE_CATEGORIES = ('db_sessions', 'db_notifications')
4744

4845
def create(self, name, storage_settings, storage_category):
49-
return self.create_redis(storage_settings, storage_category)
46+
return self.__create_redis(storage_settings, storage_category)
5047

51-
def create_redis(self, storage_settings, storage_category):
48+
def __create_redis(self, storage_settings, storage_category):
5249
storage_settings = copy(storage_settings)
5350
default_storage_identifier = RedisDriver.DEFAULT_STORAGE_IDENTIFIERS[storage_category]
5451
storage_settings['db'] = storage_settings.get(storage_category, default_storage_identifier)

tests/test_driver.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import pickle
2+
from unittest import TestCase
3+
4+
from nose.tools import istest, raises
5+
import redis
6+
7+
from pycket.driver import DriverFactory, RedisDriver
8+
9+
10+
class RedisTestCase(TestCase):
11+
dataset = None
12+
13+
def setUp(self):
14+
if self.dataset is None:
15+
self.dataset = redis.Redis(db=0)
16+
self.dataset.flushall()
17+
18+
19+
class RedisDriverTest(RedisTestCase):
20+
@istest
21+
def inserts_pickable_object_into_session(self):
22+
driver = RedisDriver(dict(db=0))
23+
24+
foo = dict(foo='bar')
25+
26+
driver.set('session-id', foo)
27+
28+
result = self.dataset.get('session-id')
29+
30+
self.assertEqual(pickle.loads(result), foo)
31+
32+
@istest
33+
def retrieves_a_pickled_object_from_session(self):
34+
driver = RedisDriver(dict(db=0))
35+
36+
foo = dict(foo='bar')
37+
38+
self.dataset.set('session-id', pickle.dumps(foo))
39+
40+
result = driver.get('session-id')
41+
42+
self.assertEqual(result, foo)
43+
44+
@istest
45+
def makes_session_expire_in_one_day_in_the_dataset(self):
46+
driver = RedisDriver(dict(db=0))
47+
48+
foo = dict(foo='bar')
49+
50+
test_case = self
51+
52+
class StubClient(object):
53+
def set(self, session_id, pickled_session):
54+
pass
55+
56+
def expire(self, session_id, expiration):
57+
test_case.assertEqual(expiration, RedisDriver.EXPIRE_SECONDS)
58+
59+
driver.dataset = StubClient()
60+
61+
driver.set('session-id', foo)
62+
63+
64+
class DriverFactoryTest(TestCase):
65+
@istest
66+
def creates_instance_for_redis_session(self):
67+
factory = DriverFactory()
68+
69+
instance = factory.create('redis', storage_settings={}, storage_category='db_sessions')
70+
71+
self.assertIsInstance(instance, RedisDriver)
72+
73+
instance.get('dataset-is-lazy-loaded')
74+
75+
self.assertEqual(instance.dataset.connection_pool._available_connections[0].db, 0)

tests/test_session.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from pycket.session import SessionManager, SessionMixin
1010

1111

12-
skip_slow_tests = True
12+
skip_slow_tests = False
1313

1414

1515
class SessionMixinTest(TestCase):
@@ -150,11 +150,11 @@ def still_retrieves_object_if_not_passed_from_expiration(self):
150150
def cannot_retrieve_object_if_passed_from_expiration(self):
151151
handler = StubHandler()
152152
manager = SessionManager(handler)
153-
manager.EXPIRE_SECONDS = 1
153+
manager.driver.EXPIRE_SECONDS = 1
154154

155155
manager.set('foo', 'bar')
156156

157-
time.sleep(manager.EXPIRE_SECONDS + 1)
157+
time.sleep(manager.driver.EXPIRE_SECONDS + 1)
158158

159159
self.assertIsNone(manager.get('foo'))
160160

0 commit comments

Comments
 (0)