/usr/share/pyshared/cherrypy/test/test_session_filter.py is in python-cherrypy 2.3.0-3build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | import test
test.prefer_parent_path()
import cherrypy, os, time
from cherrypy.filters import sessionfilter
localDir = os.path.dirname(__file__)
def setup_server():
class Root:
def testGen(self):
counter = cherrypy.session.get('counter', 0) + 1
cherrypy.session['counter'] = counter
yield str(counter)
testGen.exposed = True
def testStr(self):
counter = cherrypy.session.get('counter', 0) + 1
cherrypy.session['counter'] = counter
return str(counter)
testStr.exposed = True
def setsessiontype(self, newtype):
cherrypy.config.update({'session_filter.storage_type': newtype})
setsessiontype.exposed = True
def delete(self):
cherrypy.session.delete()
sessionfilter.expire()
return "done"
delete.exposed = True
def oncreate(self):
return repr(cherrypy.request.onsessdata)
oncreate.exposed = True
def Session_new(*args, **kwargs):
cherrypy.request.onsessdata = (args, kwargs)
cherrypy.root = Root()
cherrypy.config.update({
'server.log_to_screen': False,
'server.environment': 'production',
'session_filter.on': True,
'session_filter.storage_type' : 'file',
'session_filter.storage_path' : localDir,
'session_filter.timeout': 0.017,
'session_filter.clean_up_delay': 0.017,
'session_filter.on_create_session': Session_new,
})
import helper
class SessionFilterTest(helper.CPWebCase):
def testSessionFilter(self):
self.getPage('/testStr')
self.assertBody('1')
self.getPage('/testGen', self.cookies)
self.assertBody('2')
self.getPage('/testStr', self.cookies)
self.assertBody('3')
self.getPage('/delete', self.cookies)
self.assertBody("done")
f = lambda: [x for x in os.listdir(localDir) if x.startswith('session-')]
self.assertEqual(f(), [])
self.getPage('/setsessiontype/file')
self.getPage('/testStr')
self.assertBody('1')
self.getPage('/testGen', self.cookies)
self.assertBody('2')
self.getPage('/testStr', self.cookies)
self.assertBody('3')
f = lambda: [x for x in os.listdir(localDir) if x.startswith('session-')]
self.assertNotEqual(f(), [])
self.getPage('/delete', self.cookies)
self.assertBody("done")
f = lambda: [x for x in os.listdir(localDir) if x.startswith('session-')]
self.assertEqual(f(), [])
self.getPage('/testStr')
f = lambda: [x for x in os.listdir(localDir) if x.startswith('session-')]
self.assertNotEqual(f(), [])
# Test on_create_session
self.getPage("/oncreate")
# example response: "(({'_id': 'b7a7216a5335726dd4c0d6224f5f4ca9f5969dc6'},), {})"
self.assert_(self.body.startswith("(({'_id': '"))
# Clean up session files
for fname in os.listdir(localDir):
if fname.startswith('session-'):
os.unlink(os.path.join(localDir, fname))
if __name__ == "__main__":
setup_server()
helper.testmain()
|