Package repoze :: Package who :: Package plugins :: Package tests :: Package fixtures :: Module testapp
[hide private]

Source Code for Module repoze.who.plugins.tests.fixtures.testapp

1 -def tack_environ(environ, msg):
2 import pprint 3 penv = pprint.pformat(environ) 4 return msg + '\n\n' + penv
5
6 -def deny(start_response, environ, msg):
7 ct = 'text/plain' 8 msg = tack_environ(environ, msg) 9 cl = str(len(msg)) 10 start_response('401 Unauthorized', 11 [ ('Content-Type', ct), 12 ('Content-Length', cl) ], 13 )
14
15 -def allow(start_response, environ, msg):
16 ct = 'text/plain' 17 msg = tack_environ(environ, msg) 18 cl = str(len(msg)) 19 start_response('200 OK', 20 [ ('Content-Type', ct), 21 ('Content-Length', cl) ], 22 ) 23 return [msg]
24
25 -def app(environ, start_response):
26 path_info = environ['PATH_INFO'] 27 remote_user = environ.get('REMOTE_USER') 28 if path_info.endswith('/shared'): 29 if not remote_user: 30 return deny(start_response, environ, 'You cant do that') 31 else: 32 return allow(start_response, environ, 33 'Welcome to the shared area, %s' % remote_user) 34 elif path_info.endswith('/admin'): 35 if remote_user != 'admin': 36 return deny(start_response, environ, 'Only admin can do that') 37 else: 38 return allow(start_response, environ, 'Hello, admin!') 39 elif path_info.endswith('/chris'): 40 if remote_user != 'chris': 41 return deny(start_response, environ, 'Only chris can do that') 42 else: 43 return allow(start_response, environ, 'Hello, chris!') 44 else: 45 return allow(start_response, environ, 'Unprotected page')
46
47 -def make_app(global_config, **kw):
48 return app
49