Fix unit test failures related to new os-client-config and osc-lib

[breakage related to os-client-config 1.28.0]
os-client-config 1.28.0 add a check if filebased and envvars are
both used. This check causes OSC unit test failure.

OSC now instantiates OpenStackConfig twice as a workaround.
The unit test mocks _load_config_file() and it returns a config dict,
but os-client-config OpenStackConfig.__init__ updates the dict returned.
As a result, when OpenStackConfig is instantiated second time,
the mock of _load_config_file returns a modified version of the config
dict. This hits the new check in os-client-config 1.28.0.

This commit changes the mock to use side_effect rather than return_value
to ensure the original dict is used.

[breakage related to osc-lib 1.7.0]
The change in osc-lib 1.7.0 added "if" logic to avoid calling get() twice.
In tests.unit.volume.test_find_resource, kwargs is empty dict in find_resource(),
so the second call to get() is NOT called now.
Removing the second elements of side_effect addresses the unit failure.

Co-Authored-By: Rui Chen <chenrui.momo@gmail.com>
Change-Id: Ib9d14661b2755bbd6619e15c0d9023fbc9d27d70
Closes-Bug: #1703782
Closes-Bug: #1703783
This commit is contained in:
Akihiro Motoki 2017-07-12 09:42:28 +00:00
parent faf6e16120
commit 3cba09e767
2 changed files with 16 additions and 18 deletions

View File

@ -397,14 +397,14 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg):
Run 1 has --os-password on CLI
"""
config_mock.return_value = (
'file.yaml',
copy.deepcopy(test_shell.CLOUD_2),
)
vendor_mock.return_value = (
'file.yaml',
copy.deepcopy(test_shell.PUBLIC_1),
)
def config_mock_return():
return ('file.yaml', copy.deepcopy(test_shell.CLOUD_2))
config_mock.side_effect = config_mock_return
def vendor_mock_return():
return ('file.yaml', copy.deepcopy(test_shell.PUBLIC_1))
vendor_mock.side_effect = vendor_mock_return
_shell = shell.OpenStackShell()
_shell.run(
"--os-password qaz configuration show".split(),
@ -466,14 +466,14 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg):
Run 2 has --os-username, --os-password, --os-project-domain-id on CLI
"""
config_mock.return_value = (
'file.yaml',
copy.deepcopy(test_shell.CLOUD_2),
)
vendor_mock.return_value = (
'file.yaml',
copy.deepcopy(test_shell.PUBLIC_1),
)
def config_mock_return():
return ('file.yaml', copy.deepcopy(test_shell.CLOUD_2))
config_mock.side_effect = config_mock_return
def vendor_mock_return():
return ('file.yaml', copy.deepcopy(test_shell.PUBLIC_1))
vendor_mock.side_effect = vendor_mock_return
_shell = shell.OpenStackShell()
_shell.run(
"--os-username zarquon --os-password qaz "

View File

@ -45,7 +45,6 @@ class TestFindResourceVolumes(test_utils.TestCase):
resp = mock.Mock()
body = {"volumes": [{"id": ID, 'display_name': NAME}]}
api.client.get.side_effect = [Exception("Not found"),
Exception("Not found"),
(resp, body)]
self.manager = volumes.VolumeManager(api)
@ -69,7 +68,6 @@ class TestFindResourceVolumeSnapshots(test_utils.TestCase):
resp = mock.Mock()
body = {"snapshots": [{"id": ID, 'display_name': NAME}]}
api.client.get.side_effect = [Exception("Not found"),
Exception("Not found"),
(resp, body)]
self.manager = volume_snapshots.SnapshotManager(api)