docs/_build
opnfv_testapi/tests/UI/coverage
3rd_party/static/testapi-ui/testapi-ui
+.stestr/
def is_authorized(method):
@functools.wraps(method)
def wrapper(self, *args, **kwargs):
- if CONF.api_authenticate and self.table in ['pods', 'projects', 'testcases', 'scenarios']:
+ resources = ['pods', 'projects', 'testcases', 'scenarios']
+ if CONF.api_authenticate and self.table in resources:
testapi_id = self.get_secure_cookie(constants.TESTAPI_ID)
if not testapi_id:
raises.Unauthorized(message.not_login())
@functools.wraps(method)
def wrapper(self, *args, **kwargs):
query_data = {}
- tied_map_tables = {
+ tied_maps = {
'projects': ('testcases', 'project_name'),
'pods': ('results', 'pod_name'),
'testcases': ('results', 'case_name')
}
- if self.table in tied_map_tables:
+ if self.table in tied_maps:
if method.__name__ == '_update':
if 'name' not in self.json_args:
ret = yield gen.coroutine(method)(self, *args, **kwargs)
raise gen.Return(ret)
- query_data[tied_map_tables[self.table][1]] = kwargs.get('query')['name']
- data = yield dbapi.db_find_one(tied_map_tables[self.table][0], query_data)
+ query_data[tied_maps[self.table][1]] = kwargs.get('query')['name']
+ data = yield dbapi.db_find_one(tied_maps[self.table][0],
+ query_data)
if data:
raises.Unauthorized(message.tied_with_resource())
ret = yield gen.coroutine(method)(self, *args, **kwargs)
if query:
query_data = query()
if self.table == 'pods':
- if query_data.get('name') is not None:
- query_data['name'] = re.compile('\\b' + query_data.get('name') + '\\b', re.IGNORECASE)
+ if query_data.get('name'):
+ query_data['name'] = re.compile(
+ '\\b{}\\b'.format(query_data.get('name')),
+ re.IGNORECASE)
to_data = yield dbapi.db_find_one(self.table, query_data)
if to_data:
raises.Forbidden(message.exist(self.table, query()))
def wrap(self, *args, **kwargs):
if 'name' in self.request.query_arguments.keys():
query = kwargs.get('query', {})
- query.update({'name': re.compile(self.get_query_argument('name'), re.IGNORECASE)})
+ query.update({
+ 'name': re.compile(self.get_query_argument('name'),
+ re.IGNORECASE)})
kwargs.update({'query': query})
ret = yield gen.coroutine(xstep)(self, *args, **kwargs)
@swagger.model()
class Project(base_models.ModelBase):
def __init__(self,
- name=None, creator='', _id=None, description=None, creation_date=None):
+ name=None,
+ creator='',
+ _id=None,
+ description=None,
+ creation_date=None):
self.creator = creator
self._id = _id
self.name = name
@property installers:
@ptype installers: C{list} of L{ScenarioInstaller}
"""
- def __init__(self, name='', create_date='', _id='', creator='', installers=None):
+ def __init__(self,
+ name='',
+ creation_date='',
+ _id='',
+ creator='',
+ installers=None):
self.name = name
self.creator = creator
self._id = _id
- self.creation_date = create_date
+ self.creation_date = creation_date
self.installers = list_default(installers)
@staticmethod
super(TestPodDelete, self).setUp()
fake_pymongo.pods.insert(self.pod_d.format())
fake_pymongo.projects.insert({'name': self.results_d.project_name})
- fake_pymongo.testcases.insert({'name': self.results_d.case_name,
- 'project_name': self.results_d.project_name})
+ fake_pymongo.testcases.insert({
+ 'name': self.results_d.case_name,
+ 'project_name': self.results_d.project_name})
@executor.delete(httplib.BAD_REQUEST, message.not_login())
def test_notlogin(self):
@executor.mock_valid_lfid()
@executor.update(httplib.UNAUTHORIZED, message.tied_with_resource())
def test_updateNotAllowed(self):
- self.create_help('/api/v1/projects/%s/cases', self.testcase_d, self.req_d.name)
+ self.create_help('/api/v1/projects/%s/cases',
+ self.testcase_d,
+ self.req_d.name)
req = project_models.ProjectUpdateRequest('apex', 'apex test')
return req, self.req_d.name
@executor.mock_valid_lfid()
@executor.delete(httplib.UNAUTHORIZED, message.tied_with_resource())
def test_deleteNotAllowed(self):
- self.create_help('/api/v1/projects/%s/cases', self.testcase_d, self.req_d.name)
+ self.create_help('/api/v1/projects/%s/cases',
+ self.testcase_d,
+ self.req_d.name)
return self.req_d.name
@executor.mock_valid_lfid()
self.basePath = '/api/v1/results'
fake_pymongo.pods.insert({'name': self.req_d.pod_name})
fake_pymongo.projects.insert({'name': self.req_d.project_name})
- fake_pymongo.testcases.insert({'name': self.req_d.case_name,
- 'project_name': self.req_d.project_name})
+ fake_pymongo.testcases.insert({
+ 'name': self.req_d.case_name,
+ 'project_name': self.req_d.project_name})
def assert_res(self, result, req=None):
if req is None:
self.create_d()
fake_pymongo.pods.insert(self.pod_d.format())
fake_pymongo.projects.insert({'name': self.results_d.project_name})
- fake_pymongo.testcases.insert({'name': self.results_d.case_name,
- 'project_name': self.results_d.project_name})
+ fake_pymongo.testcases.insert({
+ 'name': self.results_d.case_name,
+ 'project_name': self.results_d.project_name})
@executor.delete(httplib.NOT_FOUND, message.not_found_base)
def test_notFound(self):
--- /dev/null
+[DEFAULT]
+test_path=${TEST_PATH:-./testapiclient/tests/unit}
--- /dev/null
+stestr>=1.0.0 # Apache-2.0
+testtools>=2.2.0 # MIT
\ No newline at end of file
def get_parser(self, prog_name):
parser = super(Auth, self).get_parser(prog_name)
- parser.add_argument('-u', type=str, required=True, help='Username for authentication')
- parser.add_argument('-p', type=str, required=True, help='Password for authentication')
+ parser.add_argument('-u',
+ type=str,
+ required=True,
+ help='Username for authentication')
+ parser.add_argument('-p',
+ type=str,
+ required=True,
+ help='Password for authentication')
return parser
def take_action(self, parsed_args):
response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
- print "Authentication has failed. Please check your username and password."
+ print "Authentication has failed."
else:
print "Authentication has been successful!"
@staticmethod
def authenticate(username, password):
session = requests.Session()
- hostname = Config.config.get("cas", "auth_url") + urllib.quote(Config.config.get("api", "url")) + Config.config.get("cas", "signin_return")
+ 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 r.text
def post(self, url, session, data):
- r = session.post(url, data=json.dumps(data), headers=HTTPClient.headers)
+ r = session.post(url,
+ data=json.dumps(data),
+ headers=HTTPClient.headers)
return r
def put(self, url, session, data):
- r = session.put(url, data=json.dumps(data), headers=HTTPClient.headers)
+ r = session.put(url,
+ data=json.dumps(data),
+ headers=HTTPClient.headers)
return r.text
def delete(self, url, session, *args):
if(args.__len__ > 0):
- r = session.delete(url, data=json.dumps(args[0]), headers=HTTPClient.headers)
+ r = session.delete(url,
+ data=json.dumps(args[0]),
+ headers=HTTPClient.headers)
else:
r = session.delete(url)
return r.text
def get_parser(self, prog_name):
parser = super(PodGet, self).get_parser(prog_name)
- parser.add_argument('-name', default='', help='Search pods using name')
+ parser.add_argument('-name',
+ default='',
+ help='Search pods using name')
return parser
def take_action(self, parsed_args):
def get_parser(self, prog_name):
parser = super(PodGetOne, self).get_parser(prog_name)
- parser.add_argument('-name', default='', help='Find pod using name', required=True)
+ parser.add_argument('-name',
+ default='',
+ help='Find pod using name',
+ required=True)
return parser
def take_action(self, parsed_args):
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\'{ "role": "", "name": "", "details": "", "mode": ""}\',\n role should be either "community-ci" or "production-ci", and mode should be either "metal" or "virtual.')
+ 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'
+ '\'{"role": "", "name": "", "details": "", '
+ '"mode": ""}\',\n role should be either '
+ '"community-ci" or "production-ci", and '
+ 'mode should be either "metal" or "virtual.')
return parser
def take_action(self, parsed_args):
if(parsed_args.u and parsed_args.p):
response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
- print "Authentication has failed. Please check your username and password."
+ print "Authentication has failed."
return
- response = http_client.post(PodCreate.pods_url, User.session, parsed_args.pod)
+ response = http_client.post(PodCreate.pods_url,
+ User.session,
+ parsed_args.pod)
if response.status_code == 200:
print "Pod has been successfully created!"
else:
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, help='Delete pods using 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,
+ help='Delete pods using name')
return parser
def take_action(self, parsed_args):
if(parsed_args.u and parsed_args.p):
response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
- print "Authentication has failed. Please check your username and password."
+ print "Authentication has failed."
return
- pods = http_client.delete(PodDelete.pods_url + "/" + parsed_args.name, User.session)
+ pods = http_client.delete(PodDelete.pods_url + "/" + parsed_args.name,
+ User.session)
print pods
def get_parser(self, prog_name):
parser = super(ProjectGet, self).get_parser(prog_name)
- parser.add_argument('-name', default='', help='Search projects by name')
+ parser.add_argument('-name',
+ default='',
+ help='Search projects by name')
return parser
def take_action(self, parsed_args):
def get_parser(self, prog_name):
parser = super(ProjectGetOne, self).get_parser(prog_name)
- parser.add_argument('-name', default='', required=True, help='Search project by name')
+ parser.add_argument('-name',
+ default='',
+ required=True,
+ help='Search project by name')
return parser
def take_action(self, parsed_args):
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 :{ "name": (required)"", "description": (optional)""}')
+ 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 :{'
+ ' "name": (required)"", '
+ '"description": (optional)""}')
return parser
def take_action(self, parsed_args):
if(parsed_args.u and parsed_args.p):
response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
- print "Authentication has failed. Please check your username and password."
+ print "Authentication has failed."
return
- response = httpClient.post(ProjectCreate.projects_url, User.session, parsed_args.project)
+ response = httpClient.post(ProjectCreate.projects_url,
+ User.session,
+ parsed_args.project)
if response.status_code == 200:
print "Project has been successfully created!"
else:
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, help='Delete project by 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,
+ help='Delete project by name')
return parser
def take_action(self, parsed_args):
if(parsed_args.u and parsed_args.p):
response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
- print "Authentication has failed. Please check your username and password."
+ print "Authentication has failed."
return
- projects = httpClient.delete(ProjectDelete.projects_url + "/" + parsed_args.name, User.session)
+ projects = httpClient.delete(
+ ProjectDelete.projects_url + "/" + parsed_args.name,
+ User.session)
print projects
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, help='Update project by name')
- parser.add_argument('project', type=json.loads, help='Project Update request format :{ "name": (required)"", "description": (optional)""}')
+ 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,
+ help='Update project by name')
+ parser.add_argument('project',
+ type=json.loads,
+ help='Project Update request format :{'
+ '"name": (required)"", '
+ '"description": (optional)""}')
return parser
def take_action(self, parsed_args):
if(parsed_args.u and parsed_args.p):
response = AuthHandler.authenticate(parsed_args.u, parsed_args.p)
if "login" in response.text:
- print "Authentication has failed. Please check your username and password."
+ print "Authentication has failed."
return
- projects = httpClient.put(ProjectPut.projects_url + "/" + parsed_args.name, User.session, parsed_args.project)
+ projects = httpClient.put(
+ ProjectPut.projects_url + "/" + parsed_args.name,
+ User.session,
+ parsed_args.project)
print projects
--- /dev/null
+import testtools
+
+
+class TestPlaceHolder(testtools.TestCase):
+ def test_placeholder(self):
+ self.assertEqual(1, 1)
usedevelop = True
install_command = pip install -U {opts} {packages}
deps =
- -rrequirements.txt
+ -r{toxinidir}/requirements.txt
+ -r{toxinidir}/test-requirements.txt
setenv=
HOME = {envtmpdir}
PYTHONPATH = {toxinidir}
-
+commands = stestr run {posargs}
+whitelist_externals = stestr
[testenv:pep8]
deps = flake8
# E123, E125 skipped as they are invalid PEP-8.
show-source = True
-ignore = E123,E125,H803,E501
+ignore = E123,E125,H803
builtins = _
exclude = bin, build, dist, lib, local, .git, .eggs, .tox, .venv, venv, testapi_client.egg-info
\ No newline at end of file
# E123, E125 skipped as they are invalid PEP-8.
show-source = True
-ignore = E123,E125,H803,E501
+ignore = E123,E125,H803
builtins = _
exclude = build,dist,doc,legacy,.eggs,.git,.tox,.venv,testapi_venv,venv