Revision c977b0b6 snf-pithos-app/pithos/api/test/__init__.py

b/snf-pithos-app/pithos/api/test/__init__.py
156 156
    def _get_path(self, parsed):
157 157
        # If there are parameters, add them
158 158
        if parsed[3]:
159
             return unquote(parsed[2] + ";" + parsed[3])
159
            return unquote(parsed[2] + ";" + parsed[3])
160 160
        else:
161
             return unquote(parsed[2])
161
            return unquote(parsed[2])
162 162

  
163 163
    def copy(self, path, data={}, content_type=MULTIPART_CONTENT,
164 164
             follow=False, **extra):
......
296 296
                                        **extra)
297 297
        return response
298 298

  
299
    def update_account_meta(self, meta, user=None):
299
    def update_account_meta(self, meta, user=None, verify_status=True):
300 300
        user = user or self.user
301 301
        kwargs = dict(
302 302
            ('HTTP_X_ACCOUNT_META_%s' % k, str(v)) for k, v in meta.items())
303 303
        url = join_urls(self.pithos_path, user)
304 304
        r = self.post('%s?update=' % url, user=user, **kwargs)
305
        self.assertEqual(r.status_code, 202)
305
        if verify_status:
306
            self.assertEqual(r.status_code, 202)
306 307
        account_meta = self.get_account_meta(user=user)
307 308
        (self.assertTrue('X-Account-Meta-%s' % k in account_meta) for
308 309
            k in meta.keys())
309 310
        (self.assertEqual(account_meta['X-Account-Meta-%s' % k], v) for
310 311
            k, v in meta.items())
311 312

  
312
    def reset_account_meta(self, meta, user=None):
313
    def reset_account_meta(self, meta, user=None, verify_status=True):
313 314
        user = user or self.user
314 315
        kwargs = dict(
315 316
            ('HTTP_X_ACCOUNT_META_%s' % k, str(v)) for k, v in meta.items())
316 317
        url = join_urls(self.pithos_path, user)
317 318
        r = self.post(url, user=user, **kwargs)
318
        self.assertEqual(r.status_code, 202)
319
        if verify_status:
320
            self.assertEqual(r.status_code, 202)
319 321
        account_meta = self.get_account_meta(user=user)
320 322
        (self.assertTrue('X-Account-Meta-%s' % k in account_meta) for
321 323
            k in meta.keys())
322 324
        (self.assertEqual(account_meta['X-Account-Meta-%s' % k], v) for
323 325
            k, v in meta.items())
324 326

  
325
    def delete_account_meta(self, meta, user=None):
327
    def delete_account_meta(self, meta, user=None, verify_status=True):
326 328
        user = user or self.user
327 329
        transform = lambda k: 'HTTP_%s' % k.replace('-', '_').upper()
328 330
        kwargs = dict((transform(k), '') for k, v in meta.items())
329 331
        url = join_urls(self.pithos_path, user)
330 332
        r = self.post('%s?update=' % url, user=user, **kwargs)
331
        self.assertEqual(r.status_code, 202)
333
        if verify_status:
334
            self.assertEqual(r.status_code, 202)
332 335
        account_meta = self.get_account_meta(user=user)
333 336
        (self.assertTrue('X-Account-Meta-%s' % k not in account_meta) for
334 337
            k in meta.keys())
335 338
        return r
336 339

  
337
    def delete_account_groups(self, groups, user=None):
340
    def delete_account_groups(self, groups, user=None, verify_status=True):
338 341
        user = user or self.user
339 342
        url = join_urls(self.pithos_path, user)
340 343
        r = self.post('%s?update=' % url, user=user, **groups)
341
        self.assertEqual(r.status_code, 202)
344
        if verify_status:
345
            self.assertEqual(r.status_code, 202)
342 346
        account_groups = self.get_account_groups()
343 347
        (self.assertTrue(k not in account_groups) for k in groups.keys())
344 348
        return r
345 349

  
346
    def get_account_info(self, until=None, user=None):
350
    def get_account_info(self, until=None, user=None, verify_status=True):
347 351
        user = user or self.user
348 352
        url = join_urls(self.pithos_path, user)
349 353
        if until is not None:
......
353 357
            })
354 358
            url = urlunsplit(parts)
355 359
        r = self.head(url, user=user)
356
        self.assertEqual(r.status_code, 204)
360
        if verify_status:
361
            self.assertEqual(r.status_code, 204)
357 362
        return r
358 363

  
359 364
    def get_account_meta(self, until=None, user=None):
......
368 373
        headers = dict(r._headers.values())
369 374
        return filter_headers(headers, prefix)
370 375

  
371
    def get_container_info(self, container, until=None, user=None):
376
    def get_container_info(self, container, until=None, user=None,
377
                           verify_status=True):
372 378
        user = user or self.user
373 379
        url = join_urls(self.pithos_path, user, container)
374 380
        if until is not None:
......
378 384
            })
379 385
            url = urlunsplit(parts)
380 386
        r = self.head(url, user=user)
381
        self.assertEqual(r.status_code, 204)
387
        if verify_status:
388
            self.assertEqual(r.status_code, 204)
382 389
        return r
383 390

  
384 391
    def get_container_meta(self, container, until=None, user=None):
......
387 394
        headers = dict(r._headers.values())
388 395
        return filter_headers(headers, prefix)
389 396

  
390
    def update_container_meta(self, container, meta, user=None):
397
    def update_container_meta(self, container, meta=None, user=None,
398
                              verify_status=True):
391 399
        user = user or self.user
400
        meta = meta or {get_random_name(): get_random_name()}
392 401
        kwargs = dict(
393 402
            ('HTTP_X_CONTAINER_META_%s' % k, str(v)) for k, v in meta.items())
394 403
        url = join_urls(self.pithos_path, user, container)
395 404
        r = self.post('%s?update=' % url, user=user, **kwargs)
396
        self.assertEqual(r.status_code, 202)
405
        if verify_status:
406
            self.assertEqual(r.status_code, 202)
397 407
        container_meta = self.get_container_meta(container, user=user)
398 408
        (self.assertTrue('X-Container-Meta-%s' % k in container_meta) for
399 409
            k in meta.keys())
400 410
        (self.assertEqual(container_meta['X-Container-Meta-%s' % k], v) for
401 411
            k, v in meta.items())
412
        return r
402 413

  
403 414
    def list_containers(self, format='json', headers={}, user=None, **params):
404 415
        user = user or self.user
......
425 436
        elif format == 'xml':
426 437
            return minidom.parseString(r.content)
427 438

  
428
    def delete_container_content(self, cname, user=None):
439
    def delete_container_content(self, cname, user=None, verify_status=True):
429 440
        user = user or self.user
430 441
        url = join_urls(self.pithos_path, user, cname)
431 442
        r = self.delete('%s?delimiter=/' % url, user=user)
432
        self.assertEqual(r.status_code, 204)
443
        if verify_status:
444
            self.assertEqual(r.status_code, 204)
433 445
        return r
434 446

  
435
    def delete_container(self, cname, user=None):
447
    def delete_container(self, cname, user=None, verify_status=True):
436 448
        user = user or self.user
437 449
        url = join_urls(self.pithos_path, user, cname)
438 450
        r = self.delete(url, user=user)
439
        self.assertEqual(r.status_code, 204)
451
        if verify_status:
452
            self.assertEqual(r.status_code, 204)
453
        return r
454

  
455
    def delete_object(self, cname, oname, user=None, verify_status=True):
456
        user = user or self.user
457
        url = join_urls(self.pithos_path, user, cname, oname)
458
        r = self.delete(url, user=user)
459
        if verify_status:
460
            self.assertEqual(r.status_code, 204)
440 461
        return r
441 462

  
442
    def create_container(self, cname=None, user=None):
463
    def create_container(self, cname=None, user=None, verify_status=True):
443 464
        cname = cname or get_random_name()
444 465
        user = user or self.user
445 466
        url = join_urls(self.pithos_path, user, cname)
446 467
        r = self.put(url, user=user, data='')
447
        self.assertTrue(r.status_code in (202, 201))
468
        if verify_status:
469
            self.assertTrue(r.status_code in (202, 201))
448 470
        return cname, r
449 471

  
450
    def upload_object(self, cname, oname=None, length=None, verify=True,
472
    def upload_object(self, cname, oname=None, length=None, verify_status=True,
451 473
                      user=None, **meta):
452 474
        oname = oname or get_random_name()
453 475
        length = length or random.randint(TEST_BLOCK_SIZE, 2 * TEST_BLOCK_SIZE)
......
457 479
                       for k, v in meta.iteritems())
458 480
        url = join_urls(self.pithos_path, user, cname, oname)
459 481
        r = self.put(url, user=user, data=data, **headers)
460
        if verify:
482
        if verify_status:
461 483
            self.assertEqual(r.status_code, 201)
462 484
        return oname, data, r
463 485

  
464 486
    def update_object_data(self, cname, oname=None, length=None,
465 487
                           content_type=None, content_range=None,
466
                           verify=True, user=None, **meta):
488
                           verify_status=True, user=None, **meta):
467 489
        oname = oname or get_random_name()
468 490
        length = length or random.randint(TEST_BLOCK_SIZE, 2 * TEST_BLOCK_SIZE)
469 491
        content_type = content_type or 'application/octet-stream'
......
476 498
        url = join_urls(self.pithos_path, user, cname, oname)
477 499
        r = self.post(url, user=user, data=data, content_type=content_type,
478 500
                      **headers)
479
        if verify:
501
        if verify_status:
480 502
            self.assertEqual(r.status_code, 204)
481 503
        return oname, data, r
482 504

  
......
488 510
                                       content_range='bytes */*',
489 511
                                       user=user)
490 512

  
491
    def create_folder(self, cname, oname=None, user=None, **headers):
513
    def create_folder(self, cname, oname=None, user=None, verify_status=True,
514
                      **headers):
492 515
        user = user or self.user
493 516
        oname = oname or get_random_name()
494 517
        url = join_urls(self.pithos_path, user, cname, oname)
495 518
        r = self.put(url, user=user, data='',
496 519
                     content_type='application/directory', **headers)
497
        self.assertEqual(r.status_code, 201)
520
        if verify_status:
521
            self.assertEqual(r.status_code, 201)
498 522
        return oname, r
499 523

  
500
    def list_objects(self, cname, prefix=None, user=None):
524
    def list_objects(self, cname, prefix=None, user=None, verify_status=True):
501 525
        user = user or self.user
502 526
        url = join_urls(self.pithos_path, user, cname)
503 527
        path = '%s?format=json' % url
504 528
        if prefix is not None:
505 529
            path = '%s&prefix=%s' % (path, prefix)
506 530
        r = self.get(path, user=user)
507
        self.assertTrue(r.status_code in (200, 204))
531
        if verify_status:
532
            self.assertTrue(r.status_code in (200, 204))
508 533
        try:
509 534
            objects = json.loads(r.content)
510 535
        except:
......
512 537
        return objects
513 538

  
514 539
    def get_object_info(self, container, object, version=None, until=None,
515
                        user=None):
540
                        user=None, verify_status=True):
516 541
        user = user or self.user
517 542
        url = join_urls(self.pithos_path, user, container, object)
518 543
        if until is not None:
......
524 549
        if version:
525 550
            url = '%s?version=%s' % (url, version)
526 551
        r = self.head(url, user=user)
527
        self.assertEqual(r.status_code, 200)
552
        if verify_status:
553
            self.assertEqual(r.status_code, 200)
528 554
        return r
529 555

  
530 556
    def get_object_meta(self, container, object, version=None, until=None,
......
536 562
        headers = dict(r._headers.values())
537 563
        return filter_headers(headers, prefix)
538 564

  
539
    def update_object_meta(self, container, object, meta, user=None):
565
    def update_object_meta(self, container, object, meta=None, user=None,
566
                           verify_status=True):
540 567
        user = user or self.user
568
        meta = meta or {get_random_name(): get_random_name()}
541 569
        kwargs = dict(
542 570
            ('HTTP_X_OBJECT_META_%s' % k, str(v)) for k, v in meta.items())
543 571
        url = join_urls(self.pithos_path, user, container, object)
544 572
        r = self.post('%s?update=' % url, user=user, content_type='', **kwargs)
545
        self.assertEqual(r.status_code, 202)
573
        if verify_status:
574
            self.assertEqual(r.status_code, 202)
546 575
        object_meta = self.get_object_meta(container, object, user=user)
547 576
        (self.assertTrue('X-Objecr-Meta-%s' % k in object_meta) for
548 577
            k in meta.keys())
549 578
        (self.assertEqual(object_meta['X-Object-Meta-%s' % k], v) for
550 579
            k, v in meta.items())
580
        return r
551 581

  
552 582
    def assert_extended(self, data, format, type, size=10000):
553 583
        if format == 'xml':

Also available in: Unified diff