Add result client 71/57271/1
authorthuva4 <tharma.thuva@gmail.com>
Thu, 10 May 2018 13:35:55 +0000 (19:05 +0530)
committerthuva4 <tharma.thuva@gmail.com>
Thu, 10 May 2018 13:35:55 +0000 (19:05 +0530)
tested

Change-Id: I3b2cde3b1adba60d7697a72c8daa95e06cc04621
Signed-off-by: thuva4 <tharma.thuva@gmail.com>
testapi/testapi-client/testapiclient/client/results.py [new file with mode: 0644]
testapi/testapi-client/testapiclient/tests/unit/test_results_client.py [new file with mode: 0644]

diff --git a/testapi/testapi-client/testapiclient/client/results.py b/testapi/testapi-client/testapiclient/client/results.py
new file mode 100644 (file)
index 0000000..7d9ad0e
--- /dev/null
@@ -0,0 +1,28 @@
+import json
+
+from testapiclient.client import base
+from testapiclient.utils import urlparse
+
+
+class ResultsClient(base.Client):
+    resource = 'results'
+
+    def __init__(self, **kwargs):
+        super(ResultsClient, self).__init__(**kwargs)
+
+    def create(self, testcase_req):
+        return self.clientmanager.post(self.url, testcase_req)
+
+    def get(self, **queries):
+        if queries:
+            return json.dumps(
+                self.clientmanager.get(
+                    urlparse.query_join(self.url, **queries))['results'])
+        else:
+            return json.dumps(
+                self.clientmanager.get(self.url)['results'])
+
+    def get_one(self, id):
+        return json.dumps(
+            self.clientmanager.get(
+                urlparse.path_join(self.url, id)))
diff --git a/testapi/testapi-client/testapiclient/tests/unit/test_results_client.py b/testapi/testapi-client/testapiclient/tests/unit/test_results_client.py
new file mode 100644 (file)
index 0000000..ae677f7
--- /dev/null
@@ -0,0 +1,78 @@
+import json
+
+from six.moves.urllib import parse
+import testtools
+
+from testapiclient.client import results
+from testapiclient.tests.unit import fakes
+from testapiclient.tests.unit import utils
+from testapiclient.utils import clientmanager
+
+
+class ResultClientTest(utils.TestCommand):
+    def setUp(self):
+        super(ResultClientTest, self).setUp()
+        self.base_url = parse.urljoin(self.api_url, 'results')
+        self.result_json = {
+            'project_name': 'functest',
+            'scenario': 'test-scenario',
+            'stop_date': '2018-04-09 13:44:53',
+            'case_name': 'test-case',
+            'build_tag': 'test-build',
+            'version': 'test-version',
+            'pod_name': 'test-pod',
+            'criteria': 'test-criteria',
+            'installer': 'test-installer',
+            'start_date': '2018-04-09 13:44:53',
+            'details': 'test-details'
+        }
+        self.result_id = '5a6dc1089a07c80f3c9f8d62'
+        self.result_string = json.dumps(self.result_json)
+        self.result_client = results.ResultsClient()
+
+
+class ResultClientGetTest(ResultClientTest):
+
+    def setUp(self):
+        super(ResultClientGetTest, self).setUp()
+        self.results_rsp = {'results': [self.result_json]}
+
+    def test_get(self):
+        self.get_mock.return_value = fakes.FakeResponse(data=self.results_rsp)
+        self.result_client.get()
+        self.get_mock.assert_called_once_with(
+            self.base_url,
+            headers=clientmanager.ClientManager.headers)
+
+    def test_get_search(self):
+        self.get_mock.return_value = fakes.FakeResponse(data=self.results_rsp)
+        self.result_client.get(name='result1')
+        self.get_mock.assert_called_once_with(
+            self.base_url + '?name=result1',
+            headers=clientmanager.ClientManager.headers)
+
+    def test_get_one(self):
+        self.get_mock.return_value = fakes.FakeResponse(data=self.result_json)
+        self.result_client.get_one('2333')
+        self.get_mock.assert_called_once_with(
+            self.base_url + '/2333',
+            headers=clientmanager.ClientManager.headers)
+
+
+class ResultClientCreateTest(ResultClientTest):
+
+    def setUp(self):
+        super(ResultClientCreateTest, self).setUp()
+        self.succ_rsp = {
+            'href': '{}/{}'.format(self.base_url, self.result_id)
+        }
+
+    def test_create_success(self):
+        self.post_mock.return_value = fakes.FakeResponse(data=self.succ_rsp)
+        self.result_client.create(self.result_json)
+        self.post_mock.assert_called_once()
+
+    def test_create_failure(self):
+        with testtools.ExpectedException(Exception, 'Create failed: Error'):
+            self.post_mock.return_value = utils.FAKE_FAILURE
+            self.result_client.create(self.result_json)