Revision bc4f25c0 snf-pithos-app/pithos/api/test/objects.py
b/snf-pithos-app/pithos/api/test/objects.py | ||
---|---|---|
42 | 42 |
AssertMappingInvariant, AssertUUidInvariant, |
43 | 43 |
TEST_BLOCK_SIZE, TEST_HASH_ALGORITHM, |
44 | 44 |
DATE_FORMATS) |
45 |
from pithos.api.test.util import md5_hash, merkle, strnextling, get_random_data |
|
45 |
from pithos.api.test.util import (md5_hash, merkle, strnextling, |
|
46 |
get_random_data, get_random_name) |
|
46 | 47 |
|
47 | 48 |
from synnefo.lib import join_urls |
48 | 49 |
|
... | ... | |
128 | 129 |
self.assertEqual(r.status_code, 404) |
129 | 130 |
|
130 | 131 |
# upload object with trailing space |
131 |
oname = self.upload_object('c1', quote('%s ' % get_random_data(8)))[0]
|
|
132 |
oname = self.upload_object('c1', quote('%s ' % get_random_name()))[0]
|
|
132 | 133 |
|
133 | 134 |
url = join_urls(self.pithos_path, self.user, 'c1', oname) |
134 | 135 |
r = self.get(url) |
... | ... | |
314 | 315 |
|
315 | 316 |
# perform get with If-Match |
316 | 317 |
url = join_urls(self.pithos_path, self.user, cname, oname) |
317 |
r = self.get(url, HTTP_IF_MATCH=get_random_data(8))
|
|
318 |
r = self.get(url, HTTP_IF_MATCH=get_random_name())
|
|
318 | 319 |
self.assertEqual(r.status_code, 412) |
319 | 320 |
|
320 | 321 |
def test_if_none_match(self): |
... | ... | |
494 | 495 |
class ObjectPut(PithosAPITest): |
495 | 496 |
def setUp(self): |
496 | 497 |
PithosAPITest.setUp(self) |
497 |
self.container = get_random_data(8)
|
|
498 |
self.container = get_random_name()
|
|
498 | 499 |
self.create_container(self.container) |
499 | 500 |
|
500 | 501 |
def test_upload(self): |
501 | 502 |
cname = self.container |
502 |
oname = get_random_data(8)
|
|
503 |
oname = get_random_name()
|
|
503 | 504 |
data = get_random_data() |
504 | 505 |
meta = {'test': 'test1'} |
505 | 506 |
headers = dict(('HTTP_X_OBJECT_META_%s' % k.upper(), v) |
... | ... | |
526 | 527 |
|
527 | 528 |
def test_maximum_upload_size_exceeds(self): |
528 | 529 |
cname = self.container |
529 |
oname = get_random_data(8)
|
|
530 |
oname = get_random_name()
|
|
530 | 531 |
|
531 | 532 |
# set container quota to 100 |
532 | 533 |
url = join_urls(self.pithos_path, self.user, cname) |
... | ... | |
543 | 544 |
|
544 | 545 |
def test_upload_with_name_containing_slash(self): |
545 | 546 |
cname = self.container |
546 |
oname = '/%s' % get_random_data(8)
|
|
547 |
oname = '/%s' % get_random_name()
|
|
547 | 548 |
data = get_random_data() |
548 | 549 |
url = join_urls(self.pithos_path, self.user, cname, oname) |
549 | 550 |
r = self.put(url, data=data) |
... | ... | |
557 | 558 |
|
558 | 559 |
def test_upload_unprocessable_entity(self): |
559 | 560 |
cname = self.container |
560 |
oname = get_random_data(8)
|
|
561 |
oname = get_random_name()
|
|
561 | 562 |
data = get_random_data() |
562 | 563 |
url = join_urls(self.pithos_path, self.user, cname, oname) |
563 | 564 |
r = self.put(url, data=data, HTTP_ETAG='123') |
... | ... | |
565 | 566 |
|
566 | 567 |
# def test_chunked_transfer(self): |
567 | 568 |
# cname = self.container |
568 |
# oname = '/%s' % get_random_data(8)
|
|
569 |
# oname = '/%s' % get_random_name()
|
|
569 | 570 |
# data = get_random_data() |
570 | 571 |
# url = join_urls(self.pithos_path, self.user, cname, oname) |
571 | 572 |
# r = self.put(url, data=data, HTTP_TRANSFER_ENCODING='chunked') |
... | ... | |
582 | 583 |
data += self.upload_object(cname, oname=part)[1] |
583 | 584 |
|
584 | 585 |
manifest = '%s/%s' % (cname, prefix) |
585 |
oname = get_random_data(8)
|
|
586 |
oname = get_random_name()
|
|
586 | 587 |
url = join_urls(self.pithos_path, self.user, cname, oname) |
587 | 588 |
r = self.put(url, data='', HTTP_X_OBJECT_MANIFEST=manifest) |
588 | 589 |
self.assertEqual(r.status_code, 201) |
... | ... | |
595 | 596 |
self.assertEqual(r.content, data) |
596 | 597 |
|
597 | 598 |
# invalid manifestation |
598 |
invalid_manifestation = '%s/%s' % (cname, get_random_data(8))
|
|
599 |
invalid_manifestation = '%s/%s' % (cname, get_random_name())
|
|
599 | 600 |
self.put(url, data='', HTTP_X_OBJECT_MANIFEST=invalid_manifestation) |
600 | 601 |
r = self.get(url) |
601 | 602 |
self.assertEqual(r.content, '') |
602 | 603 |
|
603 | 604 |
def test_create_zero_length_object(self): |
604 | 605 |
cname = self.container |
605 |
oname = get_random_data(8)
|
|
606 |
oname = get_random_name()
|
|
606 | 607 |
url = join_urls(self.pithos_path, self.user, cname, oname) |
607 | 608 |
r = self.put(url, data='') |
608 | 609 |
self.assertEqual(r.status_code, 201) |
... | ... | |
629 | 630 |
url = join_urls(self.pithos_path, self.user, cname, oname) |
630 | 631 |
r = self.get('%s?hashmap=&format=json' % url) |
631 | 632 |
|
632 |
oname = get_random_data(8)
|
|
633 |
oname = get_random_name()
|
|
633 | 634 |
url = join_urls(self.pithos_path, self.user, cname, oname) |
634 | 635 |
r = self.put('%s?hashmap=' % url, data=r.content) |
635 | 636 |
self.assertEqual(r.status_code, 201) |
... | ... | |
655 | 656 |
with AssertMappingInvariant(self.get_object_info, self.container, |
656 | 657 |
self.object): |
657 | 658 |
# copy object |
658 |
oname = get_random_data(8)
|
|
659 |
oname = get_random_name()
|
|
659 | 660 |
url = join_urls(self.pithos_path, self.user, self.container, oname) |
660 | 661 |
r = self.put(url, data='', HTTP_X_OBJECT_META_TEST='testcopy', |
661 | 662 |
HTTP_X_COPY_FROM='/%s/%s' % ( |
... | ... | |
679 | 680 |
self.create_container(cname) |
680 | 681 |
with AssertMappingInvariant(self.get_object_info, self.container, |
681 | 682 |
self.object): |
682 |
oname = get_random_data(8)
|
|
683 |
oname = get_random_name()
|
|
683 | 684 |
url = join_urls(self.pithos_path, self.user, cname, oname) |
684 | 685 |
r = self.put(url, data='', HTTP_X_OBJECT_META_TEST='testcopy', |
685 | 686 |
HTTP_X_COPY_FROM='/%s/%s' % ( |
... | ... | |
700 | 701 |
|
701 | 702 |
def test_copy_invalid(self): |
702 | 703 |
# copy from non-existent object |
703 |
oname = get_random_data(8)
|
|
704 |
oname = get_random_name()
|
|
704 | 705 |
url = join_urls(self.pithos_path, self.user, self.container, oname) |
705 | 706 |
r = self.put(url, data='', HTTP_X_OBJECT_META_TEST='testcopy', |
706 | 707 |
HTTP_X_COPY_FROM='/%s/%s' % ( |
707 |
self.container, get_random_data(8)))
|
|
708 |
self.container, get_random_name()))
|
|
708 | 709 |
self.assertEqual(r.status_code, 404) |
709 | 710 |
|
710 | 711 |
# copy from non-existent container |
711 |
oname = get_random_data(8)
|
|
712 |
oname = get_random_name()
|
|
712 | 713 |
url = join_urls(self.pithos_path, self.user, self.container, oname) |
713 | 714 |
r = self.put(url, data='', HTTP_X_OBJECT_META_TEST='testcopy', |
714 | 715 |
HTTP_X_COPY_FROM='/%s/%s' % ( |
715 |
get_random_data(8), self.object))
|
|
716 |
get_random_name(), self.object))
|
|
716 | 717 |
self.assertEqual(r.status_code, 404) |
717 | 718 |
|
718 | 719 |
def test_copy_dir(self): |
719 | 720 |
folder = self.create_folder(self.container)[0] |
720 | 721 |
subfolder = self.create_folder( |
721 |
self.container, oname='%s/%s' % (folder, get_random_data(8)))[0]
|
|
722 |
self.container, oname='%s/%s' % (folder, get_random_name()))[0]
|
|
722 | 723 |
objects = [subfolder] |
723 | 724 |
append = objects.append |
724 | 725 |
append(self.upload_object(self.container, |
725 |
'%s/%s' % (folder, get_random_data(8)),
|
|
726 |
'%s/%s' % (folder, get_random_name()),
|
|
726 | 727 |
HTTP_X_OBJECT_META_DEPTH='1')[0]) |
727 | 728 |
append(self.upload_object(self.container, |
728 |
'%s/%s' % (subfolder, get_random_data(8)),
|
|
729 |
'%s/%s' % (subfolder, get_random_name()),
|
|
729 | 730 |
HTTP_X_OBJECT_META_DEPTH='2')[0]) |
730 | 731 |
other = self.upload_object(self.container, strnextling(folder))[0] |
731 | 732 |
|
... | ... | |
772 | 773 |
|
773 | 774 |
def test_move(self): |
774 | 775 |
# move object |
775 |
oname = get_random_data(8)
|
|
776 |
oname = get_random_name()
|
|
776 | 777 |
url = join_urls(self.pithos_path, self.user, self.container, oname) |
777 | 778 |
r = self.put(url, data='', HTTP_X_OBJECT_META_TEST='testcopy', |
778 | 779 |
HTTP_X_MOVE_FROM='/%s/%s' % ( |
... | ... | |
799 | 800 |
def test_move_dir(self): |
800 | 801 |
folder = self.create_folder(self.container)[0] |
801 | 802 |
subfolder = self.create_folder( |
802 |
self.container, oname='%s/%s' % (folder, get_random_data(8)))[0]
|
|
803 |
self.container, oname='%s/%s' % (folder, get_random_name()))[0]
|
|
803 | 804 |
objects = [subfolder] |
804 | 805 |
append = objects.append |
805 | 806 |
meta = {} |
806 | 807 |
meta[objects[0]] = {} |
807 | 808 |
append(self.upload_object(self.container, |
808 |
'%s/%s' % (folder, get_random_data(8)),
|
|
809 |
'%s/%s' % (folder, get_random_name()),
|
|
809 | 810 |
HTTP_X_OBJECT_META_DEPTH='1')[0]) |
810 | 811 |
meta[objects[1]] = {'X-Object-Meta-Depth': '1'} |
811 | 812 |
append(self.upload_object(self.container, |
812 |
'%s/%s' % (subfolder, get_random_data(8)),
|
|
813 |
'%s/%s' % (subfolder, get_random_name()),
|
|
813 | 814 |
HTTP_X_OBJECT_META_DEPTH='2')[0]) |
814 | 815 |
meta[objects[1]] = {'X-Object-Meta-Depth': '2'} |
815 | 816 |
other = self.upload_object(self.container, strnextling(folder))[0] |
... | ... | |
1081 | 1082 |
|
1082 | 1083 |
def test_update_from_other_object(self): |
1083 | 1084 |
src = self.object |
1084 |
dest = get_random_data(8)
|
|
1085 |
dest = get_random_name()
|
|
1085 | 1086 |
|
1086 | 1087 |
url = join_urls(self.pithos_path, self.user, self.container, src) |
1087 | 1088 |
r = self.get(url) |
... | ... | |
1111 | 1112 |
|
1112 | 1113 |
def test_update_range_from_other_object(self): |
1113 | 1114 |
src = self.object |
1114 |
dest = get_random_data(8)
|
|
1115 |
dest = get_random_name()
|
|
1115 | 1116 |
|
1116 | 1117 |
url = join_urls(self.pithos_path, self.user, self.container, src) |
1117 | 1118 |
r = self.get(url) |
... | ... | |
1156 | 1157 |
|
1157 | 1158 |
def test_delete_non_existent(self): |
1158 | 1159 |
url = join_urls(self.pithos_path, self.user, self.container, |
1159 |
get_random_data(8))
|
|
1160 |
get_random_name())
|
|
1160 | 1161 |
r = self.delete(url) |
1161 | 1162 |
self.assertEqual(r.status_code, 404) |
1162 | 1163 |
|
1163 | 1164 |
def test_delete_dir(self): |
1164 | 1165 |
folder = self.create_folder(self.container)[0] |
1165 | 1166 |
subfolder = self.create_folder( |
1166 |
self.container, oname='%s/%s' % (folder, get_random_data(8)))[0]
|
|
1167 |
self.container, oname='%s/%s' % (folder, get_random_name()))[0]
|
|
1167 | 1168 |
objects = [subfolder] |
1168 | 1169 |
append = objects.append |
1169 | 1170 |
meta = {} |
1170 | 1171 |
meta[objects[0]] = {} |
1171 | 1172 |
append(self.upload_object(self.container, |
1172 |
'%s/%s' % (folder, get_random_data(8)),
|
|
1173 |
'%s/%s' % (folder, get_random_name()),
|
|
1173 | 1174 |
HTTP_X_OBJECT_META_DEPTH='1')[0]) |
1174 | 1175 |
meta[objects[1]] = {'X-Object-Meta-Depth': '1'} |
1175 | 1176 |
append(self.upload_object(self.container, |
1176 |
'%s/%s' % (subfolder, get_random_data(8)),
|
|
1177 |
'%s/%s' % (subfolder, get_random_name()),
|
|
1177 | 1178 |
HTTP_X_OBJECT_META_DEPTH='2')[0]) |
1178 | 1179 |
meta[objects[1]] = {'X-Object-Meta-Depth': '2'} |
1179 | 1180 |
other = self.upload_object(self.container, strnextling(folder))[0] |
Also available in: Unified diff