def test_session_in_db(self): request.app_name = "myapp" db = DAL("sqlite:memory") session = Session(secret="a", expiration=10, storage=DBStore(db)) request.cookies.clear() session.on_request() session["key"] = "value" cookie_name = session.local.session_cookie_name session.on_success(200) a, b = str( response._cookies)[len("Set-Cookie: "):].split(";")[0].split( "=", 1) request.cookies[a] = b session.finalize() self.assertIsNone(session.local) session = Session(expiration=10, storage=DBStore(db)) request.cookies[a] = b session.on_request() self.assertEqual(session.get("key"), "value") session = Session(expiration=10, storage=DBStore(db)) request.cookies[a] = "wrong_cookie" session.on_request() self.assertEqual(session.get("key"), None)
def test_session_in_db(self): request.app_name = 'myapp' db = DAL('sqlite:memory') session = Session(secret="a", expiration=10, storage=DBStore(db)) request.cookies.clear() session.on_request() session['key'] = 'value' session.on_success() cookie_name = session.local.session_cookie_name a, b = str( response._cookies)[len('Set-Cookie: '):].split(';')[0].split( '=', 1) request.cookies[a] = b request.cookies = response._cookies session.local.data.clear() session = Session(expiration=10, storage=DBStore(db)) session.on_request() self.assertEqual(session.get('key'), 'value') request.cookies[a] = 'wrong_cookie' session = Session(expiration=10, storage=DBStore(db)) session.on_request() self.assertEqual(session.get('key'), None)
def test_session_in_memcache(self): try: memcache_process = subprocess.Popen(['memcached', '-p', '11211']) time.sleep(1) request.app_name = 'myapp' conn = memcache.Client(['127.0.0.1:11211'], debug=0) session = Session(secret="a", expiration=10, storage=conn) request.cookies.clear() session.on_request() session['key'] = 'value' session.on_success() cookie_name = session.local.session_cookie_name a, b = str( response._cookies)[len('Set-Cookie: '):].split(';')[0].split( '=', 1) request.cookies[a] = b request.cookies = response._cookies session.local.data.clear() conn = memcache.Client(['127.0.0.1:11211'], debug=0) session = Session(expiration=10, storage=conn) session.on_request() self.assertEqual(session.get('key'), 'value') request.cookies[a] = 'wrong_cookie' conn = memcache.Client(['127.0.0.1:11211'], debug=0) session = Session(expiration=10, storage=conn) session.on_request() self.assertEqual(session.get('key'), None) finally: if memcache_process: memcache_process.kill()
def test_session_in_memcache(self): try: memcache_process = subprocess.Popen(["memcached", "-p", "11211"]) time.sleep(1) request.app_name = "myapp" conn = memcache.Client(["127.0.0.1:11211"], debug=0) session = Session(secret="a", expiration=10, storage=conn) request.cookies.clear() session.on_request() session["key"] = "value" session.on_success() cookie_name = session.local.session_cookie_name a, b = (str( response._cookies)[len("Set-Cookie: "):].split(";")[0].split( "=", 1)) request.cookies[a] = b request.cookies = response._cookies session.local.data.clear() conn = memcache.Client(["127.0.0.1:11211"], debug=0) session = Session(expiration=10, storage=conn) session.on_request() self.assertEqual(session.get("key"), "value") request.cookies[a] = "wrong_cookie" conn = memcache.Client(["127.0.0.1:11211"], debug=0) session = Session(expiration=10, storage=conn) session.on_request() self.assertEqual(session.get("key"), None) finally: if memcache_process: memcache_process.kill()
def test_session_in_db(self): request.app_name = "myapp" db = DAL("sqlite:memory") session = Session(secret="a", expiration=10, storage=DBStore(db)) request.cookies.clear() session.on_request() session["key"] = "value" cookie_name = session.local.session_cookie_name session.on_success(200) a, b = str( response._cookies)[len("Set-Cookie: "):].split(";")[0].split( "=", 1) request.cookies[a] = b _before_request() with pytest.raises(RuntimeError) as err: session.local self.assertTrue('py4web hint' in str(err.value)) session = Session(expiration=10, storage=DBStore(db)) request.cookies[a] = b session.on_request() self.assertEqual(session.get("key"), "value") session = Session(expiration=10, storage=DBStore(db)) request.cookies[a] = "wrong_cookie" session.on_request() self.assertEqual(session.get("key"), None)
def test_session(self): request.app_name = "myapp" session = Session(secret="a", expiration=10) session.on_request() session["key"] = "value" cookie_name = session.local.session_cookie_name session.on_success(200) a, b = str( response._cookies)[len("Set-Cookie: "):].split(";")[0].split( "=", 1) request.cookies[a] = b _before_request() with pytest.raises(RuntimeError) as err: session.local self.assertTrue('py4web hint' in str(err.value)) session = Session(secret="b", expiration=10) request.cookies[a] = b session.on_request() self.assertEqual(session.get("key"), None) session = Session(secret="a", expiration=10) request.cookies[a] = b session.on_request() self.assertEqual(session.get("key"), "value")
def test_session_in_memcache(self): memcache_process = None try: memcache_process = subprocess.Popen(["memcached", "-p", "11211"]) time.sleep(1) request.app_name = "myapp" conn = memcache.Client(["127.0.0.1:11211"], debug=0) session = Session(secret="a", expiration=10, storage=conn) request.cookies.clear() context = dict(status=200) session.on_request(context) session["key"] = "value" cookie_name = session.local.session_cookie_name session.on_success(context) a, b = ( str(response._cookies)[len("Set-Cookie: ") :] .split(";")[0] .split("=", 1) ) request.cookies[a] = b _before_request() with pytest.raises(RuntimeError) as err: session.local self.assertTrue('py4web hint' in str(err.value)) conn = memcache.Client(["127.0.0.1:11211"], debug=0) session = Session(expiration=10, storage=conn) request.cookies[a] = b context = dict(status=200) session.on_request(context) self.assertEqual(session.get("key"), "value") conn = memcache.Client(["127.0.0.1:11211"], debug=0) session = Session(expiration=10, storage=conn) request.cookies[a] = "wrong_cookie" context = dict(status=200) session.on_request(context) self.assertEqual(session.get("key"), None) finally: if memcache_process is None: print("memcached not availabl, test skipped") elif memcache_process: memcache_process.kill()
def test_session(self): request.app_name = "myapp" session = Session(secret="a", expiration=10) session.on_request() session["key"] = "value" session.on_success() cookie_name = session.local.session_cookie_name a, b = str(response._cookies)[len("Set-Cookie: ") :].split(";")[0].split("=", 1) request.cookies[a] = b request.cookies = response._cookies session.local.data.clear() session = Session(secret="b", expiration=10) session.on_request() self.assertEqual(session.get("key"), None) session = Session(secret="a", expiration=10) session.on_request() self.assertEqual(session.get("key"), "value")
def test_session(self): request.app_name = 'myapp' session = Session(secret="a", expiration=10) session.on_request() session['key'] = 'value' session.on_success() cookie_name = session.local.session_cookie_name a, b = str( response._cookies)[len('Set-Cookie: '):].split(';')[0].split( '=', 1) request.cookies[a] = b request.cookies = response._cookies session.local.data.clear() session = Session(secret="b", expiration=10) session.on_request() self.assertEqual(session.get('key'), None) session = Session(secret="a", expiration=10) session.on_request() self.assertEqual(session.get('key'), 'value')
import os from py4web import action, request, DAL, Field, Session, Cache, Condition # define session and cache objects session = Session(secret="some secret") cache = Cache(size=1000) # define database and tables db = DAL("sqlite://storage.db", folder=os.path.join(os.path.dirname(__file__), "databases")) db.define_table("todo", Field("info")) db.commit() # an example of a custom requirement user_in_session = Condition(lambda: session.get('user', False)) # example index page using session, template and vue.js @action("index") # the function below is exposed as a GET action @action.uses("index.html", session) # we use the template index.html and session def index(): session["counter"] = session.get("counter", 0) + 1 session["user"] = {"id": 1} # store a user in session return dict(session=session) # example of GET/POST/DELETE RESTful APIs @action("api") # a GET API function