
In the cross project workshop "Establishing key themes for the Mitaka cycle" [1] during the Mitaka summit, one of the agreed point was to implement functional tests for the client libraries. [2] Later on, this will serve to improve our backward compatibility for client libraries. See I72e4e9cfa0539f6b326a0296c065fa3cb754f8ae In preparation to implement the functional tests for both v2 and v3 clients, this patch initializes the new directories and adds the base test classes: V3ClientTestCase and V2ClientTestCase. Each class instantiates its specific keystoneclient version via os-client-config either based on a clouds.yaml config file or from the environment variables. [1] https://mitakadesignsummit.sched.org/event/edd78ade4c7c92581a7cabc26019a85a [2] https://etherpad.openstack.org/p/mitaka-crossproject-themes Change-Id: Ia73d72d5f87051fb46d733782275b548874a1def
60 lines
2.1 KiB
Python
60 lines
2.1 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 testtools
|
|
|
|
from keystoneclient import client
|
|
import os_client_config
|
|
|
|
|
|
class ClientTestCase(testtools.TestCase):
|
|
|
|
def setUp(self):
|
|
super(ClientTestCase, self).setUp()
|
|
|
|
self.client = self.get_client()
|
|
|
|
def get_client(self):
|
|
"""Creates a keystoneclient instance to run functional tests
|
|
|
|
The client is instantiated via os-client-config either based on a
|
|
clouds.yaml config file or from the environment variables.
|
|
|
|
First, look for a 'functional_admin' cloud, as this is a cloud that the
|
|
user may have defined for functional testing with admin credentials. If
|
|
that is not found, check for the 'devstack-admin' cloud. Finally, fall
|
|
back to looking for environment variables.
|
|
|
|
"""
|
|
IDENTITY_CLIENT = 'identity'
|
|
OPENSTACK_CLOUDS = ('functional_admin', 'devstack-admin', 'envvars')
|
|
|
|
for cloud in OPENSTACK_CLOUDS:
|
|
try:
|
|
return os_client_config.make_client(
|
|
IDENTITY_CLIENT, client.Client, cloud=cloud,
|
|
identity_api_version=self.version)
|
|
except os_client_config.exceptions.OpenStackConfigException:
|
|
pass
|
|
|
|
raise Exception("Could not find any cloud definition for clouds named"
|
|
" functional_admin or devstack-admin. Check your"
|
|
" clouds.yaml file or your envvars and try again.")
|
|
|
|
|
|
class V3ClientTestCase(ClientTestCase):
|
|
version = '3'
|
|
|
|
|
|
class V2ClientTestCase(ClientTestCase):
|
|
version = '2.0'
|