Mercurial > p > roundup > code
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 |
