diff options
Diffstat (limited to 'testapi/testapi-client/testapiclient/cli')
-rw-r--r-- | testapi/testapi-client/testapiclient/cli/scenarios.py | 131 | ||||
-rw-r--r-- | testapi/testapi-client/testapiclient/cli/testcases.py | 119 |
2 files changed, 250 insertions, 0 deletions
diff --git a/testapi/testapi-client/testapiclient/cli/scenarios.py b/testapi/testapi-client/testapiclient/cli/scenarios.py new file mode 100644 index 0000000..fc6a2db --- /dev/null +++ b/testapi/testapi-client/testapiclient/cli/scenarios.py @@ -0,0 +1,131 @@ +import json + +from testapiclient.utils import command +from testapiclient.utils import urlparse + + +def scenarios_url(): + return urlparse.resource_join('scenarios') + + +def scenario_url(parsed_args): + return urlparse.path_join(scenarios_url(), parsed_args.name) + + +class ScenarioGet(command.Lister): + + def get_parser(self, prog_name): + parser = super(ScenarioGet, self).get_parser(prog_name) + parser.add_argument('-name', + help='Search scenarios using name') + parser.add_argument('-installer', + help='Search scenarios using installer') + parser.add_argument('---version', + help='Search scenarios using version') + parser.add_argument('-project', + help='Search scenarios using project') + return parser + + def take_action(self, parsed_args): + columns = ( + 'name', + '_id', + 'creator', + 'creation_date' + ) + data = self.app.client_manager.get( + urlparse.query_by(scenarios_url(), + ['name', 'installer', 'version', 'project'], + parsed_args)) + return self.format_output(columns, data.get('scenarios', [])) + + +class ScenarioGetOne(command.ShowOne): + + def get_parser(self, prog_name): + parser = super(ScenarioGetOne, self).get_parser(prog_name) + parser.add_argument('name', + help='Search scenario by name') + return parser + + def take_action(self, parsed_args): + return self.format_output( + self.app.client_manager.get(scenario_url(parsed_args))) + + +class ScenarioCreate(command.ShowOne): + + def get_parser(self, prog_name): + parser = super(ScenarioCreate, self).get_parser(prog_name) + parser.add_argument('scenario', + type=json.loads, + help='Scenario create request format :\n' + '\'{ "installers": [], "name": ""}\',\n' + 'Intaller create request format :\n' + '\'{"installer": "","versions": []}\',\n' + 'Version create request format :\n' + '\'{"owner": "","version": "",' + '"projects": []}\',\n' + 'Project create request format :\n' + '\'{"project": "","customs": [],' + '"scores": [],' + '"trust_indicators": []}\',\n' + 'Custom create request format :\n' + '\'["asf","saf"]\',\n' + 'Score create request format :\n' + '\'{"date": "", "score": ""}\',\n' + 'Trust Indicators create request format :\n' + '\'{"date": "", "status": ""}\'') + return parser + + def take_action(self, parsed_args): + return self.format_output( + self.app.client_manager.post( + scenarios_url(), parsed_args.scenario)) + + +class ScenarioDelete(command.Command): + + def get_parser(self, prog_name): + parser = super(ScenarioDelete, self).get_parser(prog_name) + parser.add_argument('name', + type=str, + help='Delete scenario by name') + return parser + + def take_action(self, parsed_args): + return self.app.client_manager.delete(scenario_url(parsed_args)) + + +class ScenarioPut(command.ShowOne): + + def get_parser(self, prog_name): + parser = super(ScenarioPut, self).get_parser(prog_name) + parser.add_argument('name', + type=str, + help='Update scenario by name') + parser.add_argument('scenario', + type=json.loads, + help='Scenario create request format :\n' + '\'{ "installers": [], "name": ""}\',\n' + 'Intaller create request format :\n' + '\'{"installer": "","versions": []}\',\n' + 'Version create request format :\n' + '\'{"owner": "","version": "",' + '"projects": []}\',\n' + 'Project create request format :\n' + '\'{"project": "","customs": [],' + '"scores": [],' + '"trust_indicators": []}\',\n' + 'Custom create request format :\n' + '\'["asf","saf"]\',\n' + 'Score create request format :\n' + '\'{"date": "", "score": ""}\',\n' + 'Trust Indicators create request format :\n' + '\'{"date": "", "status": ""}\'') + return parser + + def take_action(self, parsed_args): + return self.format_output( + self.app.client_manager.put( + scenario_url(parsed_args), parsed_args.scenario)) diff --git a/testapi/testapi-client/testapiclient/cli/testcases.py b/testapi/testapi-client/testapiclient/cli/testcases.py new file mode 100644 index 0000000..6c97edb --- /dev/null +++ b/testapi/testapi-client/testapiclient/cli/testcases.py @@ -0,0 +1,119 @@ +import json + +from testapiclient.utils import command +from testapiclient.utils import urlparse + + +def testcases_url(name): + return urlparse.resource_join('projects', name, 'cases') + + +def testcase_url(parsed_args): + return urlparse.path_join( + testcases_url(parsed_args.project_name), parsed_args.name) + + +class TestcaseGet(command.Lister): + + def get_parser(self, prog_name): + parser = super(TestcaseGet, self).get_parser(prog_name) + parser.add_argument('--project-name', + required=True, + help='Search testcases by project name') + return parser + + def take_action(self, parsed_args): + columns = ( + 'name', + '_id', + 'creator', + 'creation_date' + ) + data = self.app.client_manager.get( + testcases_url(parsed_args.project_name)) + return self.format_output(columns, data.get('testcases', [])) + + +class TestcaseGetOne(command.ShowOne): + + def get_parser(self, prog_name): + parser = super(TestcaseGetOne, self).get_parser(prog_name) + parser.add_argument('--project-name', + required=True, + help='Search testcase by project name') + parser.add_argument('name', + help='Search testcase by name') + return parser + + def take_action(self, parsed_args): + return self.format_output( + self.app.client_manager.get(testcase_url(parsed_args))) + + +class TestcaseCreate(command.ShowOne): + + def get_parser(self, prog_name): + parser = super(TestcaseCreate, self).get_parser(prog_name) + parser.add_argument('--project-name', + required=True, + help='Create testcase under project name') + parser.add_argument('testcase', + type=json.loads, + help='Testcase create request format:\n' + '\'{"run": "", "name": "", "ci_loop": "",' + '"tags": "",\n "url": "", "blocking": "",' + '"domains": "", "dependencies": "",\n ' + '"version": "", "criteria": "", "tier": "",' + '"trust": "",\n "catalog_description": "",' + '"description": ""}\'') + return parser + + def take_action(self, parsed_args): + return self.format_output( + self.app.client_manager.post( + testcases_url(parsed_args.project_name), parsed_args.testcase)) + + +class TestcaseDelete(command.Command): + + def get_parser(self, prog_name): + parser = super(TestcaseDelete, self).get_parser(prog_name) + parser.add_argument('--project-name', + required=True, + type=str, + help='Delete testcase by project name') + parser.add_argument('name', + type=str, + help='Delete testcase by name') + return parser + + def take_action(self, parsed_args): + return self.app.client_manager.delete(testcase_url(parsed_args)) + + +class TestcasePut(command.ShowOne): + + def get_parser(self, prog_name): + parser = super(TestcasePut, self).get_parser(prog_name) + parser.add_argument('--project-name', + type=str, + required=True, + help='Update testcase by project name') + parser.add_argument('name', + type=str, + help='Update testcase by name') + parser.add_argument('testcase', + type=json.loads, + help='Testcase Update request format:\n' + '\'{"run": "", "name": "", "ci_loop": "",' + '"tags": "",\n "url": "", "blocking": "",' + '"domains": "", "dependencies": "",\n ' + '"version": "", "criteria": "", "tier": "",' + '"trust": "",\n "catalog_description": "",' + '"description": ""}\'') + return parser + + def take_action(self, parsed_args): + return self.format_output( + self.app.client_manager.put( + testcase_url(parsed_args), parsed_args.testcase)) |