Mercurial > p > roundup > code
comparison test/rest_common.py @ 5672:a7211712b110
Fix tests for latest REST changes
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Mon, 25 Mar 2019 19:46:20 +0100 |
| parents | d26d2590cd8c |
| children | 6b6bc8d31caf |
comparison
equal
deleted
inserted
replaced
| 5663:a884698173ea | 5672:a7211712b110 |
|---|---|
| 22 | 22 |
| 23 | 23 |
| 24 class TestCase(): | 24 class TestCase(): |
| 25 | 25 |
| 26 backend = None | 26 backend = None |
| 27 url_pfx = 'http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/' | |
| 27 | 28 |
| 28 def setUp(self): | 29 def setUp(self): |
| 29 self.dirname = '_test_rest' | 30 self.dirname = '_test_rest' |
| 30 # set up and open a tracker | 31 # set up and open a tracker |
| 31 self.instance = setupTracker(self.dirname, self.backend) | 32 self.instance = setupTracker(self.dirname, self.backend) |
| 69 'TRACKER_NAME': 'rounduptest' | 70 'TRACKER_NAME': 'rounduptest' |
| 70 } | 71 } |
| 71 self.dummy_client = client.Client(self.instance, MockNull(), env, [], None) | 72 self.dummy_client = client.Client(self.instance, MockNull(), env, [], None) |
| 72 self.dummy_client.request.headers.get = self.get_header | 73 self.dummy_client.request.headers.get = self.get_header |
| 73 self.empty_form = cgi.FieldStorage() | 74 self.empty_form = cgi.FieldStorage() |
| 75 self.terse_form = cgi.FieldStorage() | |
| 76 self.terse_form.list = [ | |
| 77 cgi.MiniFieldStorage('@verbose', '0'), | |
| 78 ] | |
| 74 | 79 |
| 75 self.server = RestfulInstance(self.dummy_client, self.db) | 80 self.server = RestfulInstance(self.dummy_client, self.db) |
| 76 | 81 |
| 77 def tearDown(self): | 82 def tearDown(self): |
| 78 self.db.close() | 83 self.db.close() |
| 173 base_path = self.db.config['TRACKER_WEB'] + 'rest/data/issue/' | 178 base_path = self.db.config['TRACKER_WEB'] + 'rest/data/issue/' |
| 174 | 179 |
| 175 # Retrieve all issue status=open | 180 # Retrieve all issue status=open |
| 176 form = cgi.FieldStorage() | 181 form = cgi.FieldStorage() |
| 177 form.list = [ | 182 form.list = [ |
| 178 cgi.MiniFieldStorage('where_status', 'open') | 183 cgi.MiniFieldStorage('status', 'open') |
| 179 ] | 184 ] |
| 180 results = self.server.get_collection('issue', form) | 185 results = self.server.get_collection('issue', form) |
| 181 self.assertEqual(self.dummy_client.response_code, 200) | 186 self.assertEqual(self.dummy_client.response_code, 200) |
| 182 self.assertIn(get_obj(base_path, issue_open_norm), | 187 self.assertIn(get_obj(base_path, issue_open_norm), |
| 183 results['data']['collection']) | 188 results['data']['collection']) |
| 189 ) | 194 ) |
| 190 | 195 |
| 191 # Retrieve all issue status=closed and priority=critical | 196 # Retrieve all issue status=closed and priority=critical |
| 192 form = cgi.FieldStorage() | 197 form = cgi.FieldStorage() |
| 193 form.list = [ | 198 form.list = [ |
| 194 cgi.MiniFieldStorage('where_status', 'closed'), | 199 cgi.MiniFieldStorage('status', 'closed'), |
| 195 cgi.MiniFieldStorage('where_priority', 'critical') | 200 cgi.MiniFieldStorage('priority', 'critical') |
| 196 ] | 201 ] |
| 197 results = self.server.get_collection('issue', form) | 202 results = self.server.get_collection('issue', form) |
| 198 self.assertEqual(self.dummy_client.response_code, 200) | 203 self.assertEqual(self.dummy_client.response_code, 200) |
| 199 self.assertIn(get_obj(base_path, issue_closed_crit), | 204 self.assertIn(get_obj(base_path, issue_closed_crit), |
| 200 results['data']['collection']) | 205 results['data']['collection']) |
| 206 ) | 211 ) |
| 207 | 212 |
| 208 # Retrieve all issue status=closed and priority=normal,critical | 213 # Retrieve all issue status=closed and priority=normal,critical |
| 209 form = cgi.FieldStorage() | 214 form = cgi.FieldStorage() |
| 210 form.list = [ | 215 form.list = [ |
| 211 cgi.MiniFieldStorage('where_status', 'closed'), | 216 cgi.MiniFieldStorage('status', 'closed'), |
| 212 cgi.MiniFieldStorage('where_priority', 'normal,critical') | 217 cgi.MiniFieldStorage('priority', 'normal,critical') |
| 213 ] | 218 ] |
| 214 results = self.server.get_collection('issue', form) | 219 results = self.server.get_collection('issue', form) |
| 215 self.assertEqual(self.dummy_client.response_code, 200) | 220 self.assertEqual(self.dummy_client.response_code, 200) |
| 216 self.assertIn(get_obj(base_path, issue_closed_crit), | 221 self.assertIn(get_obj(base_path, issue_closed_crit), |
| 217 results['data']['collection']) | 222 results['data']['collection']) |
| 257 "bugs/rest/data/issue" | 262 "bugs/rest/data/issue" |
| 258 | 263 |
| 259 # Retrieve page 1 | 264 # Retrieve page 1 |
| 260 form = cgi.FieldStorage() | 265 form = cgi.FieldStorage() |
| 261 form.list = [ | 266 form.list = [ |
| 262 cgi.MiniFieldStorage('page_size', page_size), | 267 cgi.MiniFieldStorage('@page_size', page_size), |
| 263 cgi.MiniFieldStorage('page_index', 1) | 268 cgi.MiniFieldStorage('@page_index', 1) |
| 264 ] | 269 ] |
| 265 results = self.server.get_collection('issue', form) | 270 results = self.server.get_collection('issue', form) |
| 266 self.assertEqual(self.dummy_client.response_code, 200) | 271 self.assertEqual(self.dummy_client.response_code, 200) |
| 267 self.assertEqual(len(results['data']['collection']), | 272 self.assertEqual(len(results['data']['collection']), |
| 268 page_one_expected) | 273 page_one_expected) |
| 269 self.assertTrue('@links' in results['data']) | 274 self.assertTrue('@links' in results['data']) |
| 270 self.assertTrue('self' in results['data']['@links']) | 275 self.assertTrue('self' in results['data']['@links']) |
| 271 self.assertTrue('next' in results['data']['@links']) | 276 self.assertTrue('next' in results['data']['@links']) |
| 272 self.assertFalse('prev' in results['data']['@links']) | 277 self.assertFalse('prev' in results['data']['@links']) |
| 273 self.assertEqual(results['data']['@links']['self'][0]['uri'], | 278 self.assertEqual(results['data']['@links']['self'][0]['uri'], |
| 274 "%s?page_index=1&page_size=%s"%(base_url,page_size)) | 279 "%s?@page_index=1&@page_size=%s"%(base_url,page_size)) |
| 275 self.assertEqual(results['data']['@links']['next'][0]['uri'], | 280 self.assertEqual(results['data']['@links']['next'][0]['uri'], |
| 276 "%s?page_index=2&page_size=%s"%(base_url,page_size)) | 281 "%s?@page_index=2&@page_size=%s"%(base_url,page_size)) |
| 277 | 282 |
| 278 page_one_results = results # save this for later | 283 page_one_results = results # save this for later |
| 279 | 284 |
| 280 # Retrieve page 2 | 285 # Retrieve page 2 |
| 281 form = cgi.FieldStorage() | 286 form = cgi.FieldStorage() |
| 282 form.list = [ | 287 form.list = [ |
| 283 cgi.MiniFieldStorage('page_size', page_size), | 288 cgi.MiniFieldStorage('@page_size', page_size), |
| 284 cgi.MiniFieldStorage('page_index', 2) | 289 cgi.MiniFieldStorage('@page_index', 2) |
| 285 ] | 290 ] |
| 286 results = self.server.get_collection('issue', form) | 291 results = self.server.get_collection('issue', form) |
| 287 self.assertEqual(self.dummy_client.response_code, 200) | 292 self.assertEqual(self.dummy_client.response_code, 200) |
| 288 self.assertEqual(len(results['data']['collection']), page_two_expected) | 293 self.assertEqual(len(results['data']['collection']), page_two_expected) |
| 289 self.assertTrue('@links' in results['data']) | 294 self.assertTrue('@links' in results['data']) |
| 290 self.assertTrue('self' in results['data']['@links']) | 295 self.assertTrue('self' in results['data']['@links']) |
| 291 self.assertTrue('next' in results['data']['@links']) | 296 self.assertTrue('next' in results['data']['@links']) |
| 292 self.assertTrue('prev' in results['data']['@links']) | 297 self.assertTrue('prev' in results['data']['@links']) |
| 293 self.assertEqual(results['data']['@links']['self'][0]['uri'], | 298 self.assertEqual(results['data']['@links']['self'][0]['uri'], |
| 294 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=2&page_size=%s"%page_size) | 299 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=2&@page_size=%s"%page_size) |
| 295 self.assertEqual(results['data']['@links']['next'][0]['uri'], | 300 self.assertEqual(results['data']['@links']['next'][0]['uri'], |
| 296 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=3&page_size=%s"%page_size) | 301 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=3&@page_size=%s"%page_size) |
| 297 self.assertEqual(results['data']['@links']['prev'][0]['uri'], | 302 self.assertEqual(results['data']['@links']['prev'][0]['uri'], |
| 298 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=1&page_size=%s"%page_size) | 303 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=1&@page_size=%s"%page_size) |
| 299 self.assertEqual(results['data']['@links']['self'][0]['rel'], | 304 self.assertEqual(results['data']['@links']['self'][0]['rel'], |
| 300 'self') | 305 'self') |
| 301 self.assertEqual(results['data']['@links']['next'][0]['rel'], | 306 self.assertEqual(results['data']['@links']['next'][0]['rel'], |
| 302 'next') | 307 'next') |
| 303 self.assertEqual(results['data']['@links']['prev'][0]['rel'], | 308 self.assertEqual(results['data']['@links']['prev'][0]['rel'], |
| 304 'prev') | 309 'prev') |
| 305 | 310 |
| 306 # Retrieve page 3 | 311 # Retrieve page 3 |
| 307 form = cgi.FieldStorage() | 312 form = cgi.FieldStorage() |
| 308 form.list = [ | 313 form.list = [ |
| 309 cgi.MiniFieldStorage('page_size', page_size), | 314 cgi.MiniFieldStorage('@page_size', page_size), |
| 310 cgi.MiniFieldStorage('page_index', 3) | 315 cgi.MiniFieldStorage('@page_index', 3) |
| 311 ] | 316 ] |
| 312 results = self.server.get_collection('issue', form) | 317 results = self.server.get_collection('issue', form) |
| 313 self.assertEqual(self.dummy_client.response_code, 200) | 318 self.assertEqual(self.dummy_client.response_code, 200) |
| 314 self.assertEqual(len(results['data']['collection']), page_three_expected) | 319 self.assertEqual(len(results['data']['collection']), page_three_expected) |
| 315 self.assertTrue('@links' in results['data']) | 320 self.assertTrue('@links' in results['data']) |
| 316 self.assertTrue('self' in results['data']['@links']) | 321 self.assertTrue('self' in results['data']['@links']) |
| 317 self.assertFalse('next' in results['data']['@links']) | 322 self.assertFalse('next' in results['data']['@links']) |
| 318 self.assertTrue('prev' in results['data']['@links']) | 323 self.assertTrue('prev' in results['data']['@links']) |
| 319 self.assertEqual(results['data']['@links']['self'][0]['uri'], | 324 self.assertEqual(results['data']['@links']['self'][0]['uri'], |
| 320 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=3&page_size=%s"%page_size) | 325 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=3&@page_size=%s"%page_size) |
| 321 self.assertEqual(results['data']['@links']['prev'][0]['uri'], | 326 self.assertEqual(results['data']['@links']['prev'][0]['uri'], |
| 322 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?page_index=2&page_size=%s"%page_size) | 327 "http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/issue?@page_index=2&@page_size=%s"%page_size) |
| 323 | 328 |
| 324 # Verify that page_index is optional | 329 # Verify that page_index is optional |
| 325 # Should start at page 1 | 330 # Should start at page 1 |
| 326 form = cgi.FieldStorage() | 331 form = cgi.FieldStorage() |
| 327 form.list = [ | 332 form.list = [ |
| 328 cgi.MiniFieldStorage('page_size', page_size), | 333 cgi.MiniFieldStorage('@page_size', page_size), |
| 329 ] | 334 ] |
| 330 results = self.server.get_collection('issue', form) | 335 results = self.server.get_collection('issue', form) |
| 331 self.assertEqual(self.dummy_client.response_code, 200) | 336 self.assertEqual(self.dummy_client.response_code, 200) |
| 332 self.assertEqual(len(results['data']['collection']), page_size) | 337 self.assertEqual(len(results['data']['collection']), page_size) |
| 333 self.assertTrue('@links' in results['data']) | 338 self.assertTrue('@links' in results['data']) |
| 694 self.assertEqual(self.dummy_client.response_code, 201) | 699 self.assertEqual(self.dummy_client.response_code, 201) |
| 695 fileid = results['data']['id'] | 700 fileid = results['data']['id'] |
| 696 results = self.server.get_element('file', fileid, self.empty_form) | 701 results = self.server.get_element('file', fileid, self.empty_form) |
| 697 results = results['data'] | 702 results = results['data'] |
| 698 self.assertEqual(self.dummy_client.response_code, 200) | 703 self.assertEqual(self.dummy_client.response_code, 200) |
| 704 self.assertEqual(results['attributes']['content'], | |
| 705 {'link': 'http://tracker.example/cgi-bin/roundup.cgi/bugs/file1/'}) | |
| 706 | |
| 707 # File content is only shown with verbose=3 | |
| 708 form = cgi.FieldStorage() | |
| 709 form.list = [ | |
| 710 cgi.MiniFieldStorage('@verbose', '3') | |
| 711 ] | |
| 712 results = self.server.get_element('file', fileid, form) | |
| 713 results = results['data'] | |
| 714 self.assertEqual(self.dummy_client.response_code, 200) | |
| 699 self.assertEqual(results['attributes']['content'], 'hello\r\nthere') | 715 self.assertEqual(results['attributes']['content'], 'hello\r\nthere') |
| 700 | 716 |
| 701 def testAuthDeniedPut(self): | 717 def testAuthDeniedPut(self): |
| 702 """ | 718 """ |
| 703 Test unauthorized PUT request | 719 Test unauthorized PUT request |
| 770 self.assertEqual(self.dummy_client.response_code, 412) | 786 self.assertEqual(self.dummy_client.response_code, 412) |
| 771 results = self.server.get_element('issue', issue_id, self.empty_form) | 787 results = self.server.get_element('issue', issue_id, self.empty_form) |
| 772 results = results['data'] | 788 results = results['data'] |
| 773 self.assertEqual(self.dummy_client.response_code, 200) | 789 self.assertEqual(self.dummy_client.response_code, 200) |
| 774 self.assertEqual(len(results['attributes']['nosy']), 1) | 790 self.assertEqual(len(results['attributes']['nosy']), 1) |
| 775 self.assertListEqual(results['attributes']['nosy'], ['1']) | 791 self.assertListEqual(results['attributes']['nosy'], |
| 792 [{'id': '1', 'link': self.url_pfx + 'user/1'}]) | |
| 776 | 793 |
| 777 form = cgi.FieldStorage() | 794 form = cgi.FieldStorage() |
| 778 etag = calculate_etag(self.db.issue.getnode(issue_id)) | 795 etag = calculate_etag(self.db.issue.getnode(issue_id)) |
| 779 form.list.append(cgi.MiniFieldStorage('@etag', etag)) | 796 form.list.append(cgi.MiniFieldStorage('@etag', etag)) |
| 780 # remove the title and nosy | 797 # remove the title and nosy |
| 790 'issue', issue_id, 'nosy', form | 807 'issue', issue_id, 'nosy', form |
| 791 ) | 808 ) |
| 792 self.assertEqual(self.dummy_client.response_code, 200) | 809 self.assertEqual(self.dummy_client.response_code, 200) |
| 793 | 810 |
| 794 # verify the result | 811 # verify the result |
| 795 results = self.server.get_element('issue', issue_id, self.empty_form) | 812 results = self.server.get_element('issue', issue_id, self.terse_form) |
| 796 results = results['data'] | 813 results = results['data'] |
| 797 self.assertEqual(self.dummy_client.response_code, 200) | 814 self.assertEqual(self.dummy_client.response_code, 200) |
| 798 self.assertEqual(len(results['attributes']['nosy']), 0) | 815 self.assertEqual(len(results['attributes']['nosy']), 0) |
| 799 self.assertListEqual(results['attributes']['nosy'], []) | 816 self.assertListEqual(results['attributes']['nosy'], []) |
| 800 self.assertEqual(results['attributes']['title'], None) | 817 self.assertEqual(results['attributes']['title'], None) |
| 808 | 825 |
| 809 # fail to add userid 2 to the nosy list | 826 # fail to add userid 2 to the nosy list |
| 810 # no etag | 827 # no etag |
| 811 form = cgi.FieldStorage() | 828 form = cgi.FieldStorage() |
| 812 form.list = [ | 829 form.list = [ |
| 813 cgi.MiniFieldStorage('op', 'add'), | 830 cgi.MiniFieldStorage('@op', 'add'), |
| 814 cgi.MiniFieldStorage('nosy', '2') | 831 cgi.MiniFieldStorage('nosy', '2') |
| 815 ] | 832 ] |
| 816 results = self.server.patch_element('issue', issue_id, form) | 833 results = self.server.patch_element('issue', issue_id, form) |
| 817 self.assertEqual(self.dummy_client.response_code, 412) | 834 self.assertEqual(self.dummy_client.response_code, 412) |
| 818 | 835 |
| 819 etag = calculate_etag(self.db.issue.getnode(issue_id)) | 836 etag = calculate_etag(self.db.issue.getnode(issue_id)) |
| 820 form = cgi.FieldStorage() | 837 form = cgi.FieldStorage() |
| 821 form.list = [ | 838 form.list = [ |
| 822 cgi.MiniFieldStorage('op', 'add'), | 839 cgi.MiniFieldStorage('@op', 'add'), |
| 823 cgi.MiniFieldStorage('nosy', '2'), | 840 cgi.MiniFieldStorage('nosy', '2'), |
| 824 cgi.MiniFieldStorage('@etag', etag) | 841 cgi.MiniFieldStorage('@etag', etag) |
| 825 ] | 842 ] |
| 826 results = self.server.patch_element('issue', issue_id, form) | 843 results = self.server.patch_element('issue', issue_id, form) |
| 827 self.assertEqual(self.dummy_client.response_code, 200) | 844 self.assertEqual(self.dummy_client.response_code, 200) |
| 828 | 845 |
| 829 # verify the result | 846 # verify the result |
| 830 results = self.server.get_element('issue', issue_id, self.empty_form) | 847 results = self.server.get_element('issue', issue_id, self.terse_form) |
| 831 results = results['data'] | 848 results = results['data'] |
| 832 self.assertEqual(self.dummy_client.response_code, 200) | 849 self.assertEqual(self.dummy_client.response_code, 200) |
| 833 self.assertEqual(len(results['attributes']['nosy']), 2) | 850 self.assertEqual(len(results['attributes']['nosy']), 2) |
| 834 self.assertListEqual(results['attributes']['nosy'], ['1', '2']) | 851 self.assertListEqual(results['attributes']['nosy'], ['1', '2']) |
| 835 | 852 |
| 842 | 859 |
| 843 # fail to replace userid 2 to the nosy list and status = 3 | 860 # fail to replace userid 2 to the nosy list and status = 3 |
| 844 # no etag. | 861 # no etag. |
| 845 form = cgi.FieldStorage() | 862 form = cgi.FieldStorage() |
| 846 form.list = [ | 863 form.list = [ |
| 847 cgi.MiniFieldStorage('op', 'replace'), | 864 cgi.MiniFieldStorage('@op', 'replace'), |
| 848 cgi.MiniFieldStorage('nosy', '2'), | 865 cgi.MiniFieldStorage('nosy', '2'), |
| 849 cgi.MiniFieldStorage('status', '3') | 866 cgi.MiniFieldStorage('status', '3') |
| 850 ] | 867 ] |
| 851 results = self.server.patch_element('issue', issue_id, form) | 868 results = self.server.patch_element('issue', issue_id, form) |
| 852 self.assertEqual(self.dummy_client.response_code, 412) | 869 self.assertEqual(self.dummy_client.response_code, 412) |
| 853 results = self.server.get_element('issue', issue_id, self.empty_form) | 870 results = self.server.get_element('issue', issue_id, self.terse_form) |
| 854 results = results['data'] | 871 results = results['data'] |
| 855 self.assertEqual(self.dummy_client.response_code, 200) | 872 self.assertEqual(self.dummy_client.response_code, 200) |
| 856 self.assertEqual(results['attributes']['status'], '1') | 873 self.assertEqual(results['attributes']['status'], '1') |
| 857 self.assertEqual(len(results['attributes']['nosy']), 1) | 874 self.assertEqual(len(results['attributes']['nosy']), 1) |
| 858 self.assertListEqual(results['attributes']['nosy'], ['1']) | 875 self.assertListEqual(results['attributes']['nosy'], ['1']) |
| 859 | 876 |
| 860 # replace userid 2 to the nosy list and status = 3 | 877 # replace userid 2 to the nosy list and status = 3 |
| 861 etag = calculate_etag(self.db.issue.getnode(issue_id)) | 878 etag = calculate_etag(self.db.issue.getnode(issue_id)) |
| 862 form = cgi.FieldStorage() | 879 form = cgi.FieldStorage() |
| 863 form.list = [ | 880 form.list = [ |
| 864 cgi.MiniFieldStorage('op', 'replace'), | 881 cgi.MiniFieldStorage('@op', 'replace'), |
| 865 cgi.MiniFieldStorage('nosy', '2'), | 882 cgi.MiniFieldStorage('nosy', '2'), |
| 866 cgi.MiniFieldStorage('status', '3'), | 883 cgi.MiniFieldStorage('status', '3'), |
| 867 cgi.MiniFieldStorage('@etag', etag) | 884 cgi.MiniFieldStorage('@etag', etag) |
| 868 ] | 885 ] |
| 869 results = self.server.patch_element('issue', issue_id, form) | 886 results = self.server.patch_element('issue', issue_id, form) |
| 870 self.assertEqual(self.dummy_client.response_code, 200) | 887 self.assertEqual(self.dummy_client.response_code, 200) |
| 871 # verify the result | 888 # verify the result |
| 872 results = self.server.get_element('issue', issue_id, self.empty_form) | 889 results = self.server.get_element('issue', issue_id, self.terse_form) |
| 873 results = results['data'] | 890 results = results['data'] |
| 874 self.assertEqual(self.dummy_client.response_code, 200) | 891 self.assertEqual(self.dummy_client.response_code, 200) |
| 875 self.assertEqual(results['attributes']['status'], '3') | 892 self.assertEqual(results['attributes']['status'], '3') |
| 876 self.assertEqual(len(results['attributes']['nosy']), 1) | 893 self.assertEqual(len(results['attributes']['nosy']), 1) |
| 877 self.assertListEqual(results['attributes']['nosy'], ['2']) | 894 self.assertListEqual(results['attributes']['nosy'], ['2']) |
| 885 | 902 |
| 886 # fail to remove the nosy list and the title | 903 # fail to remove the nosy list and the title |
| 887 # no etag | 904 # no etag |
| 888 form = cgi.FieldStorage() | 905 form = cgi.FieldStorage() |
| 889 form.list = [ | 906 form.list = [ |
| 890 cgi.MiniFieldStorage('op', 'remove'), | 907 cgi.MiniFieldStorage('@op', 'remove'), |
| 891 cgi.MiniFieldStorage('nosy', ''), | 908 cgi.MiniFieldStorage('nosy', ''), |
| 892 cgi.MiniFieldStorage('title', '') | 909 cgi.MiniFieldStorage('title', '') |
| 893 ] | 910 ] |
| 894 results = self.server.patch_element('issue', issue_id, form) | 911 results = self.server.patch_element('issue', issue_id, form) |
| 895 self.assertEqual(self.dummy_client.response_code, 412) | 912 self.assertEqual(self.dummy_client.response_code, 412) |
| 896 results = self.server.get_element('issue', issue_id, self.empty_form) | 913 results = self.server.get_element('issue', issue_id, self.terse_form) |
| 897 results = results['data'] | 914 results = results['data'] |
| 898 self.assertEqual(self.dummy_client.response_code, 200) | 915 self.assertEqual(self.dummy_client.response_code, 200) |
| 899 self.assertEqual(results['attributes']['title'], 'foo') | 916 self.assertEqual(results['attributes']['title'], 'foo') |
| 900 self.assertEqual(len(results['attributes']['nosy']), 2) | 917 self.assertEqual(len(results['attributes']['nosy']), 2) |
| 901 self.assertEqual(results['attributes']['nosy'], ['1', '2']) | 918 self.assertEqual(results['attributes']['nosy'], ['1', '2']) |
| 902 | 919 |
| 903 # remove the nosy list and the title | 920 # remove the nosy list and the title |
| 904 form = cgi.FieldStorage() | 921 form = cgi.FieldStorage() |
| 905 etag = calculate_etag(self.db.issue.getnode(issue_id)) | 922 etag = calculate_etag(self.db.issue.getnode(issue_id)) |
| 906 form.list = [ | 923 form.list = [ |
| 907 cgi.MiniFieldStorage('op', 'remove'), | 924 cgi.MiniFieldStorage('@op', 'remove'), |
| 908 cgi.MiniFieldStorage('nosy', ''), | 925 cgi.MiniFieldStorage('nosy', ''), |
| 909 cgi.MiniFieldStorage('title', ''), | 926 cgi.MiniFieldStorage('title', ''), |
| 910 cgi.MiniFieldStorage('@etag', etag) | 927 cgi.MiniFieldStorage('@etag', etag) |
| 911 ] | 928 ] |
| 912 results = self.server.patch_element('issue', issue_id, form) | 929 results = self.server.patch_element('issue', issue_id, form) |
| 913 self.assertEqual(self.dummy_client.response_code, 200) | 930 self.assertEqual(self.dummy_client.response_code, 200) |
| 914 | 931 |
| 915 # verify the result | 932 # verify the result |
| 916 results = self.server.get_element('issue', issue_id, self.empty_form) | 933 results = self.server.get_element('issue', issue_id, self.terse_form) |
| 917 results = results['data'] | 934 results = results['data'] |
| 918 self.assertEqual(self.dummy_client.response_code, 200) | 935 self.assertEqual(self.dummy_client.response_code, 200) |
| 919 self.assertEqual(results['attributes']['title'], None) | 936 self.assertEqual(results['attributes']['title'], None) |
| 920 self.assertEqual(len(results['attributes']['nosy']), 0) | 937 self.assertEqual(len(results['attributes']['nosy']), 0) |
| 921 self.assertEqual(results['attributes']['nosy'], []) | 938 self.assertEqual(results['attributes']['nosy'], []) |
| 929 | 946 |
| 930 # fail to execute action retire | 947 # fail to execute action retire |
| 931 # no etag | 948 # no etag |
| 932 form = cgi.FieldStorage() | 949 form = cgi.FieldStorage() |
| 933 form.list = [ | 950 form.list = [ |
| 934 cgi.MiniFieldStorage('op', 'action'), | 951 cgi.MiniFieldStorage('@op', 'action'), |
| 935 cgi.MiniFieldStorage('action_name', 'retire') | 952 cgi.MiniFieldStorage('@action_name', 'retire') |
| 936 ] | 953 ] |
| 937 results = self.server.patch_element('issue', issue_id, form) | 954 results = self.server.patch_element('issue', issue_id, form) |
| 938 self.assertEqual(self.dummy_client.response_code, 412) | 955 self.assertEqual(self.dummy_client.response_code, 412) |
| 939 self.assertFalse(self.db.issue.is_retired(issue_id)) | 956 self.assertFalse(self.db.issue.is_retired(issue_id)) |
| 940 | 957 |
| 941 # execute action retire | 958 # execute action retire |
| 942 form = cgi.FieldStorage() | 959 form = cgi.FieldStorage() |
| 943 etag = calculate_etag(self.db.issue.getnode(issue_id)) | 960 etag = calculate_etag(self.db.issue.getnode(issue_id)) |
| 944 form.list = [ | 961 form.list = [ |
| 945 cgi.MiniFieldStorage('op', 'action'), | 962 cgi.MiniFieldStorage('@op', 'action'), |
| 946 cgi.MiniFieldStorage('action_name', 'retire'), | 963 cgi.MiniFieldStorage('@action_name', 'retire'), |
| 947 cgi.MiniFieldStorage('@etag', etag) | 964 cgi.MiniFieldStorage('@etag', etag) |
| 948 ] | 965 ] |
| 949 results = self.server.patch_element('issue', issue_id, form) | 966 results = self.server.patch_element('issue', issue_id, form) |
| 950 self.assertEqual(self.dummy_client.response_code, 200) | 967 self.assertEqual(self.dummy_client.response_code, 200) |
| 951 | 968 |
| 961 | 978 |
| 962 # fail to remove the nosy list and the title | 979 # fail to remove the nosy list and the title |
| 963 # no etag | 980 # no etag |
| 964 form = cgi.FieldStorage() | 981 form = cgi.FieldStorage() |
| 965 form.list = [ | 982 form.list = [ |
| 966 cgi.MiniFieldStorage('op', 'remove'), | 983 cgi.MiniFieldStorage('@op', 'remove'), |
| 967 cgi.MiniFieldStorage('nosy', '1, 2'), | 984 cgi.MiniFieldStorage('nosy', '1, 2'), |
| 968 ] | 985 ] |
| 969 results = self.server.patch_element('issue', issue_id, form) | 986 results = self.server.patch_element('issue', issue_id, form) |
| 970 self.assertEqual(self.dummy_client.response_code, 412) | 987 self.assertEqual(self.dummy_client.response_code, 412) |
| 971 results = self.server.get_element('issue', issue_id, self.empty_form) | 988 results = self.server.get_element('issue', issue_id, self.terse_form) |
| 972 results = results['data'] | 989 results = results['data'] |
| 973 self.assertEqual(self.dummy_client.response_code, 200) | 990 self.assertEqual(self.dummy_client.response_code, 200) |
| 974 self.assertEqual(len(results['attributes']['nosy']), 3) | 991 self.assertEqual(len(results['attributes']['nosy']), 3) |
| 975 self.assertEqual(results['attributes']['nosy'], ['1', '2', '3']) | 992 self.assertEqual(results['attributes']['nosy'], ['1', '2', '3']) |
| 976 | 993 |
| 977 # remove the nosy list and the title | 994 # remove the nosy list and the title |
| 978 form = cgi.FieldStorage() | 995 form = cgi.FieldStorage() |
| 979 etag = calculate_etag(self.db.issue.getnode(issue_id)) | 996 etag = calculate_etag(self.db.issue.getnode(issue_id)) |
| 980 form.list = [ | 997 form.list = [ |
| 981 cgi.MiniFieldStorage('op', 'remove'), | 998 cgi.MiniFieldStorage('@op', 'remove'), |
| 982 cgi.MiniFieldStorage('nosy', '1, 2'), | 999 cgi.MiniFieldStorage('nosy', '1, 2'), |
| 983 cgi.MiniFieldStorage('@etag', etag) | 1000 cgi.MiniFieldStorage('@etag', etag) |
| 984 ] | 1001 ] |
| 985 results = self.server.patch_element('issue', issue_id, form) | 1002 results = self.server.patch_element('issue', issue_id, form) |
| 986 self.assertEqual(self.dummy_client.response_code, 200) | 1003 self.assertEqual(self.dummy_client.response_code, 200) |
| 987 | 1004 |
| 988 # verify the result | 1005 # verify the result |
| 989 results = self.server.get_element('issue', issue_id, self.empty_form) | 1006 results = self.server.get_element('issue', issue_id, self.terse_form) |
| 990 results = results['data'] | 1007 results = results['data'] |
| 991 self.assertEqual(self.dummy_client.response_code, 200) | 1008 self.assertEqual(self.dummy_client.response_code, 200) |
| 992 self.assertEqual(len(results['attributes']['nosy']), 1) | 1009 self.assertEqual(len(results['attributes']['nosy']), 1) |
| 993 self.assertEqual(results['attributes']['nosy'], ['3']) | 1010 self.assertEqual(results['attributes']['nosy'], ['3']) |
| 994 | 1011 |
