No headers in body for create and update
Headers were being passed in the body for create and update. Change-Id: I31689758880a887d993ba7e0597b8b8b9d542dae
This commit is contained in:
@@ -504,6 +504,7 @@ class Resource(collections.MutableMapping):
|
||||
|
||||
# Convert attributes from Resource types into their ids.
|
||||
attrs = cls._convert_ids(attrs)
|
||||
headers = attrs.pop(HEADERS, None)
|
||||
|
||||
if cls.resource_key:
|
||||
body = {cls.resource_key: attrs}
|
||||
@@ -514,12 +515,14 @@ class Resource(collections.MutableMapping):
|
||||
url = cls.base_path % path_args
|
||||
else:
|
||||
url = cls.base_path
|
||||
args = {'json': body}
|
||||
if headers:
|
||||
args[HEADERS] = headers
|
||||
if resource_id:
|
||||
url = utils.urljoin(url, resource_id)
|
||||
resp = session.put(url, service=cls.service, json=body).body
|
||||
resp = session.put(url, service=cls.service, **args).body
|
||||
else:
|
||||
resp = session.post(url, service=cls.service,
|
||||
json=body).body
|
||||
resp = session.post(url, service=cls.service, **args).body
|
||||
|
||||
if cls.resource_key:
|
||||
resp = resp[cls.resource_key]
|
||||
@@ -709,6 +712,7 @@ class Resource(collections.MutableMapping):
|
||||
attrs = cls._convert_ids(attrs)
|
||||
if attrs and cls.id_attribute in attrs:
|
||||
del attrs[cls.id_attribute]
|
||||
headers = attrs.pop(HEADERS, None)
|
||||
|
||||
if cls.resource_key:
|
||||
body = {cls.resource_key: attrs}
|
||||
@@ -720,10 +724,13 @@ class Resource(collections.MutableMapping):
|
||||
else:
|
||||
url = cls.base_path
|
||||
url = utils.urljoin(url, resource_id)
|
||||
args = {'json': body}
|
||||
if headers:
|
||||
args[HEADERS] = headers
|
||||
if cls.put_update:
|
||||
resp = session.put(url, service=cls.service, json=body).body
|
||||
resp = session.put(url, service=cls.service, **args).body
|
||||
else:
|
||||
resp = session.patch(url, service=cls.service, json=body).body
|
||||
resp = session.patch(url, service=cls.service, **args).body
|
||||
|
||||
if cls.resource_key:
|
||||
resp = resp[cls.resource_key]
|
||||
|
||||
@@ -190,6 +190,10 @@ class PropTests(base.TestCase):
|
||||
|
||||
class HeaderTests(base.TestCase):
|
||||
class Test(resource.Resource):
|
||||
base_path = "/ramones"
|
||||
service = "punk"
|
||||
allow_create = True
|
||||
allow_update = True
|
||||
hey = resource.header("vocals")
|
||||
ho = resource.header("guitar")
|
||||
letsgo = resource.header("bass")
|
||||
@@ -232,6 +236,33 @@ class HeaderTests(base.TestCase):
|
||||
|
||||
self.assertIsNone(sot.hey)
|
||||
|
||||
def test_create_update_headers(self):
|
||||
sot = HeaderTests.Test()
|
||||
sot._reset_dirty()
|
||||
sot.ho = "johnny"
|
||||
sot.letsgo = "deedee"
|
||||
response = mock.MagicMock()
|
||||
response.body = {'id': 1}
|
||||
sess = mock.MagicMock()
|
||||
sess.post = mock.MagicMock(return_value=response)
|
||||
sess.patch = mock.MagicMock(return_value=response)
|
||||
|
||||
sot.create(sess)
|
||||
headers = {'guitar': 'johnny', 'bass': 'deedee'}
|
||||
sess.post.assert_called_with(HeaderTests.Test.base_path,
|
||||
service=HeaderTests.Test.service,
|
||||
headers=headers,
|
||||
json={})
|
||||
|
||||
sot['id'] = 1
|
||||
sot.letsgo = "cj"
|
||||
headers = {'guitar': 'johnny', 'bass': 'cj'}
|
||||
sot.update(sess)
|
||||
sess.patch.assert_called_with('ramones/1',
|
||||
service=HeaderTests.Test.service,
|
||||
headers=headers,
|
||||
json={})
|
||||
|
||||
|
||||
class ResourceTests(base.TestTransportBase):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user