[Patchew-devel] [PATCH 09/11] testing: convert test_testing to use REST API

Paolo Bonzini pbonzini at redhat.com
Wed May 15 12:58:06 UTC 2019


---
 tests/patchewtest.py  | 20 +++++++++-----
 tests/test_testing.py | 62 +++++++++++++++++++++----------------------
 2 files changed, 44 insertions(+), 38 deletions(-)

diff --git a/tests/patchewtest.py b/tests/patchewtest.py
index e58e5b9..d511954 100644
--- a/tests/patchewtest.py
+++ b/tests/patchewtest.py
@@ -138,13 +138,19 @@ class PatchewTestCase(dj_test.LiveServerTestCase):
         p.save()
         return p
 
-    def api_login(self):
-        r = self.client.login(username=self.user, password=self.password)
-        self.assertTrue(r)
-
-    def api_call(self, method, **params):
-        resp = self.client.post('/api/%s/' % method, {"params": json.dumps(params)})
-        return json.loads(resp.content.decode('utf-8')) if resp.content else None
+    def api_login(self, username=None, password=None):
+        username = username or self.user
+        password = password or self.password
+        user = User.objects.get(username=username)
+        resp = self.api_client.post(self.REST_BASE + 'users/login/',
+                { 'username': username, 'password': password })
+        self.assertEquals(resp.status_code, 200)
+        self.api_client.force_authenticate(user, resp.data['key'])
+
+    def api_logout(self):
+        resp = self.api_client.post(self.REST_BASE + 'users/logout/')
+        self.assertEquals(resp.status_code, 200)
+        self.api_client.force_authenticate(None, None)
 
     def apply_and_retrieve(self, mbox, project_id, msgid):
         # TODO: change this to a REST import when it is added
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 3fa912e..df155c7 100755
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -70,29 +70,27 @@ class TestingTestCase(PatchewTestCase, metaclass=abc.ABCMeta):
             kwargs['status'] = Result.SUCCESS
         self.modify_test_result(obj, **kwargs)
 
-    def do_testing_report(self, **report):
+    def do_testing_report(self, passed=True, log=None, is_timeout=False):
         self.api_login()
-        r = self.api_call(
-            "testing-get",
-            project="QEMU",
-            tester="dummy tester",
-            capabilities=[],
-        )
-        report['project'] = r["project"]
-        report['identity'] = r["identity"]
-        report['test'] = r["test"]["name"]
-        report['tester'] = 'dummy_tester'
-        report['head'] = r["head"]
-        report['base'] = r["base"]
-        if 'passed' not in report:
-            report['passed'] = True
-        if 'log' not in report:
-            report['log'] = None
-        if 'is_timeout' not in report:
-            report['is_timeout'] = False
-
-        self.api_call("testing-report", **report)
-        return r['identity']
+        resp = self.api_client.post(self.PROJECT_BASE + "get-test/", {
+                'tester': "dummy tester",
+                'capabilities': [],
+            })
+        self.assertEqual(resp.status_code, 200)
+        r = resp.data
+        data = {
+            "status": "success" if passed else 'failure',
+            'data': {
+                "head": r["head"],
+                "is_timeout": is_timeout,
+                "tester": "dummy_tester"
+            }
+        }
+        if log is not None:
+            data['log'] = log
+
+        self.api_client.put(r['result_uri'], data, format='json')
+        return r["identity"]
 
     @abc.abstractmethod
     def do_testing_done(self, log=None, **report):
@@ -104,10 +102,12 @@ class TestingTestCase(PatchewTestCase, metaclass=abc.ABCMeta):
 
     def test_basic(self):
         self.api_login()
-        td = self.api_call("testing-get",
-                           project="QEMU",
-                           tester="dummy tester",
-                           capabilities=[])
+        resp = self.api_client.post(self.PROJECT_BASE + "get-test/", {
+                'tester': "dummy tester",
+                'capabilities': [],
+            })
+        self.assertEqual(resp.status_code, 200)
+        td = resp.data
         self.assertIn("head", td)
         resp = self.get_test_result('a')
         self.assertEquals(resp.data['status'], 'running')
@@ -115,11 +115,11 @@ class TestingTestCase(PatchewTestCase, metaclass=abc.ABCMeta):
     def test_done(self):
         self.do_testing_done()
         self.api_login()
-        td = self.api_call("testing-get",
-                           project="QEMU",
-                           tester="dummy tester",
-                           capabilities=[])
-        self.assertFalse(td)
+        resp = self.api_client.post(self.PROJECT_BASE + "get-test/", {
+                'tester': "dummy tester",
+                'capabilities': [],
+            })
+        self.assertEqual(resp.status_code, 204)
 
     def test_rest_basic(self):
         resp = self.get_test_result('a')
-- 
2.21.0





More information about the Patchew-devel mailing list