diff test/rest_common.py @ 5747:17b38e209307

Test patch op=action restore; test patch add for attribute with no value.
author John Rouillard <rouilj@ieee.org>
date Thu, 30 May 2019 20:15:16 -0400
parents fea2b6e54492
children ddb553d5618c
line wrap: on
line diff
--- a/test/rest_common.py	Wed May 29 22:56:50 2019 -0400
+++ b/test/rest_common.py	Thu May 30 20:15:16 2019 -0400
@@ -2224,6 +2224,24 @@
         self.assertEqual(len(results['attributes']['nosy']), 3)
         self.assertListEqual(results['attributes']['nosy'], ['1', '2', '3'])
 
+        # patch with no new_val/data
+        etag = calculate_etag(self.db.issue.getnode(issue_id),
+                              self.db.config['WEB_SECRET_KEY'])
+        form = cgi.FieldStorage()
+        form.list = [
+            cgi.MiniFieldStorage('@op', 'add'),
+            cgi.MiniFieldStorage('data', ''),
+            cgi.MiniFieldStorage('@etag', etag)
+        ]
+        results = self.server.patch_attribute('issue', issue_id, 'nosy', form)
+        self.assertEqual(self.dummy_client.response_code, 200)
+
+        # verify the result
+        results = self.server.get_element('issue', issue_id, self.terse_form)
+        results = results['data']
+        self.assertEqual(self.dummy_client.response_code, 200)
+        self.assertEqual(len(results['attributes']['nosy']), 3)
+        self.assertListEqual(results['attributes']['nosy'], ['1', '2', '3'])
 
         # patch invalid property
         etag = calculate_etag(self.db.issue.getnode(issue_id),
@@ -2474,6 +2492,21 @@
         # verify the result
         self.assertTrue(self.db.issue.is_retired(issue_id))
 
+        # execute action restore
+        form = cgi.FieldStorage()
+        etag = calculate_etag(self.db.issue.getnode(issue_id),
+                              self.db.config['WEB_SECRET_KEY'])
+        form.list = [
+            cgi.MiniFieldStorage('@op', 'action'),
+            cgi.MiniFieldStorage('@action_name', 'restore'),
+            cgi.MiniFieldStorage('@etag', etag)
+        ]
+        results = self.server.patch_element('issue', issue_id, form)
+        self.assertEqual(self.dummy_client.response_code, 200)
+
+        # verify the result
+        self.assertTrue(not self.db.issue.is_retired(issue_id))
+
     def testPatchRemove(self):
         """
         Test Patch Action 'Remove' only some element from a list
@@ -2496,7 +2529,7 @@
         self.assertEqual(len(results['attributes']['nosy']), 3)
         self.assertEqual(results['attributes']['nosy'], ['1', '2', '3'])
 
-        # remove the nosy list and the title
+        # remove 1 and 2 from the nosy list
         form = cgi.FieldStorage()
         etag = calculate_etag(self.db.issue.getnode(issue_id),
                               self.db.config['WEB_SECRET_KEY'])
@@ -2515,6 +2548,25 @@
         self.assertEqual(len(results['attributes']['nosy']), 1)
         self.assertEqual(results['attributes']['nosy'], ['3'])
 
+        # delete last element: 3
+        etag = calculate_etag(self.db.issue.getnode(issue_id),
+                              self.db.config['WEB_SECRET_KEY'])
+        form = cgi.FieldStorage()
+        form.list = [
+            cgi.MiniFieldStorage('@op', 'remove'),
+            cgi.MiniFieldStorage('data', '3'),
+            cgi.MiniFieldStorage('@etag', etag)
+        ]
+        results = self.server.patch_attribute('issue', issue_id, 'nosy', form)
+        self.assertEqual(self.dummy_client.response_code, 200)
+
+        # verify the result
+        results = self.server.get_element('issue', issue_id, self.terse_form)
+        results = results['data']
+        self.assertEqual(self.dummy_client.response_code, 200)
+        self.assertEqual(len(results['attributes']['nosy']), 0)
+        self.assertListEqual(results['attributes']['nosy'], [])
+
 
 def get_obj(path, id):
     return {

Roundup Issue Tracker: http://roundup-tracker.org/