keystone/keystone/tests/unit/test_entry_points.py
Michael Krotscheck 55b056fa9e Added CORS support to Keystone
This adds the CORS support middleware to Keystone, allowing a deployer
to optionally configure rules under which a javascript client may
break the single-origin policy and access the API directly.

For keystone the paste.ini method of deploying the middleware was
chosen, because it needs to be able to annotate error responses
created by other middlewares. If one such middleware throws an
error - such as an error from sizelimit - that error response
must still have CORS headers in order to be readable by the
user agent.

This patch also includes tests to assert that the expected setup
entry points are present. It is expected that this test will be
refined in future patches.

OpenStack CrossProject Spec:
   http://specs.openstack.org/openstack/openstack-specs/specs/cors-support.html
Oslo_Middleware Docs:
   http://docs.openstack.org/developer/oslo.middleware/cors.html
OpenStack Cloud Admin Guide:
   http://docs.openstack.org/admin-guide-cloud/cross_project_cors.html

Change-Id: I151e0ee5da1bf3d9fbbe8f11bb06e687b284e5f6
2016-02-10 06:00:00 -08:00

49 lines
1.6 KiB
Python

# 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 stevedore
from testtools import matchers
from keystone.tests.unit import core as test
class TestPasteDeploymentEntryPoints(test.TestCase):
def test_entry_point_middleware(self):
"""Assert that our list of expected middleware is present."""
expected_names = [
'admin_token_auth',
'build_auth_context',
'crud_extension',
'cors',
'debug',
'endpoint_filter_extension',
'ec2_extension',
'ec2_extension_v3',
'federation_extension',
'json_body',
'oauth1_extension',
'request_id',
'revoke_extension',
's3_extension',
'simple_cert_extension',
'sizelimit',
'token_auth',
'url_normalize',
'user_crud_extension',
]
em = stevedore.ExtensionManager('paste.filter_factory')
actual_names = [extension.name for extension in em]
self.assertThat(actual_names, matchers.ContainsAll(expected_names))