
OSC has some additions to OSC_Config that we need to include: * A fix for bug 1642301 in _auth_default_domain() * The addition of _validate_auth_ksc() and _validate_auth() that include current OSC needs. These need to be migrated into os-client-config in a compatible manner... Change-Id: I21a6ba3682ef97146db977270315c74c12d7b3b5
223 lines
8.2 KiB
Python
223 lines
8.2 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.
|
|
#
|
|
|
|
from osc_lib.cli import client_config
|
|
from osc_lib.tests import utils
|
|
|
|
|
|
class TestOSCConfig(utils.TestCase):
|
|
|
|
def setUp(self):
|
|
super(TestOSCConfig, self).setUp()
|
|
|
|
self.cloud = client_config.OSC_Config()
|
|
|
|
def test_auth_select_default_plugin(self):
|
|
config = {
|
|
'auth_type': 'admin_token',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('admin_token', ret_config['auth_type'])
|
|
|
|
def test_auth_select_default_plugin_password(self):
|
|
config = {
|
|
'username': 'fred',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('password', ret_config['auth_type'])
|
|
self.assertEqual('fred', ret_config['username'])
|
|
|
|
def test_auth_select_default_plugin_password_v2(self):
|
|
config = {
|
|
'identity_api_version': '2',
|
|
'username': 'fred',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('v2password', ret_config['auth_type'])
|
|
self.assertEqual('fred', ret_config['username'])
|
|
|
|
def test_auth_select_default_plugin_password_v2_int(self):
|
|
config = {
|
|
'identity_api_version': 2,
|
|
'username': 'fred',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('v2password', ret_config['auth_type'])
|
|
self.assertEqual('fred', ret_config['username'])
|
|
|
|
def test_auth_select_default_plugin_password_v3(self):
|
|
config = {
|
|
'identity_api_version': '3',
|
|
'username': 'fred',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('v3password', ret_config['auth_type'])
|
|
self.assertEqual('fred', ret_config['username'])
|
|
|
|
def test_auth_select_default_plugin_password_v3_int(self):
|
|
config = {
|
|
'identity_api_version': 3,
|
|
'username': 'fred',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('v3password', ret_config['auth_type'])
|
|
self.assertEqual('fred', ret_config['username'])
|
|
|
|
def test_auth_select_default_plugin_token(self):
|
|
config = {
|
|
'token': 'subway',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('token', ret_config['auth_type'])
|
|
self.assertEqual('subway', ret_config['token'])
|
|
|
|
def test_auth_select_default_plugin_token_v2(self):
|
|
config = {
|
|
'identity_api_version': '2.2',
|
|
'token': 'subway',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('v2token', ret_config['auth_type'])
|
|
self.assertEqual('subway', ret_config['token'])
|
|
|
|
def test_auth_select_default_plugin_token_v3(self):
|
|
config = {
|
|
'identity_api_version': '3',
|
|
'token': 'subway',
|
|
}
|
|
ret_config = self.cloud._auth_select_default_plugin(config)
|
|
self.assertEqual('v3token', ret_config['auth_type'])
|
|
self.assertEqual('subway', ret_config['token'])
|
|
|
|
def test_auth_v2_arguments(self):
|
|
config = {
|
|
'identity_api_version': '2',
|
|
'auth_type': 'v2password',
|
|
'auth': {
|
|
'username': 'fred',
|
|
},
|
|
}
|
|
ret_config = self.cloud._auth_v2_arguments(config)
|
|
self.assertEqual('fred', ret_config['auth']['username'])
|
|
self.assertFalse('tenant_id' in ret_config['auth'])
|
|
self.assertFalse('tenant_name' in ret_config['auth'])
|
|
|
|
config = {
|
|
'identity_api_version': '3',
|
|
'auth_type': 'v3password',
|
|
'auth': {
|
|
'username': 'fred',
|
|
'project_id': 'id',
|
|
},
|
|
}
|
|
ret_config = self.cloud._auth_v2_arguments(config)
|
|
self.assertEqual('fred', ret_config['auth']['username'])
|
|
self.assertFalse('tenant_id' in ret_config['auth'])
|
|
self.assertFalse('tenant_name' in ret_config['auth'])
|
|
|
|
config = {
|
|
'identity_api_version': '2',
|
|
'auth_type': 'v2password',
|
|
'auth': {
|
|
'username': 'fred',
|
|
'project_id': 'id',
|
|
},
|
|
}
|
|
ret_config = self.cloud._auth_v2_arguments(config)
|
|
self.assertEqual('id', ret_config['auth']['tenant_id'])
|
|
self.assertFalse('tenant_name' in ret_config['auth'])
|
|
|
|
config = {
|
|
'identity_api_version': '2',
|
|
'auth_type': 'v2password',
|
|
'auth': {
|
|
'username': 'fred',
|
|
'project_name': 'name',
|
|
},
|
|
}
|
|
ret_config = self.cloud._auth_v2_arguments(config)
|
|
self.assertFalse('tenant_id' in ret_config['auth'])
|
|
self.assertEqual('name', ret_config['auth']['tenant_name'])
|
|
|
|
def test_auth_v2_ignore_v3(self):
|
|
config = {
|
|
'identity_api_version': '2',
|
|
'auth_type': 'v2password',
|
|
'auth': {
|
|
'username': 'fred',
|
|
'project_id': 'id',
|
|
'project_domain_id': 'bad',
|
|
},
|
|
}
|
|
ret_config = self.cloud._auth_v2_ignore_v3(config)
|
|
self.assertEqual('fred', ret_config['auth']['username'])
|
|
self.assertFalse('project_domain_id' in ret_config['auth'])
|
|
|
|
def test_auth_default_domain_not_set(self):
|
|
config = {
|
|
'identity_api_version': '3',
|
|
'auth_type': 'v3oidcpassword',
|
|
'default_domain': 'default',
|
|
'auth': {
|
|
'username': 'fred',
|
|
'project_id': 'id',
|
|
},
|
|
}
|
|
ret_config = self.cloud._auth_default_domain(config)
|
|
self.assertEqual('v3oidcpassword', ret_config['auth_type'])
|
|
self.assertEqual('default', ret_config['default_domain'])
|
|
self.assertEqual('fred', ret_config['auth']['username'])
|
|
self.assertNotIn('project_domain_id', ret_config['auth'])
|
|
self.assertNotIn('user_domain_id', ret_config['auth'])
|
|
|
|
def test_auth_default_domain_use_default(self):
|
|
config = {
|
|
'identity_api_version': '3',
|
|
'auth_type': 'v3password',
|
|
'default_domain': 'default',
|
|
'auth': {
|
|
'username': 'fred',
|
|
'project_id': 'id',
|
|
},
|
|
}
|
|
ret_config = self.cloud._auth_default_domain(config)
|
|
self.assertEqual('v3password', ret_config['auth_type'])
|
|
self.assertEqual('default', ret_config['default_domain'])
|
|
self.assertEqual('fred', ret_config['auth']['username'])
|
|
self.assertEqual('default', ret_config['auth']['project_domain_id'])
|
|
self.assertEqual('default', ret_config['auth']['user_domain_id'])
|
|
|
|
def test_auth_default_domain_use_given(self):
|
|
config = {
|
|
'identity_api_version': '3',
|
|
'auth_type': 'v3password',
|
|
'default_domain': 'default',
|
|
'auth': {
|
|
'username': 'fred',
|
|
'project_id': 'id',
|
|
'project_domain_id': 'proj',
|
|
'user_domain_id': 'use'
|
|
},
|
|
}
|
|
ret_config = self.cloud._auth_default_domain(config)
|
|
self.assertEqual('v3password', ret_config['auth_type'])
|
|
self.assertEqual('default', ret_config['default_domain'])
|
|
self.assertEqual('fred', ret_config['auth']['username'])
|
|
self.assertEqual('proj', ret_config['auth']['project_domain_id'])
|
|
self.assertEqual('use', ret_config['auth']['user_domain_id'])
|
|
|
|
def test_auth_config_hook_default(self):
|
|
config = {}
|
|
ret_config = self.cloud.auth_config_hook(config)
|
|
self.assertEqual('password', ret_config['auth_type'])
|