Revision d6a92fa0 snf-pithos-app/pithos/api/test/accounts.py
b/snf-pithos-app/pithos/api/test/accounts.py | ||
---|---|---|
37 | 37 |
from pithos.api.test import PithosAPITest, AssertMappingInvariant,\ |
38 | 38 |
DATE_FORMATS |
39 | 39 |
|
40 |
from synnefo.lib import join_urls |
|
41 |
|
|
40 | 42 |
import time as _time |
41 | 43 |
import datetime |
42 | 44 |
|
... | ... | |
181 | 183 |
t1_formats = map(t1.strftime, DATE_FORMATS) |
182 | 184 |
|
183 | 185 |
# Check not modified |
186 |
url = join_urls(self.pithos_path, self.user) |
|
184 | 187 |
for t in t1_formats: |
185 |
r = self.get('/v1/%s' % self.user, HTTP_IF_MODIFIED_SINCE=t)
|
|
188 |
r = self.get(url, HTTP_IF_MODIFIED_SINCE=t)
|
|
186 | 189 |
self.assertEqual(r.status_code, 304) |
187 | 190 |
|
188 | 191 |
# modify account: add container |
... | ... | |
191 | 194 |
|
192 | 195 |
# Check modified |
193 | 196 |
for t in t1_formats: |
194 |
r = self.get('/v1/%s' % self.user, HTTP_IF_MODIFIED_SINCE=t)
|
|
197 |
r = self.get('%s' % url, HTTP_IF_MODIFIED_SINCE=t)
|
|
195 | 198 |
self.assertEqual(r.status_code, 200) |
196 | 199 |
self.assertEqual( |
197 | 200 |
r.content.split('\n')[:-1], |
... | ... | |
208 | 211 |
|
209 | 212 |
# Check modified |
210 | 213 |
for t in t2_formats: |
211 |
r = self.get('/v1/%s' % self.user, HTTP_IF_MODIFIED_SINCE=t)
|
|
214 |
r = self.get('%s' % url, HTTP_IF_MODIFIED_SINCE=t)
|
|
212 | 215 |
self.assertEqual(r.status_code, 200) |
213 | 216 |
self.assertEqual( |
214 | 217 |
r.content.split('\n')[:-1], |
215 | 218 |
['apples', 'bananas', 'c1', 'kiwis', 'oranges', 'pears']) |
216 | 219 |
|
217 | 220 |
def test_if_modified_since_invalid_date(self): |
218 |
r = self.get('/v1/%s' % self.user, HTTP_IF_MODIFIED_SINCE='Monday') |
|
221 |
url = join_urls(self.pithos_path, self.user) |
|
222 |
r = self.get('%s' % url, HTTP_IF_MODIFIED_SINCE='Monday') |
|
219 | 223 |
self.assertEqual(r.status_code, 200) |
220 | 224 |
self.assertEqual( |
221 | 225 |
r.content.split('\n')[:-1], |
222 | 226 |
['apples', 'bananas', 'kiwis', 'oranges', 'pears']) |
223 | 227 |
|
224 | 228 |
def test_if_not_modified_since(self): |
229 |
url = join_urls(self.pithos_path, self.user) |
|
225 | 230 |
account_info = self.get_account_info() |
226 | 231 |
last_modified = account_info['Last-Modified'] |
227 | 232 |
t = datetime.datetime.strptime(last_modified, DATE_FORMATS[-1]) |
... | ... | |
230 | 235 |
t1 = t + datetime.timedelta(seconds=1) |
231 | 236 |
t1_formats = map(t1.strftime, DATE_FORMATS) |
232 | 237 |
for t in t1_formats: |
233 |
r = self.get('/v1/%s' % self.user, HTTP_IF_UNMODIFIED_SINCE=t)
|
|
238 |
r = self.get(url, HTTP_IF_UNMODIFIED_SINCE=t)
|
|
234 | 239 |
self.assertEqual(r.status_code, 200) |
235 | 240 |
self.assertEqual( |
236 | 241 |
r.content.split('\n')[:-1], |
... | ... | |
248 | 253 |
|
249 | 254 |
# Check modified |
250 | 255 |
for t in t2_formats: |
251 |
r = self.get('/v1/%s' % self.user, HTTP_IF_UNMODIFIED_SINCE=t)
|
|
256 |
r = self.get(url, HTTP_IF_UNMODIFIED_SINCE=t)
|
|
252 | 257 |
self.assertEqual(r.status_code, 412) |
253 | 258 |
|
254 | 259 |
# modify account: update account meta |
... | ... | |
263 | 268 |
|
264 | 269 |
# Check modified |
265 | 270 |
for t in t3_formats: |
266 |
r = self.get('/v1/%s' % self.user, HTTP_IF_UNMODIFIED_SINCE=t)
|
|
271 |
r = self.get(url, HTTP_IF_UNMODIFIED_SINCE=t)
|
|
267 | 272 |
self.assertEqual(r.status_code, 412) |
268 | 273 |
|
269 | 274 |
def test_if_unmodified_since_invalid_date(self): |
270 |
r = self.get('/v1/%s' % self.user, HTTP_IF_UNMODIFIED_SINCE='Monday') |
|
275 |
url = join_urls(self.pithos_path, self.user) |
|
276 |
r = self.get(url, HTTP_IF_UNMODIFIED_SINCE='Monday') |
|
271 | 277 |
self.assertEqual(r.status_code, 200) |
272 | 278 |
self.assertEqual( |
273 | 279 |
r.content.split('\n')[:-1], |
... | ... | |
292 | 298 |
self.update_account_meta({'foo': 'bar'}) |
293 | 299 |
|
294 | 300 |
def test_update_meta(self): |
301 |
url = join_urls(self.pithos_path, self.user) |
|
295 | 302 |
with AssertMappingInvariant(self.get_account_groups): |
296 | 303 |
initial = self.get_account_meta() |
297 | 304 |
|
298 | 305 |
meta = {'test': 'tost', 'ping': 'pong'} |
299 | 306 |
kwargs = dict(('HTTP_X_ACCOUNT_META_%s' % k, str(v)) |
300 | 307 |
for k, v in meta.items()) |
301 |
r = self.post('/v1/%s?update=' % self.user, **kwargs)
|
|
308 |
r = self.post('%s?update=' % url, **kwargs)
|
|
302 | 309 |
self.assertEqual(r.status_code, 202) |
303 | 310 |
|
304 | 311 |
meta.update(initial) |
... | ... | |
309 | 316 |
k, v in meta.items()) |
310 | 317 |
|
311 | 318 |
def test_reset_meta(self): |
319 |
url = join_urls(self.pithos_path, self.user) |
|
312 | 320 |
with AssertMappingInvariant(self.get_account_groups): |
313 | 321 |
meta = {'test': 'tost', 'ping': 'pong'} |
314 | 322 |
self.update_account_meta(meta) |
... | ... | |
317 | 325 |
kwargs = dict(( |
318 | 326 |
'HTTP_X_ACCOUNT_META_%s' % k, str(v) |
319 | 327 |
) for k, v in new_meta.items()) |
320 |
r = self.post('/v1/%s' % self.user, **kwargs)
|
|
328 |
r = self.post(url, **kwargs)
|
|
321 | 329 |
self.assertEqual(r.status_code, 202) |
322 | 330 |
|
323 | 331 |
account_meta = self.get_account_meta() |
... | ... | |
330 | 338 |
k in meta.keys()) |
331 | 339 |
|
332 | 340 |
def test_delete_meta(self): |
341 |
url = join_urls(self.pithos_path, self.user) |
|
333 | 342 |
with AssertMappingInvariant(self.get_account_groups): |
334 | 343 |
meta = {'test': 'tost', 'ping': 'pong'} |
335 | 344 |
self.update_account_meta(meta) |
336 | 345 |
|
337 | 346 |
kwargs = dict( |
338 | 347 |
('HTTP_X_ACCOUNT_META_%s' % k, '') for k, v in meta.items()) |
339 |
r = self.post('/v1/%s?update=' % self.user, **kwargs)
|
|
348 |
r = self.post('%s?update=' % url, **kwargs)
|
|
340 | 349 |
self.assertEqual(r.status_code, 202) |
341 | 350 |
|
342 | 351 |
account_meta = self.get_account_meta() |
... | ... | |
345 | 354 |
k in meta.keys()) |
346 | 355 |
|
347 | 356 |
def test_set_account_groups(self): |
357 |
url = join_urls(self.pithos_path, self.user) |
|
348 | 358 |
with AssertMappingInvariant(self.get_account_meta): |
349 | 359 |
pithosdevs = ['verigak', 'gtsouk', 'chazapis'] |
350 |
r = self.post( |
|
351 |
'/v1/%s?update=' % self.user, |
|
352 |
HTTP_X_ACCOUNT_GROUP_PITHOSDEV=','.join(pithosdevs)) |
|
360 |
r = self.post('%s?update=' % url, |
|
361 |
HTTP_X_ACCOUNT_GROUP_PITHOSDEV=','.join(pithosdevs)) |
|
353 | 362 |
self.assertEqual(r.status_code, 202) |
354 | 363 |
|
355 | 364 |
account_groups = self.get_account_groups() |
... | ... | |
360 | 369 |
','.join(sorted(pithosdevs))) |
361 | 370 |
|
362 | 371 |
clientdevs = ['pkanavos', 'mvasilak'] |
363 |
r = self.post( |
|
364 |
'/v1/%s?update=' % self.user, |
|
365 |
HTTP_X_ACCOUNT_GROUP_CLIENTSDEV=','.join(clientdevs)) |
|
372 |
r = self.post('%s?update=' % url, |
|
373 |
HTTP_X_ACCOUNT_GROUP_CLIENTSDEV=','.join(clientdevs)) |
|
366 | 374 |
self.assertEqual(r.status_code, 202) |
367 | 375 |
|
368 | 376 |
account_groups = self.get_account_groups() |
... | ... | |
378 | 386 |
','.join(sorted(clientdevs))) |
379 | 387 |
|
380 | 388 |
clientdevs = ['mvasilak'] |
381 |
r = self.post( |
|
382 |
'/v1/%s?update=' % self.user, |
|
383 |
HTTP_X_ACCOUNT_GROUP_CLIENTSDEV=''.join(clientdevs)) |
|
389 |
r = self.post('%s?update=' % url, |
|
390 |
HTTP_X_ACCOUNT_GROUP_CLIENTSDEV=''.join(clientdevs)) |
|
384 | 391 |
self.assertEqual(r.status_code, 202) |
385 | 392 |
|
386 | 393 |
account_groups = self.get_account_groups() |
... | ... | |
396 | 403 |
','.join(sorted(clientdevs))) |
397 | 404 |
|
398 | 405 |
def test_reset_account_groups(self): |
406 |
url = join_urls(self.pithos_path, self.user) |
|
399 | 407 |
with AssertMappingInvariant(self.get_account_meta): |
400 | 408 |
groups = {'pithosdev': ['verigak', 'gtsouk', 'chazapis'], |
401 | 409 |
'clientsdev': ['pkanavos', 'mvasilak']} |
402 | 410 |
headers = dict(('HTTP_X_ACCOUNT_GROUP_%s' % k, ','.join(v)) |
403 | 411 |
for k, v in groups.iteritems()) |
404 |
r = self.post('/v1/%s?update=' % self.user, **headers)
|
|
412 |
r = self.post('%s?update=' % url, **headers)
|
|
405 | 413 |
self.assertEqual(r.status_code, 202) |
406 | 414 |
|
407 | 415 |
groups = {'pithosdev': ['verigak', |
... | ... | |
413 | 421 |
account_meta = self.get_account_meta() |
414 | 422 |
headers.update(dict(('HTTP_%s' % k.upper().replace('-', '_'), v) |
415 | 423 |
for k, v in account_meta.iteritems())) |
416 |
r = self.post('/v1/%s' % self.user, **headers)
|
|
424 |
r = self.post(url, **headers)
|
|
417 | 425 |
self.assertEqual(r.status_code, 202) |
418 | 426 |
|
419 | 427 |
account_groups = self.get_account_groups() |
... | ... | |
426 | 434 |
','.join(sorted(groups['pithosdev']))) |
427 | 435 |
|
428 | 436 |
def test_delete_account_groups(self): |
437 |
url = join_urls(self.pithos_path, self.user) |
|
429 | 438 |
with AssertMappingInvariant(self.get_account_meta): |
430 | 439 |
groups = {'pithosdev': ['verigak', 'gtsouk', 'chazapis'], |
431 | 440 |
'clientsdev': ['pkanavos', 'mvasilak']} |
432 | 441 |
headers = dict(('HTTP_X_ACCOUNT_GROUP_%s' % k, ','.join(v)) |
433 | 442 |
for k, v in groups.iteritems()) |
434 |
self.post('/v1/%s?update=' % self.user, **headers)
|
|
443 |
self.post('%s?update=' % url, **headers)
|
|
435 | 444 |
|
436 | 445 |
kwargs = dict(('HTTP_X_ACCOUNT_GROUP_%s' % k, '') |
437 | 446 |
for k, v in groups.items()) |
438 |
r = self.post('/v1/%s?update=' % self.user, **kwargs)
|
|
447 |
r = self.post('%s?update=' % url, **kwargs)
|
|
439 | 448 |
self.assertEqual(r.status_code, 202) |
440 | 449 |
|
441 | 450 |
account_groups = self.get_account_groups() |
Also available in: Unified diff