diff options
| author | Samuel de Medeiros Queiroz <samueldmq@gmail.com> | 2015-12-06 21:30:18 -0300 |
|---|---|---|
| committer | Samuel de Medeiros Queiroz <samueldmq@gmail.com> | 2016-01-04 19:52:08 -0300 |
| commit | f5bcd87e238de8fdccb4da8e97373352fad474c6 (patch) | |
| tree | 19df93ab97200821284f8552318025eb6be7b865 /keystoneclient/tests | |
| parent | 9f9fd47919f91a3523bc1904f69179b7eb22ad25 (diff) | |
| download | python-keystoneclient-f5bcd87e238de8fdccb4da8e97373352fad474c6.tar.gz | |
Implements base classes for functional tests
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
Diffstat (limited to 'keystoneclient/tests')
| -rw-r--r-- | keystoneclient/tests/functional/base.py | 59 | ||||
| -rw-r--r-- | keystoneclient/tests/functional/test_base.py | 28 | ||||
| -rw-r--r-- | keystoneclient/tests/functional/v2_0/__init__.py | 0 | ||||
| -rw-r--r-- | keystoneclient/tests/functional/v3/__init__.py | 0 |
4 files changed, 87 insertions, 0 deletions
diff --git a/keystoneclient/tests/functional/base.py b/keystoneclient/tests/functional/base.py new file mode 100644 index 0000000..11fa567 --- /dev/null +++ b/keystoneclient/tests/functional/base.py @@ -0,0 +1,59 @@ +# 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' diff --git a/keystoneclient/tests/functional/test_base.py b/keystoneclient/tests/functional/test_base.py new file mode 100644 index 0000000..d5f0516 --- /dev/null +++ b/keystoneclient/tests/functional/test_base.py @@ -0,0 +1,28 @@ +# 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 keystoneclient +from keystoneclient.tests.functional import base + + +class V3ClientVersionTestCase(base.V3ClientTestCase): + + def test_version(self): + self.assertIsInstance(self.client, + keystoneclient.v3.client.Client) + + +class V2ClientVersionTestCase(base.V2ClientTestCase): + + def test_version(self): + self.assertIsInstance(self.client, + keystoneclient.v2_0.client.Client) diff --git a/keystoneclient/tests/functional/v2_0/__init__.py b/keystoneclient/tests/functional/v2_0/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/keystoneclient/tests/functional/v2_0/__init__.py diff --git a/keystoneclient/tests/functional/v3/__init__.py b/keystoneclient/tests/functional/v3/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/keystoneclient/tests/functional/v3/__init__.py |
