Unittest PithosRest.container_get
authorStavros Sachtouris <saxtouri@admin.grnet.gr>
Tue, 19 Mar 2013 13:25:08 +0000 (15:25 +0200)
committerStavros Sachtouris <saxtouri@admin.grnet.gr>
Tue, 19 Mar 2013 13:25:08 +0000 (15:25 +0200)
kamaki/clients/pithos/rest_api.py
kamaki/clients/pithos/test.py

index 680f1c9..0670c52 100644 (file)
@@ -306,11 +306,11 @@ class PithosRestClient(StorageClient):
         """
         self._assert_container()
 
+        self.set_header('X-Container-Policy-Quota', quota)
+        self.set_header('X-Container-Policy-Versioning', versioning)
         if metadata:
             for metaname, metaval in metadata.items():
                 self.set_header('X-Container-Meta-' + metaname, metaval)
-        self.set_header('X-Container-Policy-Quota', quota)
-        self.set_header('X-Container-Policy-Versioning', versioning)
 
         path = path4url(self.account, self.container)
         success = kwargs.pop('success', (201, 202))
index 79ca06c..37d7bf5 100644 (file)
@@ -328,6 +328,30 @@ class PithosRest(TestCase):
                 success=kwargs.pop('success', 200),
                 **kwargs))
 
+    @patch('%s.set_header' % rest_pkg)
+    @patch('%s.put' % rest_pkg, return_value=FR())
+    def test_container_put(self, put, SH):
+        for pm in product(
+                (None, 42),
+                (None, 'v3r51on1ng'),
+                (dict(), dict(k1='v2'), dict(k2='v2', k3='v3')),
+                ((), ('someval',)),
+                (dict(), dict(success=400), dict(k='v', v='k'))):
+            args, kwargs = pm[-2:]
+            pm = pm[:-2]
+            self.client.container_put(*(pm + args), **kwargs)
+            quota, versioning, metas = pm[-3:]
+            exp = [
+                call('X-Container-Policy-Quota', quota),
+                call('X-Container-Policy-Versioning', versioning)] + [
+                call('X-Container-Meta-%s' % k, v) for k, v in metas.items()]
+            self.assertEqual(SH.mock_calls[- len(exp):], exp)
+            self.assertEqual(put.mock_calls[-1], call(
+                '/%s/%s' % (self.client.account, self.client.container),
+                *args,
+                success=kwargs.pop('success', (201, 202)),
+                **kwargs))
+
 
 class Pithos(TestCase):