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. |         # Convert attributes from Resource types into their ids. | ||||||
|         attrs = cls._convert_ids(attrs) |         attrs = cls._convert_ids(attrs) | ||||||
|  |         headers = attrs.pop(HEADERS, None) | ||||||
|  |  | ||||||
|         if cls.resource_key: |         if cls.resource_key: | ||||||
|             body = {cls.resource_key: attrs} |             body = {cls.resource_key: attrs} | ||||||
| @@ -514,12 +515,14 @@ class Resource(collections.MutableMapping): | |||||||
|             url = cls.base_path % path_args |             url = cls.base_path % path_args | ||||||
|         else: |         else: | ||||||
|             url = cls.base_path |             url = cls.base_path | ||||||
|  |         args = {'json': body} | ||||||
|  |         if headers: | ||||||
|  |             args[HEADERS] = headers | ||||||
|         if resource_id: |         if resource_id: | ||||||
|             url = utils.urljoin(url, 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: |         else: | ||||||
|             resp = session.post(url, service=cls.service, |             resp = session.post(url, service=cls.service, **args).body | ||||||
|                                 json=body).body |  | ||||||
|  |  | ||||||
|         if cls.resource_key: |         if cls.resource_key: | ||||||
|             resp = resp[cls.resource_key] |             resp = resp[cls.resource_key] | ||||||
| @@ -709,6 +712,7 @@ class Resource(collections.MutableMapping): | |||||||
|         attrs = cls._convert_ids(attrs) |         attrs = cls._convert_ids(attrs) | ||||||
|         if attrs and cls.id_attribute in attrs: |         if attrs and cls.id_attribute in attrs: | ||||||
|             del attrs[cls.id_attribute] |             del attrs[cls.id_attribute] | ||||||
|  |         headers = attrs.pop(HEADERS, None) | ||||||
|  |  | ||||||
|         if cls.resource_key: |         if cls.resource_key: | ||||||
|             body = {cls.resource_key: attrs} |             body = {cls.resource_key: attrs} | ||||||
| @@ -720,10 +724,13 @@ class Resource(collections.MutableMapping): | |||||||
|         else: |         else: | ||||||
|             url = cls.base_path |             url = cls.base_path | ||||||
|         url = utils.urljoin(url, resource_id) |         url = utils.urljoin(url, resource_id) | ||||||
|  |         args = {'json': body} | ||||||
|  |         if headers: | ||||||
|  |             args[HEADERS] = headers | ||||||
|         if cls.put_update: |         if cls.put_update: | ||||||
|             resp = session.put(url, service=cls.service, json=body).body |             resp = session.put(url, service=cls.service, **args).body | ||||||
|         else: |         else: | ||||||
|             resp = session.patch(url, service=cls.service, json=body).body |             resp = session.patch(url, service=cls.service, **args).body | ||||||
|  |  | ||||||
|         if cls.resource_key: |         if cls.resource_key: | ||||||
|             resp = resp[cls.resource_key] |             resp = resp[cls.resource_key] | ||||||
|   | |||||||
| @@ -190,6 +190,10 @@ class PropTests(base.TestCase): | |||||||
|  |  | ||||||
| class HeaderTests(base.TestCase): | class HeaderTests(base.TestCase): | ||||||
|     class Test(resource.Resource): |     class Test(resource.Resource): | ||||||
|  |         base_path = "/ramones" | ||||||
|  |         service = "punk" | ||||||
|  |         allow_create = True | ||||||
|  |         allow_update = True | ||||||
|         hey = resource.header("vocals") |         hey = resource.header("vocals") | ||||||
|         ho = resource.header("guitar") |         ho = resource.header("guitar") | ||||||
|         letsgo = resource.header("bass") |         letsgo = resource.header("bass") | ||||||
| @@ -232,6 +236,33 @@ class HeaderTests(base.TestCase): | |||||||
|  |  | ||||||
|         self.assertIsNone(sot.hey) |         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): | class ResourceTests(base.TestTransportBase): | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 TerryHowe
					TerryHowe