comparison test/test_rest.py @ 5588:6b3a9655a7d9 REST-rebased

Move decorator to outside of the class Change unittest to test the new format using the decorator committer: Ralf Schlatterbeck <rsc@runtux.com>
author Chau Nguyen <dangchau1991@yahoo.com>
date Wed, 30 Jan 2019 10:26:35 +0100
parents 8f2fbc88e155
children a25d79e874cb
comparison
equal deleted inserted replaced
5587:cb2b320fde16 5588:6b3a9655a7d9
54 env = { 54 env = {
55 'PATH_INFO': 'http://localhost/rounduptest/rest/', 55 'PATH_INFO': 'http://localhost/rounduptest/rest/',
56 'HTTP_HOST': 'localhost', 56 'HTTP_HOST': 'localhost',
57 'TRACKER_NAME': 'rounduptest' 57 'TRACKER_NAME': 'rounduptest'
58 } 58 }
59 dummy_client = client.Client(self.instance, None, env, [], None) 59 self.dummy_client = client.Client(self.instance, None, env, [], None)
60 60
61 self.server = RestfulInstance(dummy_client, self.db) 61 self.server = RestfulInstance(self.dummy_client, self.db)
62 62
63 def tearDown(self): 63 def tearDown(self):
64 self.db.close() 64 self.db.close()
65 try: 65 try:
66 shutil.rmtree(self.dirname) 66 shutil.rmtree(self.dirname)
72 """ 72 """
73 Retrieve all three users 73 Retrieve all three users
74 obtain data for 'joe' 74 obtain data for 'joe'
75 """ 75 """
76 # Retrieve all three users. 76 # Retrieve all three users.
77 code, results = self.server.get_collection('user', {}) 77 results = self.server.get_collection('user', {})
78 self.assertEqual(code, 200) 78 self.assertEqual(self.dummy_client.response_code, 200)
79 self.assertEqual(len(results), 3) 79 self.assertEqual(len(results['data']), 3)
80 80
81 # Obtain data for 'joe'. 81 # Obtain data for 'joe'.
82 code, results = self.server.get_element('user', self.joeid, {}) 82 results = self.server.get_element('user', self.joeid, {})['data']
83 self.assertEqual(code, 200) 83 self.assertEqual(self.dummy_client.response_code, 200)
84 self.assertEqual(results['attributes']['username'], 'joe') 84 self.assertEqual(results['attributes']['username'], 'joe')
85 self.assertEqual(results['attributes']['realname'], 'Joe Random') 85 self.assertEqual(results['attributes']['realname'], 'Joe Random')
86 86
87 # Obtain data for 'joe'. 87 # Obtain data for 'joe'.
88 code, results = self.server.get_attribute( 88 results = self.server.get_attribute(
89 'user', self.joeid, 'username', {} 89 'user', self.joeid, 'username', {}
90 ) 90 )
91 self.assertEqual(code, 200) 91 self.assertEqual(self.dummy_client.response_code, 200)
92 self.assertEqual(results['data'], 'joe') 92 self.assertEqual(results['data']['data'], 'joe')
93 93
94 def testPut(self): 94 def testPut(self):
95 """ 95 """
96 Change joe's 'realname' 96 Change joe's 'realname'
97 Check if we can't change admin's detail 97 Check if we can't change admin's detail
99 # change Joe's realname via attribute uri 99 # change Joe's realname via attribute uri
100 form = cgi.FieldStorage() 100 form = cgi.FieldStorage()
101 form.list = [ 101 form.list = [
102 cgi.MiniFieldStorage('data', 'Joe Doe Doe') 102 cgi.MiniFieldStorage('data', 'Joe Doe Doe')
103 ] 103 ]
104 code, results = self.server.put_attribute( 104 results = self.server.put_attribute(
105 'user', self.joeid, 'realname', form 105 'user', self.joeid, 'realname', form
106 ) 106 )
107 code, results = self.server.get_attribute( 107 results = self.server.get_attribute(
108 'user', self.joeid, 'realname', {} 108 'user', self.joeid, 'realname', {}
109 ) 109 )
110 self.assertEqual(code, 200) 110 self.assertEqual(self.dummy_client.response_code, 200)
111 self.assertEqual(results['data'], 'Joe Doe Doe') 111 self.assertEqual(results['data']['data'], 'Joe Doe Doe')
112 112
113 # Reset joe's 'realname'. 113 # Reset joe's 'realname'.
114 form = cgi.FieldStorage() 114 form = cgi.FieldStorage()
115 form.list = [ 115 form.list = [
116 cgi.MiniFieldStorage('realname', 'Joe Doe') 116 cgi.MiniFieldStorage('realname', 'Joe Doe')
117 ] 117 ]
118 code, results = self.server.put_element('user', self.joeid, form) 118 results = self.server.put_element('user', self.joeid, form)
119 code, results = self.server.get_element('user', self.joeid, {}) 119 results = self.server.get_element('user', self.joeid, {})
120 self.assertEqual(code, 200) 120 self.assertEqual(self.dummy_client.response_code, 200)
121 self.assertEqual(results['attributes']['realname'], 'Joe Doe') 121 self.assertEqual(results['data']['attributes']['realname'], 'Joe Doe')
122 122
123 # check we can't change admin's details 123 # check we can't change admin's details
124 self.assertRaises( 124 results = self.server.put_element('user', '1', form)
125 Unauthorised, 125 self.assertEqual(self.dummy_client.response_code, 403)
126 self.server.put_element, 'user', '1', form 126 self.assertEqual(results['error']['status'], 403)
127 )
128 127
129 def testPost(self): 128 def testPost(self):
130 """ 129 """
131 Post a new issue with title: foo 130 Post a new issue with title: foo
132 Verify the information of the created issue 131 Verify the information of the created issue
133 """ 132 """
134 form = cgi.FieldStorage() 133 form = cgi.FieldStorage()
135 form.list = [ 134 form.list = [
136 cgi.MiniFieldStorage('title', 'foo') 135 cgi.MiniFieldStorage('title', 'foo')
137 ] 136 ]
138 code, results = self.server.post_collection('issue', form) 137 results = self.server.post_collection('issue', form)
139 self.assertEqual(code, 201) 138 self.assertEqual(self.dummy_client.response_code, 201)
140 issueid = results['id'] 139 issueid = results['data']['id']
141 code, results = self.server.get_element('issue', issueid, {}) 140 results = self.server.get_element('issue', issueid, {})
142 self.assertEqual(code, 200) 141 self.assertEqual(self.dummy_client.response_code, 200)
143 self.assertEqual(results['attributes']['title'], 'foo') 142 self.assertEqual(results['data']['attributes']['title'], 'foo')
144 self.assertEqual(self.db.issue.get(issueid, "tx_Source"), 'web') 143 self.assertEqual(self.db.issue.get(issueid, "tx_Source"), 'web')
145 144
146 def testPostFile(self): 145 def testPostFile(self):
147 """ 146 """
148 Post a new file with content: hello\r\nthere 147 Post a new file with content: hello\r\nthere
150 """ 149 """
151 form = cgi.FieldStorage() 150 form = cgi.FieldStorage()
152 form.list = [ 151 form.list = [
153 cgi.MiniFieldStorage('content', 'hello\r\nthere') 152 cgi.MiniFieldStorage('content', 'hello\r\nthere')
154 ] 153 ]
155 code, results = self.server.post_collection('file', form) 154 results = self.server.post_collection('file', form)
156 self.assertEqual(code, 201) 155 self.assertEqual(self.dummy_client.response_code, 201)
157 fileid = results['id'] 156 fileid = results['data']['id']
158 code, results = self.server.get_element('file', fileid, {}) 157 results = self.server.get_element('file', fileid, {})['data']
159 self.assertEqual(code, 200) 158 self.assertEqual(self.dummy_client.response_code, 200)
160 self.assertEqual(results['attributes']['content'], 'hello\r\nthere') 159 self.assertEqual(results['attributes']['content'], 'hello\r\nthere')
161 160
162 def testAuthDeniedPut(self): 161 def testAuthDeniedPut(self):
163 """ 162 """
164 Test unauthorized PUT request 163 Test unauthorized PUT request
166 # Wrong permissions (caught by roundup security module). 165 # Wrong permissions (caught by roundup security module).
167 form = cgi.FieldStorage() 166 form = cgi.FieldStorage()
168 form.list = [ 167 form.list = [
169 cgi.MiniFieldStorage('realname', 'someone') 168 cgi.MiniFieldStorage('realname', 'someone')
170 ] 169 ]
171 self.assertRaises( 170 results = self.server.put_element('user', '1', form)
172 Unauthorised, 171 self.assertEqual(self.dummy_client.response_code, 403)
173 self.server.put_element, 'user', '1', form 172 self.assertEqual(results['error']['status'], 403)
174 )
175 173
176 def testAuthDeniedPost(self): 174 def testAuthDeniedPost(self):
177 """ 175 """
178 Test unauthorized POST request 176 Test unauthorized POST request
179 """ 177 """
180 form = cgi.FieldStorage() 178 form = cgi.FieldStorage()
181 form.list = [ 179 form.list = [
182 cgi.MiniFieldStorage('username', 'blah') 180 cgi.MiniFieldStorage('username', 'blah')
183 ] 181 ]
184 self.assertRaises( 182 results = self.server.post_collection('user', form)
185 Unauthorised, 183 self.assertEqual(self.dummy_client.response_code, 403)
186 self.server.post_collection, 'user', form 184 self.assertEqual(results['error']['status'], 403)
187 )
188 185
189 def testAuthAllowedPut(self): 186 def testAuthAllowedPut(self):
190 """ 187 """
191 Test authorized PUT request 188 Test authorized PUT request
192 """ 189 """
194 form = cgi.FieldStorage() 191 form = cgi.FieldStorage()
195 form.list = [ 192 form.list = [
196 cgi.MiniFieldStorage('realname', 'someone') 193 cgi.MiniFieldStorage('realname', 'someone')
197 ] 194 ]
198 try: 195 try:
199 try: 196 self.server.put_element('user', '2', form)
200 self.server.put_element('user', '2', form) 197 except Unauthorised, err:
201 except Unauthorised, err: 198 self.fail('raised %s' % err)
202 self.fail('raised %s' % err)
203 finally: 199 finally:
204 self.db.setCurrentUser('joe') 200 self.db.setCurrentUser('joe')
205 201
206 def testAuthAllowedPost(self): 202 def testAuthAllowedPost(self):
207 """ 203 """
211 form = cgi.FieldStorage() 207 form = cgi.FieldStorage()
212 form.list = [ 208 form.list = [
213 cgi.MiniFieldStorage('username', 'blah') 209 cgi.MiniFieldStorage('username', 'blah')
214 ] 210 ]
215 try: 211 try:
216 try: 212 self.server.post_collection('user', form)
217 self.server.post_collection('user', form) 213 except Unauthorised, err:
218 except Unauthorised, err: 214 self.fail('raised %s' % err)
219 self.fail('raised %s' % err)
220 finally: 215 finally:
221 self.db.setCurrentUser('joe') 216 self.db.setCurrentUser('joe')
222 217
223 def testDeleteAttributeUri(self): 218 def testDeleteAttributeUri(self):
224 """ 219 """
226 """ 221 """
227 # create a new issue with userid 1 in the nosy list 222 # create a new issue with userid 1 in the nosy list
228 issue_id = self.db.issue.create(title='foo', nosy=['1']) 223 issue_id = self.db.issue.create(title='foo', nosy=['1'])
229 224
230 # remove the title and nosy 225 # remove the title and nosy
231 code, results = self.server.delete_attribute( 226 results = self.server.delete_attribute(
232 'issue', issue_id, 'title', {} 227 'issue', issue_id, 'title', {}
233 ) 228 )
234 self.assertEqual(code, 200) 229 self.assertEqual(self.dummy_client.response_code, 200)
235 230
236 code, results = self.server.delete_attribute( 231 results = self.server.delete_attribute(
237 'issue', issue_id, 'nosy', {} 232 'issue', issue_id, 'nosy', {}
238 ) 233 )
239 self.assertEqual(code, 200) 234 self.assertEqual(self.dummy_client.response_code, 200)
240 235
241 # verify the result 236 # verify the result
242 code, results = self.server.get_element('issue', issue_id, {}) 237 results = self.server.get_element('issue', issue_id, {})['data']
243 self.assertEqual(code, 200) 238 self.assertEqual(self.dummy_client.response_code, 200)
244 self.assertEqual(len(results['attributes']['nosy']), 0) 239 self.assertEqual(len(results['attributes']['nosy']), 0)
245 self.assertListEqual(results['attributes']['nosy'], []) 240 self.assertListEqual(results['attributes']['nosy'], [])
246 self.assertEqual(results['attributes']['title'], None) 241 self.assertEqual(results['attributes']['title'], None)
247 242
248 def testPatchAdd(self): 243 def testPatchAdd(self):
256 form = cgi.FieldStorage() 251 form = cgi.FieldStorage()
257 form.list = [ 252 form.list = [
258 cgi.MiniFieldStorage('op', 'add'), 253 cgi.MiniFieldStorage('op', 'add'),
259 cgi.MiniFieldStorage('nosy', '2') 254 cgi.MiniFieldStorage('nosy', '2')
260 ] 255 ]
261 code, results = self.server.patch_element('issue', issue_id, form) 256 results = self.server.patch_element('issue', issue_id, form)
262 self.assertEqual(code, 200) 257 self.assertEqual(self.dummy_client.response_code, 200)
263 258
264 # verify the result 259 # verify the result
265 code, results = self.server.get_element('issue', issue_id, {}) 260 results = self.server.get_element('issue', issue_id, {})['data']
266 self.assertEqual(code, 200) 261 self.assertEqual(self.dummy_client.response_code, 200)
267 self.assertEqual(len(results['attributes']['nosy']), 2) 262 self.assertEqual(len(results['attributes']['nosy']), 2)
268 self.assertListEqual(results['attributes']['nosy'], ['1', '2']) 263 self.assertListEqual(results['attributes']['nosy'], ['1', '2'])
269 264
270 def testPatchReplace(self): 265 def testPatchReplace(self):
271 """ 266 """
279 form.list = [ 274 form.list = [
280 cgi.MiniFieldStorage('op', 'replace'), 275 cgi.MiniFieldStorage('op', 'replace'),
281 cgi.MiniFieldStorage('nosy', '2'), 276 cgi.MiniFieldStorage('nosy', '2'),
282 cgi.MiniFieldStorage('status', '3') 277 cgi.MiniFieldStorage('status', '3')
283 ] 278 ]
284 code, results = self.server.patch_element('issue', issue_id, form) 279 results = self.server.patch_element('issue', issue_id, form)
285 self.assertEqual(code, 200) 280 self.assertEqual(self.dummy_client.response_code, 200)
286 281
287 # verify the result 282 # verify the result
288 code, results = self.server.get_element('issue', issue_id, {}) 283 results = self.server.get_element('issue', issue_id, {})['data']
289 self.assertEqual(code, 200) 284 self.assertEqual(self.dummy_client.response_code, 200)
290 self.assertEqual(results['attributes']['status'], '3') 285 self.assertEqual(results['attributes']['status'], '3')
291 self.assertEqual(len(results['attributes']['nosy']), 1) 286 self.assertEqual(len(results['attributes']['nosy']), 1)
292 self.assertListEqual(results['attributes']['nosy'], ['2']) 287 self.assertListEqual(results['attributes']['nosy'], ['2'])
293 288
294 def testPatchRemoveAll(self): 289 def testPatchRemoveAll(self):
303 form.list = [ 298 form.list = [
304 cgi.MiniFieldStorage('op', 'remove'), 299 cgi.MiniFieldStorage('op', 'remove'),
305 cgi.MiniFieldStorage('nosy', ''), 300 cgi.MiniFieldStorage('nosy', ''),
306 cgi.MiniFieldStorage('title', '') 301 cgi.MiniFieldStorage('title', '')
307 ] 302 ]
308 code, results = self.server.patch_element('issue', issue_id, form) 303 results = self.server.patch_element('issue', issue_id, form)
309 self.assertEqual(code, 200) 304 self.assertEqual(self.dummy_client.response_code, 200)
310 305
311 # verify the result 306 # verify the result
312 code, results = self.server.get_element('issue', issue_id, {}) 307 results = self.server.get_element('issue', issue_id, {})['data']
313 self.assertEqual(code, 200) 308 self.assertEqual(self.dummy_client.response_code, 200)
314 self.assertEqual(results['attributes']['title'], None) 309 self.assertEqual(results['attributes']['title'], None)
315 self.assertEqual(len(results['attributes']['nosy']), 0) 310 self.assertEqual(len(results['attributes']['nosy']), 0)
316 self.assertEqual(results['attributes']['nosy'], []) 311 self.assertEqual(results['attributes']['nosy'], [])
317 312
318 313

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