2424class TestCase ():
2525
2626 backend = None
27+ url_pfx = 'http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/'
2728
2829 def setUp (self ):
2930 self .dirname = '_test_rest'
@@ -71,6 +72,10 @@ def setUp(self):
7172 self .dummy_client = client .Client (self .instance , MockNull (), env , [], None )
7273 self .dummy_client .request .headers .get = self .get_header
7374 self .empty_form = cgi .FieldStorage ()
75+ self .terse_form = cgi .FieldStorage ()
76+ self .terse_form .list = [
77+ cgi .MiniFieldStorage ('@verbose' , '0' ),
78+ ]
7479
7580 self .server = RestfulInstance (self .dummy_client , self .db )
7681
@@ -175,7 +180,7 @@ def testFilter(self):
175180 # Retrieve all issue status=open
176181 form = cgi .FieldStorage ()
177182 form .list = [
178- cgi .MiniFieldStorage ('where_status ' , 'open' )
183+ cgi .MiniFieldStorage ('status ' , 'open' )
179184 ]
180185 results = self .server .get_collection ('issue' , form )
181186 self .assertEqual (self .dummy_client .response_code , 200 )
@@ -191,8 +196,8 @@ def testFilter(self):
191196 # Retrieve all issue status=closed and priority=critical
192197 form = cgi .FieldStorage ()
193198 form .list = [
194- cgi .MiniFieldStorage ('where_status ' , 'closed' ),
195- cgi .MiniFieldStorage ('where_priority ' , 'critical' )
199+ cgi .MiniFieldStorage ('status ' , 'closed' ),
200+ cgi .MiniFieldStorage ('priority ' , 'critical' )
196201 ]
197202 results = self .server .get_collection ('issue' , form )
198203 self .assertEqual (self .dummy_client .response_code , 200 )
@@ -208,8 +213,8 @@ def testFilter(self):
208213 # Retrieve all issue status=closed and priority=normal,critical
209214 form = cgi .FieldStorage ()
210215 form .list = [
211- cgi .MiniFieldStorage ('where_status ' , 'closed' ),
212- cgi .MiniFieldStorage ('where_priority ' , 'normal,critical' )
216+ cgi .MiniFieldStorage ('status ' , 'closed' ),
217+ cgi .MiniFieldStorage ('priority ' , 'normal,critical' )
213218 ]
214219 results = self .server .get_collection ('issue' , form )
215220 self .assertEqual (self .dummy_client .response_code , 200 )
@@ -259,8 +264,8 @@ def testPagination(self):
259264 # Retrieve page 1
260265 form = cgi .FieldStorage ()
261266 form .list = [
262- cgi .MiniFieldStorage ('page_size' , page_size ),
263- cgi .MiniFieldStorage ('page_index' , 1 )
267+ cgi .MiniFieldStorage ('@ page_size' , page_size ),
268+ cgi .MiniFieldStorage ('@ page_index' , 1 )
264269 ]
265270 results = self .server .get_collection ('issue' , form )
266271 self .assertEqual (self .dummy_client .response_code , 200 )
@@ -271,17 +276,17 @@ def testPagination(self):
271276 self .assertTrue ('next' in results ['data' ]['@links' ])
272277 self .assertFalse ('prev' in results ['data' ]['@links' ])
273278 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 ))
275280 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 ))
277282
278283 page_one_results = results # save this for later
279284
280285 # Retrieve page 2
281286 form = cgi .FieldStorage ()
282287 form .list = [
283- cgi .MiniFieldStorage ('page_size' , page_size ),
284- cgi .MiniFieldStorage ('page_index' , 2 )
288+ cgi .MiniFieldStorage ('@ page_size' , page_size ),
289+ cgi .MiniFieldStorage ('@ page_index' , 2 )
285290 ]
286291 results = self .server .get_collection ('issue' , form )
287292 self .assertEqual (self .dummy_client .response_code , 200 )
@@ -291,11 +296,11 @@ def testPagination(self):
291296 self .assertTrue ('next' in results ['data' ]['@links' ])
292297 self .assertTrue ('prev' in results ['data' ]['@links' ])
293298 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 )
295300 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 )
297302 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 )
299304 self .assertEqual (results ['data' ]['@links' ]['self' ][0 ]['rel' ],
300305 'self' )
301306 self .assertEqual (results ['data' ]['@links' ]['next' ][0 ]['rel' ],
@@ -306,8 +311,8 @@ def testPagination(self):
306311 # Retrieve page 3
307312 form = cgi .FieldStorage ()
308313 form .list = [
309- cgi .MiniFieldStorage ('page_size' , page_size ),
310- cgi .MiniFieldStorage ('page_index' , 3 )
314+ cgi .MiniFieldStorage ('@ page_size' , page_size ),
315+ cgi .MiniFieldStorage ('@ page_index' , 3 )
311316 ]
312317 results = self .server .get_collection ('issue' , form )
313318 self .assertEqual (self .dummy_client .response_code , 200 )
@@ -317,15 +322,15 @@ def testPagination(self):
317322 self .assertFalse ('next' in results ['data' ]['@links' ])
318323 self .assertTrue ('prev' in results ['data' ]['@links' ])
319324 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 )
321326 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 )
323328
324329 # Verify that page_index is optional
325330 # Should start at page 1
326331 form = cgi .FieldStorage ()
327332 form .list = [
328- cgi .MiniFieldStorage ('page_size' , page_size ),
333+ cgi .MiniFieldStorage ('@ page_size' , page_size ),
329334 ]
330335 results = self .server .get_collection ('issue' , form )
331336 self .assertEqual (self .dummy_client .response_code , 200 )
@@ -696,6 +701,17 @@ def testPostFile(self):
696701 results = self .server .get_element ('file' , fileid , self .empty_form )
697702 results = results ['data' ]
698703 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 )
699715 self .assertEqual (results ['attributes' ]['content' ], 'hello\r \n there' )
700716
701717 def testAuthDeniedPut (self ):
@@ -772,7 +788,8 @@ def testDeleteAttributeUri(self):
772788 results = results ['data' ]
773789 self .assertEqual (self .dummy_client .response_code , 200 )
774790 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' }])
776793
777794 form = cgi .FieldStorage ()
778795 etag = calculate_etag (self .db .issue .getnode (issue_id ))
@@ -792,7 +809,7 @@ def testDeleteAttributeUri(self):
792809 self .assertEqual (self .dummy_client .response_code , 200 )
793810
794811 # 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 )
796813 results = results ['data' ]
797814 self .assertEqual (self .dummy_client .response_code , 200 )
798815 self .assertEqual (len (results ['attributes' ]['nosy' ]), 0 )
@@ -810,7 +827,7 @@ def testPatchAdd(self):
810827 # no etag
811828 form = cgi .FieldStorage ()
812829 form .list = [
813- cgi .MiniFieldStorage ('op' , 'add' ),
830+ cgi .MiniFieldStorage ('@ op' , 'add' ),
814831 cgi .MiniFieldStorage ('nosy' , '2' )
815832 ]
816833 results = self .server .patch_element ('issue' , issue_id , form )
@@ -819,15 +836,15 @@ def testPatchAdd(self):
819836 etag = calculate_etag (self .db .issue .getnode (issue_id ))
820837 form = cgi .FieldStorage ()
821838 form .list = [
822- cgi .MiniFieldStorage ('op' , 'add' ),
839+ cgi .MiniFieldStorage ('@ op' , 'add' ),
823840 cgi .MiniFieldStorage ('nosy' , '2' ),
824841 cgi .MiniFieldStorage ('@etag' , etag )
825842 ]
826843 results = self .server .patch_element ('issue' , issue_id , form )
827844 self .assertEqual (self .dummy_client .response_code , 200 )
828845
829846 # 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 )
831848 results = results ['data' ]
832849 self .assertEqual (self .dummy_client .response_code , 200 )
833850 self .assertEqual (len (results ['attributes' ]['nosy' ]), 2 )
@@ -844,13 +861,13 @@ def testPatchReplace(self):
844861 # no etag.
845862 form = cgi .FieldStorage ()
846863 form .list = [
847- cgi .MiniFieldStorage ('op' , 'replace' ),
864+ cgi .MiniFieldStorage ('@ op' , 'replace' ),
848865 cgi .MiniFieldStorage ('nosy' , '2' ),
849866 cgi .MiniFieldStorage ('status' , '3' )
850867 ]
851868 results = self .server .patch_element ('issue' , issue_id , form )
852869 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 )
854871 results = results ['data' ]
855872 self .assertEqual (self .dummy_client .response_code , 200 )
856873 self .assertEqual (results ['attributes' ]['status' ], '1' )
@@ -861,15 +878,15 @@ def testPatchReplace(self):
861878 etag = calculate_etag (self .db .issue .getnode (issue_id ))
862879 form = cgi .FieldStorage ()
863880 form .list = [
864- cgi .MiniFieldStorage ('op' , 'replace' ),
881+ cgi .MiniFieldStorage ('@ op' , 'replace' ),
865882 cgi .MiniFieldStorage ('nosy' , '2' ),
866883 cgi .MiniFieldStorage ('status' , '3' ),
867884 cgi .MiniFieldStorage ('@etag' , etag )
868885 ]
869886 results = self .server .patch_element ('issue' , issue_id , form )
870887 self .assertEqual (self .dummy_client .response_code , 200 )
871888 # 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 )
873890 results = results ['data' ]
874891 self .assertEqual (self .dummy_client .response_code , 200 )
875892 self .assertEqual (results ['attributes' ]['status' ], '3' )
@@ -887,13 +904,13 @@ def testPatchRemoveAll(self):
887904 # no etag
888905 form = cgi .FieldStorage ()
889906 form .list = [
890- cgi .MiniFieldStorage ('op' , 'remove' ),
907+ cgi .MiniFieldStorage ('@ op' , 'remove' ),
891908 cgi .MiniFieldStorage ('nosy' , '' ),
892909 cgi .MiniFieldStorage ('title' , '' )
893910 ]
894911 results = self .server .patch_element ('issue' , issue_id , form )
895912 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 )
897914 results = results ['data' ]
898915 self .assertEqual (self .dummy_client .response_code , 200 )
899916 self .assertEqual (results ['attributes' ]['title' ], 'foo' )
@@ -904,7 +921,7 @@ def testPatchRemoveAll(self):
904921 form = cgi .FieldStorage ()
905922 etag = calculate_etag (self .db .issue .getnode (issue_id ))
906923 form .list = [
907- cgi .MiniFieldStorage ('op' , 'remove' ),
924+ cgi .MiniFieldStorage ('@ op' , 'remove' ),
908925 cgi .MiniFieldStorage ('nosy' , '' ),
909926 cgi .MiniFieldStorage ('title' , '' ),
910927 cgi .MiniFieldStorage ('@etag' , etag )
@@ -913,7 +930,7 @@ def testPatchRemoveAll(self):
913930 self .assertEqual (self .dummy_client .response_code , 200 )
914931
915932 # 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 )
917934 results = results ['data' ]
918935 self .assertEqual (self .dummy_client .response_code , 200 )
919936 self .assertEqual (results ['attributes' ]['title' ], None )
@@ -931,8 +948,8 @@ def testPatchAction(self):
931948 # no etag
932949 form = cgi .FieldStorage ()
933950 form .list = [
934- cgi .MiniFieldStorage ('op' , 'action' ),
935- cgi .MiniFieldStorage ('action_name' , 'retire' )
951+ cgi .MiniFieldStorage ('@ op' , 'action' ),
952+ cgi .MiniFieldStorage ('@ action_name' , 'retire' )
936953 ]
937954 results = self .server .patch_element ('issue' , issue_id , form )
938955 self .assertEqual (self .dummy_client .response_code , 412 )
@@ -942,8 +959,8 @@ def testPatchAction(self):
942959 form = cgi .FieldStorage ()
943960 etag = calculate_etag (self .db .issue .getnode (issue_id ))
944961 form .list = [
945- cgi .MiniFieldStorage ('op' , 'action' ),
946- cgi .MiniFieldStorage ('action_name' , 'retire' ),
962+ cgi .MiniFieldStorage ('@ op' , 'action' ),
963+ cgi .MiniFieldStorage ('@ action_name' , 'retire' ),
947964 cgi .MiniFieldStorage ('@etag' , etag )
948965 ]
949966 results = self .server .patch_element ('issue' , issue_id , form )
@@ -963,12 +980,12 @@ def testPatchRemove(self):
963980 # no etag
964981 form = cgi .FieldStorage ()
965982 form .list = [
966- cgi .MiniFieldStorage ('op' , 'remove' ),
983+ cgi .MiniFieldStorage ('@ op' , 'remove' ),
967984 cgi .MiniFieldStorage ('nosy' , '1, 2' ),
968985 ]
969986 results = self .server .patch_element ('issue' , issue_id , form )
970987 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 )
972989 results = results ['data' ]
973990 self .assertEqual (self .dummy_client .response_code , 200 )
974991 self .assertEqual (len (results ['attributes' ]['nosy' ]), 3 )
@@ -978,15 +995,15 @@ def testPatchRemove(self):
978995 form = cgi .FieldStorage ()
979996 etag = calculate_etag (self .db .issue .getnode (issue_id ))
980997 form .list = [
981- cgi .MiniFieldStorage ('op' , 'remove' ),
998+ cgi .MiniFieldStorage ('@ op' , 'remove' ),
982999 cgi .MiniFieldStorage ('nosy' , '1, 2' ),
9831000 cgi .MiniFieldStorage ('@etag' , etag )
9841001 ]
9851002 results = self .server .patch_element ('issue' , issue_id , form )
9861003 self .assertEqual (self .dummy_client .response_code , 200 )
9871004
9881005 # 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 )
9901007 results = results ['data' ]
9911008 self .assertEqual (self .dummy_client .response_code , 200 )
9921009 self .assertEqual (len (results ['attributes' ]['nosy' ]), 1 )
0 commit comments