:param content_length: (string) set a custrom content length
- :param transfer_encoding: (string) set a custrom transfer encoding
+ :param transfer_encoding: (string) set a custom transfer encoding
:returns: ConnectionResponse
"""
self._assert_container()
- self.set_param('format', format, iff=format)
self.set_param('update', iff=update)
+ self.set_param('format', format, iff=format)
+ 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)
self.set_header('Content-Type', content_type)
self.set_header('Content-Length', content_length)
self.set_header('Transfer-Encoding', transfer_encoding)
success=kwargs.pop('success', (201, 202)),
**kwargs))
+ @patch('%s.set_param' % rest_pkg)
+ @patch('%s.set_header' % rest_pkg)
+ @patch('%s.post' % rest_pkg, return_value=FR())
+ def test_container_post(self, post, SH, SP):
+ for pm in product(
+ (True, False),
+ ('json', 'some-format'),
+ (None, 'quota'),
+ (None, 'v3r51on1ng'),
+ (dict(), dict(k1='v2'), dict(k2='v2', k3='v3')),
+ (None, 'content-type'),
+ (None, 42),
+ (None, 'transfer-encoding'),
+ ((), ('someval',)),
+ (dict(), dict(success=400), dict(k='v', v='k'))):
+ args, kwargs = pm[-2:]
+ pm = pm[:-2]
+ self.client.container_post(*(pm + args), **kwargs)
+ upd, frmt = pm[:2]
+ self.assertEqual(SP.mock_calls[-2:], [
+ call('update', iff=upd),
+ call('format', frmt, iff=frmt)])
+ qta, vrs, metas, ctype, clen, trenc = pm[2:]
+ prfx = 'X-Container-Meta-'
+ exp = [
+ call('X-Container-Policy-Quota', qta),
+ call('X-Container-Policy-Versioning', vrs)] + [
+ call('%s%s' % (prfx, k), v) for k, v in metas.items()] + [
+ call('Content-Type', ctype),
+ call('Content-Length', clen),
+ call('Transfer-Encoding', trenc)]
+ self.assertEqual(SH.mock_calls[- len(exp):], exp)
+ ims, ius = pm[-2:]
+ self.assertEqual(post.mock_calls[-1], call(
+ '/%s/%s' % (self.client.account, self.client.container),
+ *args,
+ success=kwargs.pop('success', 202),
+ **kwargs))
+
class Pithos(TestCase):