Add trust indicators CRUD in testapiclient 81/54381/1
authorthuva4 <tharma.thuva@gmail.com>
Fri, 23 Mar 2018 07:08:39 +0000 (12:38 +0530)
committerthuva4 <tharma.thuva@gmail.com>
Fri, 23 Mar 2018 07:08:39 +0000 (12:38 +0530)
implement interface to do CRUD operations
for trust indicators  in testapiclient
Tests are added

Change-Id: I06b4c217d11fa55fa34387b9199aa98ac273e0a2
Signed-off-by: thuva4 <tharma.thuva@gmail.com>
testapi/testapi-client/setup.cfg
testapi/testapi-client/testapiclient/cli/scenarios.py
testapi/testapi-client/testapiclient/tests/unit/test_scenario_trust_indicator.py [new file with mode: 0644]

index 5366a08..fc25cf3 100644 (file)
@@ -56,6 +56,8 @@ testapi =
     scenario custom delete = testapiclient.cli.scenarios:CustomDelete
     scenario custom put = testapiclient.cli.scenarios:CustomPut
 
+    scenario trustindicator create = testapiclient.cli.scenarios:TrustIndicatorCreate
+
 [egg_info]
 tag_build =
 tag_date = 0
index edb45c6..c5444e2 100644 (file)
@@ -489,3 +489,39 @@ class CustomPut(command.Command):
                 ['installer', 'version', 'project'],
                 parsed_args),
             parsed_args.custom)
+
+
+class TrustIndicatorCreate(command.Command):
+
+    def get_parser(self, prog_name):
+        parser = super(TrustIndicatorCreate, self).get_parser(prog_name)
+        parser.add_argument('--scenario-name',
+                            type=str,
+                            required=True,
+                            help='Create trust indicator by scenario name')
+        parser.add_argument('--installer',
+                            required=True,
+                            help='Create trustindicator under installer name')
+        parser.add_argument('--version',
+                            required=True,
+                            help='Create trust indicator under version name')
+        parser.add_argument('--project',
+                            required=True,
+                            help='Create trust indicator under project name')
+        parser.add_argument('trust_indicator',
+                            type=json.loads,
+                            help='trust indicator create request format :\n'
+                                 '\'{ "date": (string, optional),'
+                                 '"status": (string, optional) }\',\n')
+        return parser
+
+    def take_action(self, parsed_args):
+        print parsed_args
+        return self.app.client_manager.post(
+            urlparse.query_by(
+                resources_url(
+                    parsed_args.scenario_name,
+                    'trust_indicators'),
+                ['installer', 'version', 'project'],
+                parsed_args),
+            parsed_args.trust_indicator)
diff --git a/testapi/testapi-client/testapiclient/tests/unit/test_scenario_trust_indicator.py b/testapi/testapi-client/testapiclient/tests/unit/test_scenario_trust_indicator.py
new file mode 100644 (file)
index 0000000..04be30c
--- /dev/null
@@ -0,0 +1,45 @@
+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 TrustIndicatorTest(utils.TestCommand):
+    def setUp(self):
+        super(TrustIndicatorTest, self).setUp()
+        self.base_url = parse.urljoin(
+            self.api_url,
+            'scenarios/{}/trustindicators'
+            )
+        self.scenario_name = 's1'
+        self.trust_indicator_json = {
+            'status': 'test_status',
+            'date': '2018/01/2'
+        }
+        self.trust_indicator_string = json.dumps(self.trust_indicator_json)
+
+
+class TrustIndicatorCreateTest(TrustIndicatorTest):
+
+    def setUp(self):
+        super(TrustIndicatorCreateTest, self).setUp()
+
+    def test_create_success(self):
+        self.post_mock.return_value = fakes.FakeResponse(data=None)
+        ti_create = scenarios.TrustIndicatorCreate(self.app, mock.Mock())
+        args = [
+            '--scenario-name', 's1', '--installer', 'i1', '--version', 'v1',
+            '--project', 'p1', self.trust_indicator_string]
+        verifies = [
+            ('scenario_name', 's1'),
+            ('installer', 'i1'),
+            ('version', 'v1'),
+            ('project', 'p1'),
+            ('trust_indicator', self.trust_indicator_json)]
+        parsed_args = self.check_parser(ti_create, args, verifies)
+        ti_create.take_action(parsed_args)
+        self.post_mock.assert_called_once()