def test_session_storage(self): cache = ClientCache(AESCipher('12345678901234561234567890123456'), '12345678901234561234567890123456') user_id = '*****@*****.**' expires = time() + 1000.0 session_id = TotoSession.generate_id() session_data = {'session_id': session_id, 'expires': expires, 'user_id': user_id} session = TotoSession(None, session_data) session.session_id = session_id self.assertEqual(session.session_id, session_id) self.assertEqual(session.user_id, user_id) self.assertEqual(session.expires, expires) session['int'] = 1268935 session['float'] = 92385.03 session['str'] = 'some test' session_data = session.session_data() session_id = cache.store_session(session_data) new_session_data = cache.load_session(session_id) new_session = TotoSession(None, new_session_data) del session_data['session_id'] del new_session_data['session_id'] self.assertEquals(new_session_data, session_data) self.assertEqual(new_session.session_id, session_id) self.assertEqual(new_session['int'], 1268935) self.assertEqual(new_session['float'], 92385.03) self.assertEqual(new_session['str'], 'some test') self.assertEqual(new_session.user_id, user_id) self.assertEqual(new_session.expires, expires)
def test_data_storage(self): user_id = '*****@*****.**' expires = time() + 1000.0 session_id = TotoSession.generate_id() session_data = {'session_id': session_id, 'expires': expires, 'user_id': user_id} session = TotoSession(None, session_data) self.assertEqual(session.session_id, session_id) self.assertEqual(session.user_id, user_id) self.assertEqual(session.expires, expires) session['int'] = 1268935 session['float'] = 92385.03 session['str'] = 'some test' self.assertEqual(session['int'], 1268935) self.assertEqual(session['float'], 92385.03) self.assertEqual(session['str'], 'some test')
def test_clone(self): user_id = '*****@*****.**' expires = time() + 1000.0 session_id = TotoSession.generate_id() session_data = {'session_id': session_id, 'expires': expires, 'user_id': user_id} session = TotoSession(None, session_data) session['int'] = 1268935 session['float'] = 92385.03 session['str'] = 'some test' new_session = TotoSession(None, session.session_data()) self.assertEqual(new_session.session_id, session_id) self.assertEqual(new_session.user_id, user_id) self.assertEqual(new_session.expires, expires) self.assertEqual(new_session['int'], 1268935) self.assertEqual(new_session['float'], 92385.03) self.assertEqual(new_session['str'], 'some test')
def test_session_storage(self): cache = ClientCache(AESCipher('12345678901234561234567890123456'), '12345678901234561234567890123456') user_id = '*****@*****.**' expires = time() + 1000.0 session_id = TotoSession.generate_id() session_data = { 'session_id': session_id, 'expires': expires, 'user_id': user_id } session = TotoSession(None, session_data) session.session_id = session_id self.assertEqual(session.session_id, session_id) self.assertEqual(session.user_id, user_id) self.assertEqual(session.expires, expires) session['int'] = 1268935 session['float'] = 92385.03 session['str'] = 'some test' session_data = session.session_data() session_id = cache.store_session(session_data) new_session_data = cache.load_session(session_id) new_session = TotoSession(None, new_session_data) del session_data['session_id'] del new_session_data['session_id'] self.assertEquals(new_session_data, session_data) self.assertEqual(new_session.session_id, session_id) self.assertEqual(new_session['int'], 1268935) self.assertEqual(new_session['float'], 92385.03) self.assertEqual(new_session['str'], 'some test') self.assertEqual(new_session.user_id, user_id) self.assertEqual(new_session.expires, expires)
def test_serialization(self): user_id = '*****@*****.**' expires = time() + 1000.0 session_id = TotoSession.generate_id() session_data = {'session_id': session_id, 'expires': expires, 'user_id': user_id} session = TotoSession(None, session_data) session['int'] = 1268935 session['float'] = 92385.03 session['str'] = 'some test' data = TotoSession.dumps(session.session_data()) new_session = TotoSession(None, TotoSession.loads(data)) self.assertEqual(new_session.session_id, session_id) self.assertEqual(new_session.user_id, user_id) self.assertEqual(new_session.expires, expires) self.assertEqual(new_session['int'], 1268935) self.assertEqual(new_session['float'], 92385.03) self.assertEqual(new_session['str'], 'some test')
def create_session(self, user_id=None, password=None, verify_password=True): '''Create a new session for the given user id and password (or an anonymous session if ``user_id`` is ``None``). After this method is called, the session will be available via ``self.session``. As with the ``db_connection.create_session()`` method, you may pass ``verify_password=False`` to create a session without checking the password. This can be used to implement alternative authentication methods like Facebook, Twitter and Google+. ''' self.session = self.db_connection.create_session(user_id, password, verify_password, key=options.hmac_enabled and TotoSession.generate_id()) return self.session
def test_set_serializer(self): session = {'session_id': TotoSession.generate_id(), 'expires': time() + 1000.0, 'user_id': '*****@*****.**'} TotoSession.set_serializer(pickle) pickle_serialized = TotoSession.dumps(session) self.assertTrue(isinstance(pickle_serialized, str)) TotoSession.set_serializer(json) json_serialized = TotoSession.dumps(session) self.assertTrue(isinstance(json_serialized, str)) self.assertNotEqual(pickle_serialized, json_serialized) TotoSession.set_serializer(pickle) self.assertEqual(TotoSession.loads(pickle_serialized), session) TotoSession.set_serializer(json) self.assertEqual(TotoSession.loads(json_serialized), session)
def test_generate_id(self): session_id = TotoSession.generate_id() self.assertEqual(len(session_id), SESSION_ID_LENGTH) url_safe = urllib.quote_plus(session_id) self.assertEqual(session_id, url_safe)