74 |
74 |
#TODO unauthorized request
|
75 |
75 |
def setUp(self):
|
76 |
76 |
self.client = Pithos_Client(get_url(), get_auth(), get_user())
|
|
77 |
|
|
78 |
#keep track of initial containers
|
|
79 |
self.initial_containers = self.client.list_containers()
|
|
80 |
|
77 |
81 |
self._clean_account()
|
78 |
82 |
self.invalid_client = Pithos_Client(get_url(), get_auth(), 'invalid')
|
79 |
83 |
|
... | ... | |
82 |
86 |
|
83 |
87 |
#keep track of initial account meta
|
84 |
88 |
self.initial_meta = self.client.retrieve_account_metadata(restricted=True)
|
85 |
|
|
|
89 |
|
86 |
90 |
self.extended = {
|
87 |
91 |
'container':(
|
88 |
92 |
'name',
|
... | ... | |
117 |
121 |
|
118 |
122 |
def _clean_account(self):
|
119 |
123 |
for c in self.client.list_containers():
|
120 |
|
self.client.delete_container(c, delimiter='/')
|
121 |
|
self.client.delete_container(c)
|
|
124 |
if c not in self.initial_containers:
|
|
125 |
self.client.delete_container(c, delimiter='/')
|
|
126 |
self.client.delete_container(c)
|
122 |
127 |
|
123 |
128 |
def assert_status(self, status, codes):
|
124 |
129 |
l = [elem for elem in self.return_codes]
|
... | ... | |
258 |
263 |
class AccountHead(BaseTestCase):
|
259 |
264 |
def setUp(self):
|
260 |
265 |
BaseTestCase.setUp(self)
|
261 |
|
self.containers = ['apples', 'bananas', 'kiwis', 'oranges', 'pears']
|
|
266 |
self.containers = list(set(self.initial_containers + ['apples', 'bananas', 'kiwis', 'oranges', 'pears']))
|
|
267 |
self.containers.sort()
|
|
268 |
|
262 |
269 |
for item in self.containers:
|
263 |
270 |
self.client.create_container(item)
|
264 |
271 |
|
... | ... | |
272 |
279 |
containers = self.client.list_containers()
|
273 |
280 |
l = str(len(containers))
|
274 |
281 |
self.assertEqual(meta['x-account-container-count'], l)
|
275 |
|
size = 0
|
|
282 |
size1 = 0
|
|
283 |
size2 = 0
|
276 |
284 |
for c in containers:
|
277 |
285 |
m = self.client.retrieve_container_metadata(c)
|
278 |
|
size = size + int(m['x-container-bytes-used'])
|
279 |
|
self.assertEqual(meta['x-account-bytes-used'], str(size))
|
|
286 |
csum = sum([o['bytes'] for o in self.client.list_objects(c, format='json')])
|
|
287 |
self.assertEqual(int(m['x-container-bytes-used']), csum)
|
|
288 |
size1 += int(m['x-container-bytes-used'])
|
|
289 |
size2 += csum
|
|
290 |
self.assertEqual(meta['x-account-bytes-used'], str(size1))
|
|
291 |
self.assertEqual(meta['x-account-bytes-used'], str(size2))
|
280 |
292 |
|
281 |
293 |
def test_get_account_403(self):
|
282 |
294 |
self.assert_raises_fault(403,
|
... | ... | |
307 |
319 |
def setUp(self):
|
308 |
320 |
BaseTestCase.setUp(self)
|
309 |
321 |
#create some containers
|
310 |
|
self.containers = ['apples', 'bananas', 'kiwis', 'oranges', 'pears']
|
|
322 |
self.containers = list(set(self.initial_containers + ['apples', 'bananas', 'kiwis', 'oranges', 'pears']))
|
|
323 |
self.containers.sort()
|
|
324 |
|
311 |
325 |
for item in self.containers:
|
312 |
326 |
self.client.create_container(item)
|
313 |
327 |
|
... | ... | |
351 |
365 |
xml = self.client.list_containers(limit=l, marker=m, format='xml')
|
352 |
366 |
self.assert_extended(xml, 'xml', 'container', l)
|
353 |
367 |
nodes = xml.getElementsByTagName('name')
|
354 |
|
self.assertEqual(len(nodes), 1)
|
355 |
|
self.assertEqual(nodes[0].childNodes[0].data, 'pears')
|
|
368 |
self.assertTrue(len(nodes) <= l)
|
|
369 |
names = [n.childNodes[0].data for n in nodes]
|
|
370 |
self.assertTrue('pears' in names or 'pears' > name for name in names)
|
356 |
371 |
|
357 |
372 |
def test_if_modified_since(self):
|
358 |
373 |
t = datetime.datetime.utcnow()
|
... | ... | |
368 |
383 |
self.assertEqual(len(c), len(self.containers) + 1)
|
369 |
384 |
except Fault, f:
|
370 |
385 |
self.failIf(f.status == 304) #fail if not modified
|
371 |
|
|
372 |
|
|
|
386 |
|
373 |
387 |
def test_if_modified_since_invalid_date(self):
|
374 |
388 |
c = self.client.list_containers(if_modified_since='')
|
375 |
389 |
self.assertEqual(len(c), len(self.containers))
|
... | ... | |
412 |
426 |
class AccountPost(BaseTestCase):
|
413 |
427 |
def setUp(self):
|
414 |
428 |
BaseTestCase.setUp(self)
|
415 |
|
self.containers = ['apples', 'bananas', 'kiwis', 'oranges', 'pears']
|
|
429 |
self.containers = list(set(self.initial_containers + ['apples', 'bananas', 'kiwis', 'oranges', 'pears']))
|
|
430 |
self.containers.sort()
|
|
431 |
|
416 |
432 |
for item in self.containers:
|
417 |
433 |
self.client.create_container(item)
|
418 |
434 |
|
... | ... | |
779 |
795 |
class ContainerPut(BaseTestCase):
|
780 |
796 |
def setUp(self):
|
781 |
797 |
BaseTestCase.setUp(self)
|
782 |
|
self.containers = ['c1', 'c2']
|
783 |
|
|
|
798 |
self.containers = list(set(self.initial_containers + ['c1', 'c2']))
|
|
799 |
self.containers.sort()
|
|
800 |
|
784 |
801 |
def test_create(self):
|
785 |
802 |
self.client.create_container(self.containers[0])
|
786 |
803 |
containers = self.client.list_containers()
|
... | ... | |
795 |
812 |
self.client.create_container(self.containers[0])
|
796 |
813 |
|
797 |
814 |
policy = {'quota':100}
|
798 |
|
self.client.set_container_policies('c1', **policy)
|
|
815 |
self.client.set_container_policies(self.containers[0], **policy)
|
799 |
816 |
|
800 |
|
meta = self.client.retrieve_container_metadata('c1')
|
|
817 |
meta = self.client.retrieve_container_metadata(self.containers[0])
|
801 |
818 |
self.assertTrue('x-container-policy-quota' in meta)
|
802 |
819 |
self.assertEqual(meta['x-container-policy-quota'], '100')
|
803 |
820 |
|
804 |
|
args = ['c1', 'o1']
|
|
821 |
args = [self.containers[0], 'o1']
|
805 |
822 |
kwargs = {'length':101}
|
806 |
823 |
self.assert_raises_fault(413, self.upload_random_data, *args, **kwargs)
|
807 |
824 |
|
808 |
825 |
#reset quota
|
809 |
826 |
policy = {'quota':0}
|
810 |
|
self.client.set_container_policies('c1', **policy)
|
|
827 |
self.client.set_container_policies(self.containers[0], **policy)
|
811 |
828 |
|
812 |
829 |
class ContainerPost(BaseTestCase):
|
813 |
830 |
def setUp(self):
|
... | ... | |
828 |
845 |
class ContainerDelete(BaseTestCase):
|
829 |
846 |
def setUp(self):
|
830 |
847 |
BaseTestCase.setUp(self)
|
831 |
|
self.containers = ['c1', 'c2']
|
|
848 |
self.containers = list(set(self.initial_containers + ['c1', 'c2']))
|
|
849 |
self.containers.sort()
|
|
850 |
|
832 |
851 |
for c in self.containers:
|
833 |
852 |
self.client.create_container(c)
|
834 |
853 |
|
... | ... | |
859 |
878 |
class ObjectGet(BaseTestCase):
|
860 |
879 |
def setUp(self):
|
861 |
880 |
BaseTestCase.setUp(self)
|
862 |
|
self.containers = ['c1', 'c2']
|
|
881 |
self.containers = list(set(self.initial_containers + ['c1', 'c2']))
|
|
882 |
self.containers.sort()
|
|
883 |
|
863 |
884 |
#create some containers
|
864 |
885 |
for c in self.containers:
|
865 |
886 |
self.client.create_container(c)
|
... | ... | |
1371 |
1392 |
class ObjectCopy(BaseTestCase):
|
1372 |
1393 |
def setUp(self):
|
1373 |
1394 |
BaseTestCase.setUp(self)
|
1374 |
|
self.containers = ['c1', 'c2']
|
|
1395 |
self.containers = list(set(self.initial_containers + ['c1', 'c2']))
|
|
1396 |
self.containers.sort()
|
|
1397 |
|
1375 |
1398 |
for c in self.containers:
|
1376 |
1399 |
self.client.create_container(c)
|
1377 |
1400 |
self.obj = self.upload_random_data(self.containers[0], o_names[0])
|
... | ... | |
1456 |
1479 |
class ObjectMove(BaseTestCase):
|
1457 |
1480 |
def setUp(self):
|
1458 |
1481 |
BaseTestCase.setUp(self)
|
1459 |
|
self.containers = ['c1', 'c2']
|
|
1482 |
self.containers = list(set(self.initial_containers + ['c1', 'c2']))
|
|
1483 |
self.containers.sort()
|
|
1484 |
|
1460 |
1485 |
for c in self.containers:
|
1461 |
1486 |
self.client.create_container(c)
|
1462 |
1487 |
self.obj = self.upload_random_data(self.containers[0], o_names[0])
|
... | ... | |
1517 |
1542 |
class ObjectPost(BaseTestCase):
|
1518 |
1543 |
def setUp(self):
|
1519 |
1544 |
BaseTestCase.setUp(self)
|
1520 |
|
self.containers = ['c1', 'c2']
|
|
1545 |
self.containers = list(set(self.initial_containers + ['c1', 'c2']))
|
|
1546 |
self.containers.sort()
|
|
1547 |
|
1521 |
1548 |
for c in self.containers:
|
1522 |
1549 |
self.client.create_container(c)
|
1523 |
1550 |
self.obj = []
|
... | ... | |
1796 |
1823 |
def setUp(self):
|
1797 |
1824 |
BaseTestCase.setUp(self)
|
1798 |
1825 |
self.containers = ['c1', 'c2']
|
|
1826 |
self.containers.extend(self.initial_containers)
|
|
1827 |
|
1799 |
1828 |
for c in self.containers:
|
1800 |
1829 |
self.client.create_container(c)
|
1801 |
1830 |
self.obj = self.upload_random_data(self.containers[0], o_names[0])
|
... | ... | |
1869 |
1898 |
self.client.publish_object(c, 'o2')
|
1870 |
1899 |
|
1871 |
1900 |
def test_shared_public(self):
|
|
1901 |
diff = lambda l: set(l) - set(self.initial_containers)
|
|
1902 |
|
1872 |
1903 |
func, kwargs = self.client.list_containers, {'shared':True}
|
1873 |
1904 |
l = func(**kwargs)
|
1874 |
|
self.assertEqual(l, ['c1', 'c2'])
|
|
1905 |
self.assertEqual(set(['c1', 'c2']), diff(l))
|
1875 |
1906 |
self.assertEqual(l, [e['name'] for e in func(format='json', **kwargs)])
|
1876 |
1907 |
|
1877 |
1908 |
func, kwargs = self.client.list_containers, {'public':True}
|
1878 |
1909 |
l = func(**kwargs)
|
1879 |
|
self.assertEqual(l, ['c1', 'c3'])
|
|
1910 |
self.assertEqual(set(['c1', 'c3']), diff(l))
|
1880 |
1911 |
self.assertEqual(l, [e['name'] for e in func(format='json', **kwargs)])
|
1881 |
1912 |
|
1882 |
1913 |
func, kwargs = self.client.list_containers, {'shared':True, 'public':True}
|
1883 |
1914 |
l = func(**kwargs)
|
1884 |
|
self.assertEqual(l, ['c1', 'c2', 'c3'])
|
|
1915 |
self.assertEqual(set(['c1', 'c2', 'c3']), diff(l))
|
1885 |
1916 |
self.assertEqual(l, [e['name'] for e in func(format='json', **kwargs)])
|
1886 |
1917 |
|
1887 |
1918 |
|
... | ... | |
2288 |
2319 |
self.client.share_object(self.container, self.object, self.authorized)
|
2289 |
2320 |
|
2290 |
2321 |
my_shared_containers = self.client.list_containers(shared=True)
|
2291 |
|
self.assertEqual(['c'], my_shared_containers)
|
|
2322 |
self.assertTrue('c' in my_shared_containers)
|
2292 |
2323 |
my_shared_objects = self.client.list_objects('c', shared=True)
|
2293 |
2324 |
self.assertEqual(['o'], my_shared_objects)
|
2294 |
2325 |
|