From 37d73b15b0ef0402a5c610e7126b3f72520bbb65 Mon Sep 17 00:00:00 2001 From: Lance Bragstad Date: Tue, 13 Jun 2017 16:10:14 +0000 Subject: [PATCH] Ensure the trust API supports HEAD requests This commit makes it so all GET requests in the trust API also support HEAD. Change-Id: I6b6ec5cbd651a601a18b04428183b21044305be7 Partial-Bug: 1696574 --- keystone/tests/unit/test_v3_trust.py | 32 +++++++++++++++++++++------- keystone/trust/routers.py | 6 +++--- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/keystone/tests/unit/test_v3_trust.py b/keystone/tests/unit/test_v3_trust.py index 02b259db72..c14a7a0a3b 100644 --- a/keystone/tests/unit/test_v3_trust.py +++ b/keystone/tests/unit/test_v3_trust.py @@ -112,28 +112,44 @@ class TestTrustOperations(test_v3.RestfulTestCase): self.assertValidTrustResponse(r, ref) # list all trusts - r = self.get('/OS-TRUST/trusts') + list_url = '/OS-TRUST/trusts' + r = self.get(list_url) + self.head(list_url, expected_status=http_client.OK) trusts = r.result['trusts'] self.assertEqual(3, len(trusts)) self.assertValidTrustListResponse(r) # list all trusts for the trustor - r = self.get('/OS-TRUST/trusts?trustor_user_id=%s' % - self.user_id) + list_for_trustor_url = ( + '/OS-TRUST/trusts?trustor_user_id=%s' % self.user_id + ) + r = self.get(list_for_trustor_url) + self.head(list_for_trustor_url, expected_status=http_client.OK) trusts = r.result['trusts'] self.assertEqual(3, len(trusts)) self.assertValidTrustListResponse(r) # list all trusts as the trustor as the trustee. - r = self.get('/OS-TRUST/trusts?trustee_user_id=%s' % - self.user_id) + list_as_trustor_url = ( + '/OS-TRUST/trusts?trustee_user_id=%s' % self.user_id + ) + r = self.get(list_as_trustor_url) + self.head(list_as_trustor_url, expected_status=http_client.OK) trusts = r.result['trusts'] self.assertEqual(0, len(trusts)) # list all trusts as the trustee is forbidden - r = self.get('/OS-TRUST/trusts?trustee_user_id=%s' % - self.trustee_user_id, - expected_status=http_client.FORBIDDEN) + list_all_as_trustee_url = ( + '/OS-TRUST/trusts?trustee_user_id=%s' % self.trustee_user_id + ) + r = self.get( + list_all_as_trustee_url, + expected_status=http_client.FORBIDDEN + ) + self.head( + list_all_as_trustee_url, + expected_status=http_client.FORBIDDEN + ) def test_delete_trust(self): # create a trust diff --git a/keystone/trust/routers.py b/keystone/trust/routers.py index 3a6243ccdc..fb2e045bbe 100644 --- a/keystone/trust/routers.py +++ b/keystone/trust/routers.py @@ -36,13 +36,13 @@ class Routers(wsgi.RoutersBase): self._add_resource( mapper, trust_controller, path='/OS-TRUST/trusts', - get_action='list_trusts', + get_head_action='list_trusts', post_action='create_trust', rel=_build_resource_relation(resource_name='trusts')) self._add_resource( mapper, trust_controller, path='/OS-TRUST/trusts/{trust_id}', - get_action='get_trust', + get_head_action='get_trust', delete_action='delete_trust', rel=_build_resource_relation(resource_name='trust'), path_vars={ @@ -51,7 +51,7 @@ class Routers(wsgi.RoutersBase): self._add_resource( mapper, trust_controller, path='/OS-TRUST/trusts/{trust_id}/roles', - get_action='list_roles_for_trust', + get_head_action='list_roles_for_trust', rel=_build_resource_relation(resource_name='trust_roles'), path_vars={ 'trust_id': TRUST_ID_PARAMETER_RELATION,