summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorianb <devnull@localhost>2005-08-22 21:41:23 +0000
committerianb <devnull@localhost>2005-08-22 21:41:23 +0000
commit2b234d342643c388d7c97324493e6344ed1bc367 (patch)
treebd43f07a4e11c63f8c1c2045e0ddce975db28687 /tests
parent181bdc5a64903c342fea744e7f6717b6b09811d7 (diff)
downloadpaste-2b234d342643c388d7c97324493e6344ed1bc367.tar.gz
Moved test
Diffstat (limited to 'tests')
-rw-r--r--tests/test_authentication.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/test_authentication.py b/tests/test_authentication.py
new file mode 100644
index 0000000..418dbd8
--- /dev/null
+++ b/tests/test_authentication.py
@@ -0,0 +1,72 @@
+from paste import wsgilib
+from paste import login
+from paste.fixture import *
+
+from_cmdline = 0
+
+def application(environ, start_response):
+ if environ.has_key('REMOTE_USER'):
+ start_response('200 OK', [('Content-type', 'text/plain')])
+ return ['Logged in: ' + environ['REMOTE_USER']]
+ else:
+ start_response('401 Unauthorized',
+ [('Content-type', 'text/plain')])
+ return ['Not logged in.']
+
+class AuthTest(login.Authenticator):
+ def check_auth(self, username, password):
+ return username == password
+
+def report(res):
+ if from_cmdline:
+ print res
+
+# @@ this should be part of a test fixture, I think
+def mk_basic_auth_app(**kw):
+ kw['http_login'] = True
+ kw['authenticator'] = AuthTest
+ app = login.middleware(application, **kw)
+ testapp = TestApp(app)
+ return testapp
+
+def test_basicauth_noauth():
+ res = mk_basic_auth_app().get('/', status=401)
+ report(res)
+
+def run_userpass(user, password, status=200):
+ userpass = user + ':' + password
+ env = {'AUTHORIZATION' : 'Basic ' + userpass.encode('base64')}
+ return mk_basic_auth_app().get('/', headers=env, status=status)
+
+def test_basicauth_okuser():
+ res = run_userpass('test', 'test') # should succeed
+ report(res)
+
+def test_basicauth_baduser():
+ res = run_userpass('test', 'badpass',
+ status=401) # should succeed
+ report(res)
+
+def test_basicauth_cookie():
+ res = run_userpass('test', 'test') # should succeed
+ report(res)
+ cookie_val = res.header('SET-COOKIE')
+ print "cookie value", cookie_val
+ app = mk_basic_auth_app()
+ env = {'Cookie': cookie_val}
+ res = app.get('/', headers=env)
+ report(res)
+
+ # ensure that secret is actually used
+ res = mk_basic_auth_app(secret='bogus').get(
+ '/', headers=env, status=401, expect_errors=True)
+ report(res)
+
+if __name__ == '__main__':
+ from_cmdline = 1
+ test_basicauth_noauth()
+ test_basicauth_okuser()
+ test_basicauth_baduser()
+ test_basicauth_cookie()
+
+