diff --git a/shade/tests/unit/base.py b/shade/tests/unit/base.py index ed182ce80..3eb66e974 100644 --- a/shade/tests/unit/base.py +++ b/shade/tests/unit/base.py @@ -17,6 +17,7 @@ import collections import time import uuid +from distutils import version as du_version import fixtures import mock import os @@ -416,6 +417,16 @@ class RequestsMockTestCase(BaseTestCase): self.adapter = self.useFixture(rm_fixture.Fixture()) self.calls = [] self._uri_registry.clear() + + # occ > 1.26.0 fixes keystoneclient construction. Unfortunately, it + # breaks our mocking of what keystoneclient does here. Since we're + # close to just getting rid of ksc anyway, just put in a version match + occ_version = du_version.StrictVersion(occ.__version__) + if occ_version > du_version.StrictVersion('1.26.0'): + versioned_endpoint = 'https://identity.example.com/v2.0' + else: + versioned_endpoint = 'https://identity.example.com/' + self.__do_register_uris([ dict(method='GET', uri='https://identity.example.com/', text=open(self.discovery_json, 'r').read()), @@ -423,7 +434,7 @@ class RequestsMockTestCase(BaseTestCase): text=open(os.path.join( self.fixtures_directory, 'catalog-v2.json'), 'r').read() ), - dict(method='GET', uri='https://identity.example.com/', + dict(method='GET', uri=versioned_endpoint, text=open(self.discovery_json, 'r').read()), dict(method='GET', uri='https://identity.example.com/', text=open(self.discovery_json, 'r').read()) diff --git a/shade/tests/unit/test_shade_operator.py b/shade/tests/unit/test_shade_operator.py index bafda1db9..1c64b43f2 100644 --- a/shade/tests/unit/test_shade_operator.py +++ b/shade/tests/unit/test_shade_operator.py @@ -12,10 +12,12 @@ from keystoneauth1 import plugin as ksa_plugin +from distutils import version as du_version import mock import munch import testtools +import os_client_config as occ from os_client_config import cloud_config import shade from shade import exc @@ -1143,8 +1145,18 @@ class TestShadeOperator(base.TestCase): session_mock = mock.Mock() get_session_mock.return_value = session_mock self.op_cloud.get_session_endpoint('identity') - session_mock.get_endpoint.assert_called_with( - interface=ksa_plugin.AUTH_INTERFACE) + # occ > 1.26.0 fixes keystoneclient construction. Unfortunately, it + # breaks our mocking of what keystoneclient does here. Since we're + # close to just getting rid of ksc anyway, just put in a version match + occ_version = du_version.StrictVersion(occ.__version__) + if occ_version > du_version.StrictVersion('1.26.0'): + kwargs = dict( + interface='public', region_name='RegionOne', + service_name=None, service_type='identity') + else: + kwargs = dict(interface=ksa_plugin.AUTH_INTERFACE) + + session_mock.get_endpoint.assert_called_with(**kwargs) @mock.patch.object(cloud_config.CloudConfig, 'get_session') def test_has_service_no(self, get_session_mock):