Skip to content

Commit da63581

Browse files
committed
Test patch op=action restore; test patch add for attribute with no value.
1 parent e8f20c2 commit da63581

File tree

1 file changed

+53
-1
lines changed

1 file changed

+53
-1
lines changed

test/rest_common.py

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2224,6 +2224,24 @@ def testPatchAdd(self):
22242224
self.assertEqual(len(results['attributes']['nosy']), 3)
22252225
self.assertListEqual(results['attributes']['nosy'], ['1', '2', '3'])
22262226

2227+
# patch with no new_val/data
2228+
etag = calculate_etag(self.db.issue.getnode(issue_id),
2229+
self.db.config['WEB_SECRET_KEY'])
2230+
form = cgi.FieldStorage()
2231+
form.list = [
2232+
cgi.MiniFieldStorage('@op', 'add'),
2233+
cgi.MiniFieldStorage('data', ''),
2234+
cgi.MiniFieldStorage('@etag', etag)
2235+
]
2236+
results = self.server.patch_attribute('issue', issue_id, 'nosy', form)
2237+
self.assertEqual(self.dummy_client.response_code, 200)
2238+
2239+
# verify the result
2240+
results = self.server.get_element('issue', issue_id, self.terse_form)
2241+
results = results['data']
2242+
self.assertEqual(self.dummy_client.response_code, 200)
2243+
self.assertEqual(len(results['attributes']['nosy']), 3)
2244+
self.assertListEqual(results['attributes']['nosy'], ['1', '2', '3'])
22272245

22282246
# patch invalid property
22292247
etag = calculate_etag(self.db.issue.getnode(issue_id),
@@ -2474,6 +2492,21 @@ def testPatchAction(self):
24742492
# verify the result
24752493
self.assertTrue(self.db.issue.is_retired(issue_id))
24762494

2495+
# execute action restore
2496+
form = cgi.FieldStorage()
2497+
etag = calculate_etag(self.db.issue.getnode(issue_id),
2498+
self.db.config['WEB_SECRET_KEY'])
2499+
form.list = [
2500+
cgi.MiniFieldStorage('@op', 'action'),
2501+
cgi.MiniFieldStorage('@action_name', 'restore'),
2502+
cgi.MiniFieldStorage('@etag', etag)
2503+
]
2504+
results = self.server.patch_element('issue', issue_id, form)
2505+
self.assertEqual(self.dummy_client.response_code, 200)
2506+
2507+
# verify the result
2508+
self.assertTrue(not self.db.issue.is_retired(issue_id))
2509+
24772510
def testPatchRemove(self):
24782511
"""
24792512
Test Patch Action 'Remove' only some element from a list
@@ -2496,7 +2529,7 @@ def testPatchRemove(self):
24962529
self.assertEqual(len(results['attributes']['nosy']), 3)
24972530
self.assertEqual(results['attributes']['nosy'], ['1', '2', '3'])
24982531

2499-
# remove the nosy list and the title
2532+
# remove 1 and 2 from the nosy list
25002533
form = cgi.FieldStorage()
25012534
etag = calculate_etag(self.db.issue.getnode(issue_id),
25022535
self.db.config['WEB_SECRET_KEY'])
@@ -2515,6 +2548,25 @@ def testPatchRemove(self):
25152548
self.assertEqual(len(results['attributes']['nosy']), 1)
25162549
self.assertEqual(results['attributes']['nosy'], ['3'])
25172550

2551+
# delete last element: 3
2552+
etag = calculate_etag(self.db.issue.getnode(issue_id),
2553+
self.db.config['WEB_SECRET_KEY'])
2554+
form = cgi.FieldStorage()
2555+
form.list = [
2556+
cgi.MiniFieldStorage('@op', 'remove'),
2557+
cgi.MiniFieldStorage('data', '3'),
2558+
cgi.MiniFieldStorage('@etag', etag)
2559+
]
2560+
results = self.server.patch_attribute('issue', issue_id, 'nosy', form)
2561+
self.assertEqual(self.dummy_client.response_code, 200)
2562+
2563+
# verify the result
2564+
results = self.server.get_element('issue', issue_id, self.terse_form)
2565+
results = results['data']
2566+
self.assertEqual(self.dummy_client.response_code, 200)
2567+
self.assertEqual(len(results['attributes']['nosy']), 0)
2568+
self.assertListEqual(results['attributes']['nosy'], [])
2569+
25182570

25192571
def get_obj(path, id):
25202572
return {

0 commit comments

Comments
 (0)