1d087af001
Implement the HEAD method for all get-one and list-all operations in the v3 API (non-extended). While this may never be used by python-openstackclient, it is useful to operators and application developers for quickly obtaining metainformation about API resources, and for "testing hypertext links for validity, accessibility, and recent modification"[1]. [1] https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4 Closes-bug: #1370335 Change-Id: Iae26ebea1aa40d3b5c6c676dabe4f60a86a4f99f
70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
# Copyright 2013 OpenStack Foundation
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import json
|
|
import uuid
|
|
|
|
from six.moves import http_client
|
|
|
|
from keystone.tests import unit
|
|
from keystone.tests.unit import test_v3
|
|
|
|
|
|
class PolicyTestCase(test_v3.RestfulTestCase):
|
|
"""Test policy CRUD."""
|
|
|
|
def setUp(self):
|
|
super(PolicyTestCase, self).setUp()
|
|
self.policy = unit.new_policy_ref()
|
|
self.policy_id = self.policy['id']
|
|
self.policy_api.create_policy(
|
|
self.policy_id,
|
|
self.policy.copy())
|
|
|
|
# policy crud tests
|
|
|
|
def test_create_policy(self):
|
|
"""Call ``POST /policies``."""
|
|
ref = unit.new_policy_ref()
|
|
r = self.post('/policies', body={'policy': ref})
|
|
return self.assertValidPolicyResponse(r, ref)
|
|
|
|
def test_list_head_policies(self):
|
|
"""Call ``GET & HEAD /policies``."""
|
|
resource_url = '/policies'
|
|
r = self.get(resource_url)
|
|
self.assertValidPolicyListResponse(r, ref=self.policy)
|
|
self.head(resource_url, expected_status=http_client.OK)
|
|
|
|
def test_get_head_policy(self):
|
|
"""Call ``GET & HEAD /policies/{policy_id}``."""
|
|
resource_url = ('/policies/%(policy_id)s' %
|
|
{'policy_id': self.policy_id})
|
|
r = self.get(resource_url)
|
|
self.assertValidPolicyResponse(r, self.policy)
|
|
self.head(resource_url, expected_status=http_client.OK)
|
|
|
|
def test_update_policy(self):
|
|
"""Call ``PATCH /policies/{policy_id}``."""
|
|
self.policy['blob'] = json.dumps({'data': uuid.uuid4().hex, })
|
|
r = self.patch(
|
|
'/policies/%(policy_id)s' % {'policy_id': self.policy_id},
|
|
body={'policy': self.policy})
|
|
self.assertValidPolicyResponse(r, self.policy)
|
|
|
|
def test_delete_policy(self):
|
|
"""Call ``DELETE /policies/{policy_id}``."""
|
|
self.delete(
|
|
'/policies/%(policy_id)s' % {'policy_id': self.policy_id})
|