summaryrefslogtreecommitdiffstats
path: root/testapi/testapi-client/testapiclient/utils/identity.py
diff options
context:
space:
mode:
Diffstat (limited to 'testapi/testapi-client/testapiclient/utils/identity.py')
-rw-r--r--testapi/testapi-client/testapiclient/utils/identity.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/testapi/testapi-client/testapiclient/utils/identity.py b/testapi/testapi-client/testapiclient/utils/identity.py
new file mode 100644
index 0000000..2aeb87a
--- /dev/null
+++ b/testapi/testapi-client/testapiclient/utils/identity.py
@@ -0,0 +1,38 @@
+import functools
+import os
+import urllib
+
+import requests
+
+from testapiclient.utils import user
+
+
+def _authenticate(username, password):
+ session = requests.Session()
+ hostname = '{}{}{}'.format(os.environ.get('testapi_cas_auth_url'),
+ urllib.quote(os.environ.get('testapi_url')),
+ os.environ.get('testapi_cas_signin_return'))
+ data = {
+ 'name': username,
+ 'pass': password,
+ 'form_id': 'user_login'
+ }
+ response = session.post(hostname, data)
+ if "login" not in response.text:
+ user.User.session = session
+ return response
+
+
+def authenticate(xstep):
+ @functools.wraps(xstep)
+ def wrapper(self, parsed_args):
+ if(user.User.session is None):
+ username = parsed_args.u
+ password = parsed_args.p
+ if(username and password):
+ response = _authenticate(username, password)
+ if "login" in response.text:
+ print "Authentication has failed."
+ return
+ xstep(self, parsed_args)
+ return wrapper