summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthuva4 <tharma.thuva@gmail.com>2018-03-23 12:40:52 +0530
committerthuva4 <tharma.thuva@gmail.com>2018-03-23 12:40:52 +0530
commite09c3ca0bd5ccf4adbce8635ec1c2a8d20a6e319 (patch)
tree82706a5c5932c7a92e3ccaadaaae2e0da8740542
parent8dedbb1d2905e3dab293687cc50662e8f75e335c (diff)
Add scores CRUD in testapiclient
implement interface to do CRUD operations for scores in testapiclient Tests are added Change-Id: Icf73a0ecdadcd51c0457837306d24ec7851500eb Signed-off-by: thuva4 <tharma.thuva@gmail.com>
-rw-r--r--testapi/testapi-client/setup.cfg2
-rw-r--r--testapi/testapi-client/testapiclient/cli/scenarios.py35
-rw-r--r--testapi/testapi-client/testapiclient/tests/unit/test_scenario_score.py42
3 files changed, 79 insertions, 0 deletions
diff --git a/testapi/testapi-client/setup.cfg b/testapi/testapi-client/setup.cfg
index fc25cf3..2427c57 100644
--- a/testapi/testapi-client/setup.cfg
+++ b/testapi/testapi-client/setup.cfg
@@ -58,6 +58,8 @@ testapi =
scenario trustindicator create = testapiclient.cli.scenarios:TrustIndicatorCreate
+ scenario score create = testapiclient.cli.scenarios:ScoreCreate
+
[egg_info]
tag_build =
tag_date = 0
diff --git a/testapi/testapi-client/testapiclient/cli/scenarios.py b/testapi/testapi-client/testapiclient/cli/scenarios.py
index c5444e2..507705a 100644
--- a/testapi/testapi-client/testapiclient/cli/scenarios.py
+++ b/testapi/testapi-client/testapiclient/cli/scenarios.py
@@ -525,3 +525,38 @@ class TrustIndicatorCreate(command.Command):
['installer', 'version', 'project'],
parsed_args),
parsed_args.trust_indicator)
+
+
+class ScoreCreate(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(ScoreCreate, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Create score by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Create score under installer name')
+ parser.add_argument('--version',
+ required=True,
+ help='Create score under version name')
+ parser.add_argument('--project',
+ required=True,
+ help='Create score under project name')
+ parser.add_argument('score',
+ type=json.loads,
+ help='score create request format :\n'
+ '\'{ "date": (string, optional),'
+ '"score" : (string, optional) }\',\n')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.post(
+ urlparse.query_by(
+ resources_url(
+ parsed_args.scenario_name,
+ 'scores'),
+ ['installer', 'version', 'project'],
+ parsed_args),
+ parsed_args.score)
diff --git a/testapi/testapi-client/testapiclient/tests/unit/test_scenario_score.py b/testapi/testapi-client/testapiclient/tests/unit/test_scenario_score.py
new file mode 100644
index 0000000..3b0e1c6
--- /dev/null
+++ b/testapi/testapi-client/testapiclient/tests/unit/test_scenario_score.py
@@ -0,0 +1,42 @@
+import json
+
+from mock import mock
+from six.moves.urllib import parse
+
+from testapiclient.cli import scenarios
+from testapiclient.tests.unit import fakes
+from testapiclient.tests.unit import utils
+
+
+class ScoreTest(utils.TestCommand):
+ def setUp(self):
+ super(ScoreTest, self).setUp()
+ self.base_url = parse.urljoin(self.api_url, 'scenarios/{}/scores')
+ self.scenario_name = 's1'
+ self.score_json = {
+ 'score': 'test_score1',
+ 'date': '2018/01/2'
+ }
+ self.score_string = json.dumps(self.score_json)
+
+
+class ScoreCreateTest(ScoreTest):
+
+ def setUp(self):
+ super(ScoreCreateTest, self).setUp()
+
+ def test_create_success(self):
+ self.post_mock.return_value = fakes.FakeResponse(data=None)
+ score_create = scenarios.ScoreCreate(self.app, mock.Mock())
+ args = [
+ '--scenario-name', 's1', '--installer', 'i1', '--version', 'v1',
+ '--project', 'p1', self.score_string]
+ verifies = [
+ ('scenario_name', 's1'),
+ ('installer', 'i1'),
+ ('version', 'v1'),
+ ('project', 'p1'),
+ ('score', self.score_json)]
+ parsed_args = self.check_parser(score_create, args, verifies)
+ score_create.take_action(parsed_args)
+ self.post_mock.assert_called_once()