Merge "Ensure oauth API supports HEAD"
This commit is contained in:
commit
156b6263f3
@ -73,13 +73,13 @@ class Routers(wsgi.RoutersBase):
|
||||
self._add_resource(
|
||||
mapper, consumer_controller,
|
||||
path='/OS-OAUTH1/consumers',
|
||||
get_action='list_consumers',
|
||||
get_head_action='list_consumers',
|
||||
post_action='create_consumer',
|
||||
rel=build_resource_relation(resource_name='consumers'))
|
||||
self._add_resource(
|
||||
mapper, consumer_controller,
|
||||
path='/OS-OAUTH1/consumers/{consumer_id}',
|
||||
get_action='get_consumer',
|
||||
get_head_action='get_consumer',
|
||||
patch_action='update_consumer',
|
||||
delete_action='delete_consumer',
|
||||
rel=build_resource_relation(resource_name='consumer'),
|
||||
@ -92,7 +92,7 @@ class Routers(wsgi.RoutersBase):
|
||||
self._add_resource(
|
||||
mapper, access_token_controller,
|
||||
path='/users/{user_id}/OS-OAUTH1/access_tokens',
|
||||
get_action='list_access_tokens',
|
||||
get_head_action='list_access_tokens',
|
||||
rel=build_resource_relation(resource_name='user_access_tokens'),
|
||||
path_vars={
|
||||
'user_id': json_home.Parameters.USER_ID,
|
||||
@ -100,7 +100,7 @@ class Routers(wsgi.RoutersBase):
|
||||
self._add_resource(
|
||||
mapper, access_token_controller,
|
||||
path='/users/{user_id}/OS-OAUTH1/access_tokens/{access_token_id}',
|
||||
get_action='get_access_token',
|
||||
get_head_action='get_access_token',
|
||||
delete_action='delete_access_token',
|
||||
rel=build_resource_relation(resource_name='user_access_token'),
|
||||
path_vars={
|
||||
@ -111,7 +111,7 @@ class Routers(wsgi.RoutersBase):
|
||||
mapper, access_token_roles_controller,
|
||||
path='/users/{user_id}/OS-OAUTH1/access_tokens/{access_token_id}/'
|
||||
'roles',
|
||||
get_action='list_access_token_roles',
|
||||
get_head_action='list_access_token_roles',
|
||||
rel=build_resource_relation(
|
||||
resource_name='user_access_token_roles'),
|
||||
path_vars={
|
||||
@ -122,7 +122,7 @@ class Routers(wsgi.RoutersBase):
|
||||
mapper, access_token_roles_controller,
|
||||
path='/users/{user_id}/OS-OAUTH1/access_tokens/{access_token_id}/'
|
||||
'roles/{role_id}',
|
||||
get_action='get_access_token_role',
|
||||
get_head_action='get_access_token_role',
|
||||
rel=build_resource_relation(
|
||||
resource_name='user_access_token_role'),
|
||||
path_vars={
|
||||
|
@ -157,16 +157,19 @@ class ConsumerCRUDTests(OAuth1Tests):
|
||||
resp = self.delete(self.CONSUMER_URL + '/%s' % consumer_id)
|
||||
self.assertResponseStatus(resp, http_client.NO_CONTENT)
|
||||
|
||||
def test_consumer_get(self):
|
||||
def test_consumer_get_head(self):
|
||||
consumer = self._create_single_consumer()
|
||||
consumer_id = consumer['id']
|
||||
resp = self.get(self.CONSUMER_URL + '/%s' % consumer_id)
|
||||
url = self.CONSUMER_URL + '/%s' % consumer_id
|
||||
resp = self.get(url)
|
||||
self_url = ['http://localhost/v3', self.CONSUMER_URL,
|
||||
'/', consumer_id]
|
||||
self_url = ''.join(self_url)
|
||||
self.assertEqual(self_url, resp.result['consumer']['links']['self'])
|
||||
self.assertEqual(consumer_id, resp.result['consumer']['id'])
|
||||
|
||||
self.head(url, expected_status=http_client.OK)
|
||||
|
||||
def test_consumer_list(self):
|
||||
self._consumer_create()
|
||||
resp = self.get(self.CONSUMER_URL)
|
||||
@ -177,6 +180,8 @@ class ConsumerCRUDTests(OAuth1Tests):
|
||||
self.assertEqual(self_url, resp.result['links']['self'])
|
||||
self.assertValidListLinks(resp.result['links'])
|
||||
|
||||
self.head(self.CONSUMER_URL, expected_status=http_client.OK)
|
||||
|
||||
def test_consumer_update(self):
|
||||
consumer = self._create_single_consumer()
|
||||
original_id = consumer['id']
|
||||
@ -250,9 +255,12 @@ class ConsumerCRUDTests(OAuth1Tests):
|
||||
self.assertIsNotNone(consumer['secret'])
|
||||
|
||||
def test_consumer_get_bad_id(self):
|
||||
self.get(self.CONSUMER_URL + '/%(consumer_id)s'
|
||||
% {'consumer_id': uuid.uuid4().hex},
|
||||
expected_status=http_client.NOT_FOUND)
|
||||
url = (
|
||||
self.CONSUMER_URL + '/%(consumer_id)s' %
|
||||
{'consumer_id': uuid.uuid4().hex}
|
||||
)
|
||||
self.get(url, expected_status=http_client.NOT_FOUND)
|
||||
self.head(url, expected_status=http_client.NOT_FOUND)
|
||||
|
||||
|
||||
class OAuthFlowTests(OAuth1Tests):
|
||||
@ -310,12 +318,17 @@ class AccessTokenCRUDTests(OAuthFlowTests):
|
||||
expected_status=http_client.NOT_FOUND)
|
||||
|
||||
def test_list_no_access_tokens(self):
|
||||
resp = self.get('/users/%(user_id)s/OS-OAUTH1/access_tokens'
|
||||
% {'user_id': self.user_id})
|
||||
url = (
|
||||
'/users/%(user_id)s/OS-OAUTH1/access_tokens'
|
||||
% {'user_id': self.user_id}
|
||||
)
|
||||
resp = self.get(url)
|
||||
entities = resp.result['access_tokens']
|
||||
self.assertEqual([], entities)
|
||||
self.assertValidListLinks(resp.result['links'])
|
||||
|
||||
self.head(url, expected_status=http_client.OK)
|
||||
|
||||
def test_get_single_access_token(self):
|
||||
self.test_oauth_flow()
|
||||
access_token_key_string = self.access_token.key.decode()
|
||||
@ -330,21 +343,31 @@ class AccessTokenCRUDTests(OAuthFlowTests):
|
||||
self.assertEqual(self.consumer['key'], entity['consumer_id'])
|
||||
self.assertEqual('http://localhost/v3' + url, entity['links']['self'])
|
||||
|
||||
self.head(url, expected_status=http_client.OK)
|
||||
|
||||
def test_get_access_token_dne(self):
|
||||
self.get('/users/%(user_id)s/OS-OAUTH1/access_tokens/%(key)s'
|
||||
% {'user_id': self.user_id,
|
||||
'key': uuid.uuid4().hex},
|
||||
expected_status=http_client.NOT_FOUND)
|
||||
url = (
|
||||
'/users/%(user_id)s/OS-OAUTH1/access_tokens/%(key)s'
|
||||
% {'user_id': self.user_id,
|
||||
'key': uuid.uuid4().hex}
|
||||
)
|
||||
self.get(url, expected_status=http_client.NOT_FOUND)
|
||||
self.head(url, expected_status=http_client.NOT_FOUND)
|
||||
|
||||
def test_list_all_roles_in_access_token(self):
|
||||
self.test_oauth_flow()
|
||||
resp = self.get('/users/%(id)s/OS-OAUTH1/access_tokens/%(key)s/roles'
|
||||
% {'id': self.user_id,
|
||||
'key': self.access_token.key.decode()})
|
||||
url = (
|
||||
'/users/%(id)s/OS-OAUTH1/access_tokens/%(key)s/roles'
|
||||
% {'id': self.user_id,
|
||||
'key': self.access_token.key.decode()}
|
||||
)
|
||||
resp = self.get(url)
|
||||
entities = resp.result['roles']
|
||||
self.assertTrue(entities)
|
||||
self.assertValidListLinks(resp.result['links'])
|
||||
|
||||
self.head(url, expected_status=http_client.OK)
|
||||
|
||||
def test_get_role_in_access_token(self):
|
||||
self.test_oauth_flow()
|
||||
|
||||
@ -356,6 +379,8 @@ class AccessTokenCRUDTests(OAuthFlowTests):
|
||||
entity = resp.result['role']
|
||||
self.assertEqual(self.role_id, entity['id'])
|
||||
|
||||
self.head(url, expected_status=http_client.OK)
|
||||
|
||||
def test_get_role_in_access_token_dne(self):
|
||||
self.test_oauth_flow()
|
||||
|
||||
@ -364,12 +389,17 @@ class AccessTokenCRUDTests(OAuthFlowTests):
|
||||
% {'id': self.user_id, 'key': access_token_key,
|
||||
'role': uuid.uuid4().hex})
|
||||
self.get(url, expected_status=http_client.NOT_FOUND)
|
||||
self.head(url, expected_status=http_client.NOT_FOUND)
|
||||
|
||||
def test_list_and_delete_access_tokens(self):
|
||||
self.test_oauth_flow()
|
||||
# List access_tokens should be > 0
|
||||
resp = self.get('/users/%(user_id)s/OS-OAUTH1/access_tokens'
|
||||
% {'user_id': self.user_id})
|
||||
url = (
|
||||
'/users/%(user_id)s/OS-OAUTH1/access_tokens'
|
||||
% {'user_id': self.user_id}
|
||||
)
|
||||
resp = self.get(url)
|
||||
self.head(url, expected_status=http_client.OK)
|
||||
entities = resp.result['access_tokens']
|
||||
self.assertTrue(entities)
|
||||
self.assertValidListLinks(resp.result['links'])
|
||||
@ -382,8 +412,8 @@ class AccessTokenCRUDTests(OAuthFlowTests):
|
||||
self.assertResponseStatus(resp, http_client.NO_CONTENT)
|
||||
|
||||
# List access_token should be 0
|
||||
resp = self.get('/users/%(user_id)s/OS-OAUTH1/access_tokens'
|
||||
% {'user_id': self.user_id})
|
||||
resp = self.get(url)
|
||||
self.head(url, expected_status=http_client.OK)
|
||||
entities = resp.result['access_tokens']
|
||||
self.assertEqual([], entities)
|
||||
self.assertValidListLinks(resp.result['links'])
|
||||
|
Loading…
Reference in New Issue
Block a user