summaryrefslogtreecommitdiffstats
path: root/testapi
diff options
context:
space:
mode:
authorSerenaFeng <feng.xiaowei@zte.com.cn>2018-03-07 15:16:00 +0800
committerSerenaFeng <feng.xiaowei@zte.com.cn>2018-03-07 15:34:37 +0800
commit25ed1721025d50e7213793c714e08973e77e9b10 (patch)
treeffb92a7467fa7abe5458a73aac44501a246d5f9e /testapi
parent9e8fc209687d84385addba81329ef478e19f8368 (diff)
leverage testapiclient.command to process common auth parser
Change-Id: I7a2491278db64a2a09da02accb22613305fc6d7c Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
Diffstat (limited to 'testapi')
-rw-r--r--testapi/testapi-client/testapiclient/auth.py4
-rw-r--r--testapi/testapi-client/testapiclient/authHandler.py19
-rw-r--r--testapi/testapi-client/testapiclient/command.py23
-rw-r--r--testapi/testapi-client/testapiclient/identity.py16
-rw-r--r--testapi/testapi-client/testapiclient/pods.py46
-rw-r--r--testapi/testapi-client/testapiclient/projects.py49
6 files changed, 73 insertions, 84 deletions
diff --git a/testapi/testapi-client/testapiclient/auth.py b/testapi/testapi-client/testapiclient/auth.py
index 6f51231..49da309 100644
--- a/testapi/testapi-client/testapiclient/auth.py
+++ b/testapi/testapi-client/testapiclient/auth.py
@@ -1,6 +1,6 @@
import logging
from cliff.command import Command
-from authHandler import AuthHandler
+from testapiclient import identity
class Auth(Command):
@@ -21,7 +21,7 @@ class Auth(Command):
return parser
def take_action(self, parsed_args):
- response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+ response = identity.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
print "Authentication has failed."
else:
diff --git a/testapi/testapi-client/testapiclient/authHandler.py b/testapi/testapi-client/testapiclient/authHandler.py
deleted file mode 100644
index baa1088..0000000
--- a/testapi/testapi-client/testapiclient/authHandler.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import requests
-from user import User
-from config import Config
-import urllib
-
-
-class AuthHandler:
-
- @staticmethod
- def authenticate(username, password):
- session = requests.Session()
- hostname = '{}{}{}'.format(
- Config.config.get("cas", "auth_url"),
- urllib.quote(Config.config.get("api", "url")),
- Config.config.get("cas", "signin_return"))
- data = {'name': username, 'pass': password, 'form_id': 'user_login'}
- response = session.post(hostname, data)
- User.session = session
- return response
diff --git a/testapi/testapi-client/testapiclient/command.py b/testapi/testapi-client/testapiclient/command.py
new file mode 100644
index 0000000..5c2ce5c
--- /dev/null
+++ b/testapi/testapi-client/testapiclient/command.py
@@ -0,0 +1,23 @@
+from cliff import command
+# from testapiclient import identity
+
+
+class Command(command.Command):
+ def get_parser(self, prog_name):
+ parser = super(Command, self).get_parser(prog_name)
+ parser.add_argument('-u',
+ type=str,
+ help='Username for authentication')
+ parser.add_argument('-p',
+ type=str,
+ help='Password for authentication')
+
+ return parser
+
+
+class Lister(command.Command):
+ pass
+
+
+class ShowOne(command.Command):
+ pass
diff --git a/testapi/testapi-client/testapiclient/identity.py b/testapi/testapi-client/testapiclient/identity.py
new file mode 100644
index 0000000..5456270
--- /dev/null
+++ b/testapi/testapi-client/testapiclient/identity.py
@@ -0,0 +1,16 @@
+import requests
+from user import User
+from config import Config
+import urllib
+
+
+def authenticate(username, password):
+ session = requests.Session()
+ hostname = '{}{}{}'.format(
+ Config.config.get("cas", "auth_url"),
+ urllib.quote(Config.config.get("api", "url")),
+ Config.config.get("cas", "signin_return"))
+ data = {'name': username, 'pass': password, 'form_id': 'user_login'}
+ response = session.post(hostname, data)
+ User.session = session
+ return response
diff --git a/testapi/testapi-client/testapiclient/pods.py b/testapi/testapi-client/testapiclient/pods.py
index 6c8aaed..81d4b9e 100644
--- a/testapi/testapi-client/testapiclient/pods.py
+++ b/testapi/testapi-client/testapiclient/pods.py
@@ -1,17 +1,17 @@
import json
-from user import User
-from cliff.command import Command
-from httpClient import HTTPClient
-from authHandler import AuthHandler
+from testapiclient import identity
+from testapiclient import command
+
from config import Config
+from httpClient import HTTPClient
+from user import User
-class PodBase(Command):
- pods_url = Config.config.get("api", "url") + "/pods"
+PODS_URL = Config.config.get("api", "url") + "/pods"
-class PodGet(PodBase):
+class PodGet(command.Lister):
"Handle get request for pods"
def get_parser(self, prog_name):
@@ -23,14 +23,14 @@ class PodGet(PodBase):
def take_action(self, parsed_args):
http_client = HTTPClient.get_Instance()
- url = PodGet.pods_url
+ url = PODS_URL
if(parsed_args.name):
- url = PodGet.pods_url + "?name=" + parsed_args.name
+ url = PODS_URL + "?name=" + parsed_args.name
pods = http_client.get(url)
print pods
-class PodGetOne(PodBase):
+class PodGetOne(command.ShowOne):
"Handle get request for pod by name"
def get_parser(self, prog_name):
@@ -43,21 +43,15 @@ class PodGetOne(PodBase):
def take_action(self, parsed_args):
http_client = HTTPClient.get_Instance()
- pods = http_client.get(PodGetOne.pods_url + "/" + parsed_args.name)
+ pods = http_client.get(PODS_URL + "/" + parsed_args.name)
print pods
-class PodCreate(PodBase):
+class PodCreate(command.Command):
"Handle post request for pods"
def get_parser(self, prog_name):
parser = super(PodCreate, self).get_parser(prog_name)
- parser.add_argument('-u',
- type=str,
- help='Username for authentication')
- parser.add_argument('-p',
- type=str,
- help='Password for authentication')
parser.add_argument('pod',
type=json.loads,
help='Pod create request format :\n'
@@ -70,11 +64,11 @@ class PodCreate(PodBase):
def take_action(self, parsed_args):
http_client = HTTPClient.get_Instance()
if(parsed_args.u and parsed_args.p):
- response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+ response = identity.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
print "Authentication has failed."
return
- response = http_client.post(PodCreate.pods_url,
+ response = http_client.post(PODS_URL,
User.session,
parsed_args.pod)
if response.status_code == 200:
@@ -83,17 +77,11 @@ class PodCreate(PodBase):
print response.text
-class PodDelete(PodBase):
+class PodDelete(command.Command):
"Handle delete request for pods"
def get_parser(self, prog_name):
parser = super(PodDelete, self).get_parser(prog_name)
- parser.add_argument('-u',
- type=str,
- help='Username for authentication')
- parser.add_argument('-p',
- type=str,
- help='Password for authentication')
parser.add_argument('-name',
type=str,
required=True,
@@ -103,10 +91,10 @@ class PodDelete(PodBase):
def take_action(self, parsed_args):
http_client = HTTPClient.get_Instance()
if(parsed_args.u and parsed_args.p):
- response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+ response = identity.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
print "Authentication has failed."
return
- pods = http_client.delete(PodDelete.pods_url + "/" + parsed_args.name,
+ pods = http_client.delete(PODS_URL + "/" + parsed_args.name,
User.session)
print pods
diff --git a/testapi/testapi-client/testapiclient/projects.py b/testapi/testapi-client/testapiclient/projects.py
index eedfa3d..36d0960 100644
--- a/testapi/testapi-client/testapiclient/projects.py
+++ b/testapi/testapi-client/testapiclient/projects.py
@@ -1,16 +1,15 @@
import json
from user import User
-from cliff.command import Command
+from testapiclient import command
from httpClient import HTTPClient
-from authHandler import AuthHandler
+from testapiclient import identity
from config import Config
-class ProjectBase(Command):
- projects_url = Config.config.get("api", "url") + "/projects"
+PROJECTS_URL = Config.config.get("api", "url") + "/projects"
-class ProjectGet(ProjectBase):
+class ProjectGet(command.Lister):
def get_parser(self, prog_name):
parser = super(ProjectGet, self).get_parser(prog_name)
@@ -21,14 +20,14 @@ class ProjectGet(ProjectBase):
def take_action(self, parsed_args):
httpClient = HTTPClient.get_Instance()
- url = ProjectGet.projects_url
+ url = PROJECTS_URL
if parsed_args.name:
url = url + "?name=" + parsed_args.name
projects = httpClient.get(url)
print projects
-class ProjectGetOne(ProjectBase):
+class ProjectGetOne(command.ShowOne):
def get_parser(self, prog_name):
parser = super(ProjectGetOne, self).get_parser(prog_name)
@@ -40,21 +39,15 @@ class ProjectGetOne(ProjectBase):
def take_action(self, parsed_args):
httpClient = HTTPClient.get_Instance()
- url = ProjectGet.projects_url + "/" + parsed_args.name
+ url = PROJECTS_URL + "/" + parsed_args.name
project = httpClient.get(url)
print project
-class ProjectCreate(ProjectBase):
+class ProjectCreate(command.Command):
def get_parser(self, prog_name):
parser = super(ProjectCreate, self).get_parser(prog_name)
- parser.add_argument('-u',
- type=str,
- help='Username for authentication')
- parser.add_argument('-p',
- type=str,
- help='Password for authentication')
parser.add_argument('project',
type=json.loads,
help='Project create request format :{'
@@ -65,7 +58,7 @@ class ProjectCreate(ProjectBase):
def take_action(self, parsed_args):
httpClient = HTTPClient.get_Instance()
if(parsed_args.u and parsed_args.p):
- response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+ response = identity.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
print "Authentication has failed."
return
@@ -78,16 +71,10 @@ class ProjectCreate(ProjectBase):
print response.text
-class ProjectDelete(ProjectBase):
+class ProjectDelete(command.Command):
def get_parser(self, prog_name):
parser = super(ProjectDelete, self).get_parser(prog_name)
- parser.add_argument('-u',
- type=str,
- help='Username for authentication')
- parser.add_argument('-p',
- type=str,
- help='Password for authentication')
parser.add_argument('-name',
type=str,
required=True,
@@ -97,26 +84,20 @@ class ProjectDelete(ProjectBase):
def take_action(self, parsed_args):
httpClient = HTTPClient.get_Instance()
if(parsed_args.u and parsed_args.p):
- response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+ response = identity.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
print "Authentication has failed."
return
projects = httpClient.delete(
- ProjectDelete.projects_url + "/" + parsed_args.name,
+ PROJECTS_URL + "/" + parsed_args.name,
User.session)
print projects
-class ProjectPut(ProjectBase):
+class ProjectPut(command.Command):
def get_parser(self, prog_name):
parser = super(ProjectPut, self).get_parser(prog_name)
- parser.add_argument('-u',
- type=str,
- help='Username for authentication')
- parser.add_argument('-p',
- type=str,
- help='Password for authentication')
parser.add_argument('-name',
type=str,
required=True,
@@ -131,12 +112,12 @@ class ProjectPut(ProjectBase):
def take_action(self, parsed_args):
httpClient = HTTPClient.get_Instance()
if(parsed_args.u and parsed_args.p):
- response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
+ response = identity.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
print "Authentication has failed."
return
projects = httpClient.put(
- ProjectPut.projects_url + "/" + parsed_args.name,
+ PROJECTS_URL + "/" + parsed_args.name,
User.session,
parsed_args.project)
print projects