Merge "Set headers on object before creating/updating"

This commit is contained in:
Jenkins
2015-03-05 18:47:52 +00:00
committed by Gerrit Code Review
2 changed files with 25 additions and 2 deletions

View File

@@ -162,11 +162,12 @@ class Object(resource.Resource):
"""Create a remote resource from this instance."""
url = utils.urljoin("", self.base_path % self, self.id)
headers = self.get_headers()
if data is not None:
resp = session.put(url, service=self.service, data=data,
accept="bytes").headers
accept="bytes", headers=headers).headers
else:
resp = session.post(url, service=self.service, data=None,
accept=None).headers
accept=None, headers=headers).headers
self.set_headers(resp)
return self

View File

@@ -63,7 +63,11 @@ class TestObject(testtools.TestCase):
self.resp.headers = {"X-Trans-Id": "abcdef"}
self.sess = mock.Mock()
self.sess.get = mock.MagicMock()
self.sess.put = mock.MagicMock()
self.sess.post = mock.MagicMock()
self.sess.get.return_value = self.resp
self.sess.put.return_value = self.resp
self.sess.post.return_value = self.resp
def test_basic(self):
sot = obj.Object.new(**OBJ_EXAMPLE)
@@ -112,3 +116,21 @@ class TestObject(testtools.TestCase):
self.sess.get.assert_called_with(url, service=sot.service,
accept="bytes", headers=headers)
self.assertEqual(self.resp.content, rv)
def _test_create(self, method, data, accept):
sot = obj.Object.new(container=CONTAINER_NAME, name=OBJECT_NAME)
sot.newest = True
headers = {"x-newest": True}
rv = sot.create(self.sess, data=data)
url = "/%s/%s" % (CONTAINER_NAME, OBJECT_NAME)
method.assert_called_with(url, service=sot.service, data=data,
accept=accept, headers=headers)
self.assertEqual(self.resp.headers, rv.get_headers())
def test_create_data(self):
self._test_create(self.sess.put, "data", "bytes")
def test_create_no_data(self):
self._test_create(self.sess.post, None, None)