Files
deb-python-keystonemiddleware/keystonemiddleware/tests/unit/test_opts.py
Jamie Lennox f0965c955d Split oslo_config and list all opts
The intent of providing the list_auth_token_opts function was to provide
the oslo_config sample config file generator a list of options to
include in its sample files. However, services like zaqar have come to
rely on the list_auth_token_opts to list all the options that may be
consumed by auth_token middleware so that they can register them against
a non-global oslo_config object.

By removing deprecated options from the list_auth_token_opts we remove
these options from the config objects that the services use, however by
keeping them we will forever have deprecated options in sample config
files.

To split these two functionalities create a new function that lists the
options available for sample config files and update the entrypoint to
reflect this. This function is currently private because it should only
need to be accessed via entrypoint. The old deprecated options are then
added back to the original list_auth_token_opts function.

Closes-Bug: #1533932
Change-Id: I2aae5483c9309ab75985298c8de5b6f24cbc0f0d
2016-02-11 13:00:28 +11:00

136 lines
4.6 KiB
Python

# Copyright (c) 2014 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 stevedore
from testtools import matchers
from keystonemiddleware.auth_token import _opts as new_opts
from keystonemiddleware import opts as old_opts
from keystonemiddleware.tests.unit import utils
class OptsTestCase(utils.TestCase):
def test_original_list_all_options(self):
result_of_old_opts = old_opts.list_auth_token_opts()
self.assertThat(result_of_old_opts, matchers.HasLength(1))
for group in (g for (g, _l) in result_of_old_opts):
self.assertEqual('keystone_authtoken', group)
# This is the original list that includes deprecated options
expected_opt_names = [
'auth_admin_prefix',
'auth_host',
'auth_port',
'auth_protocol',
'auth_uri',
'identity_uri',
'auth_version',
'delay_auth_decision',
'http_connect_timeout',
'http_request_max_retries',
'admin_token',
'admin_user',
'admin_password',
'admin_tenant_name',
'cache',
'certfile',
'keyfile',
'cafile',
'region_name',
'insecure',
'signing_dir',
'memcached_servers',
'token_cache_time',
'revocation_cache_time',
'memcache_security_strategy',
'memcache_secret_key',
'memcache_use_advanced_pool',
'memcache_pool_dead_retry',
'memcache_pool_maxsize',
'memcache_pool_unused_timeout',
'memcache_pool_conn_get_timeout',
'memcache_pool_socket_timeout',
'include_service_catalog',
'enforce_token_bind',
'check_revocations_for_cached',
'hash_algorithms',
'auth_type',
'auth_section',
]
opt_names = [o.name for (g, l) in result_of_old_opts for o in l]
self.assertThat(opt_names, matchers.HasLength(len(expected_opt_names)))
for opt in opt_names:
self.assertIn(opt, expected_opt_names)
def _test_list_auth_token_opts(self, result):
self.assertThat(result, matchers.HasLength(1))
for group in (g for (g, _l) in result):
self.assertEqual('keystone_authtoken', group)
# This is the sample config generator list WITHOUT deprecations
expected_opt_names = [
'auth_uri',
'auth_version',
'delay_auth_decision',
'http_connect_timeout',
'http_request_max_retries',
'cache',
'certfile',
'keyfile',
'cafile',
'region_name',
'insecure',
'signing_dir',
'memcached_servers',
'token_cache_time',
'revocation_cache_time',
'memcache_security_strategy',
'memcache_secret_key',
'memcache_use_advanced_pool',
'memcache_pool_dead_retry',
'memcache_pool_maxsize',
'memcache_pool_unused_timeout',
'memcache_pool_conn_get_timeout',
'memcache_pool_socket_timeout',
'include_service_catalog',
'enforce_token_bind',
'check_revocations_for_cached',
'hash_algorithms',
'auth_type',
'auth_section',
]
opt_names = [o.name for (g, l) in result for o in l]
self.assertThat(opt_names, matchers.HasLength(len(expected_opt_names)))
for opt in opt_names:
self.assertIn(opt, expected_opt_names)
def test_list_auth_token_opts(self):
self._test_list_auth_token_opts(new_opts.list_opts())
def test_entry_point(self):
em = stevedore.ExtensionManager('oslo.config.opts',
invoke_on_load=True)
for extension in em:
if extension.name == 'keystonemiddleware.auth_token':
break
else:
self.fail('keystonemiddleware.auth_token not found')
self._test_list_auth_token_opts(extension.obj)