mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
add additional states.dockerng.volume_present() unit tests
The unit tests now test for the bug fixed in the previous commit (among other things).
This commit is contained in:
parent
849b94ed73
commit
68b51be869
1 changed files with 81 additions and 9 deletions
|
@ -506,22 +506,94 @@ class DockerngTestCase(TestCase):
|
|||
'''
|
||||
Test dockerng.volume_present
|
||||
'''
|
||||
dockerng_create_volume = Mock(return_value='created')
|
||||
volumes = []
|
||||
default_driver = 'dummy_default'
|
||||
|
||||
def create_volume(name, driver=None, driver_opts=None):
|
||||
for v in volumes:
|
||||
# volume_present should never try to add a conflicting
|
||||
# volume
|
||||
self.assertNotEqual(v['Name'], name)
|
||||
if driver is None:
|
||||
driver = default_driver
|
||||
new = {'Name': name, 'Driver': driver}
|
||||
volumes.append(new)
|
||||
return new
|
||||
|
||||
def remove_volume(name):
|
||||
old_len = len(volumes)
|
||||
removed = [v for v in volumes if v['Name'] == name]
|
||||
# volume_present should not have tried to remove a volume
|
||||
# that didn't exist
|
||||
self.assertEqual(1, len(removed))
|
||||
volumes.remove(removed[0])
|
||||
return removed[0]
|
||||
|
||||
dockerng_create_volume = Mock(side_effect=create_volume)
|
||||
__salt__ = {'dockerng.create_volume': dockerng_create_volume,
|
||||
'dockerng.volumes': Mock(return_value={'Volumes': []}),
|
||||
'dockerng.volumes': Mock(return_value={'Volumes': volumes}),
|
||||
'dockerng.remove_volume': Mock(side_effect=remove_volume),
|
||||
}
|
||||
with patch.dict(dockerng_state.__dict__,
|
||||
{'__salt__': __salt__}):
|
||||
ret = dockerng_state.volume_present(
|
||||
'volume_foo',
|
||||
)
|
||||
dockerng_create_volume.assert_called_with('volume_foo',
|
||||
driver=None,
|
||||
driver_opts=None)
|
||||
self.assertEqual(ret, {'name': 'volume_foo',
|
||||
'comment': '',
|
||||
'changes': {'created': 'created'},
|
||||
'result': True})
|
||||
dockerng_create_volume.assert_called_with('volume_foo',
|
||||
driver=None,
|
||||
driver_opts=None)
|
||||
self.assertEqual(
|
||||
{
|
||||
'name': 'volume_foo',
|
||||
'comment': '',
|
||||
'changes': {
|
||||
'created': {
|
||||
'Driver': default_driver,
|
||||
'Name': 'volume_foo',
|
||||
},
|
||||
},
|
||||
'result': True,
|
||||
},
|
||||
ret)
|
||||
self.assertEqual(len(volumes), 1)
|
||||
self.assertEqual(volumes[0]['Name'], 'volume_foo')
|
||||
self.assertIs(volumes[0]['Driver'], default_driver)
|
||||
|
||||
# run it again with the same arguments
|
||||
orig_volumes = [volumes[0].copy()]
|
||||
ret = dockerng_state.volume_present('volume_foo')
|
||||
self.assertEqual(
|
||||
{
|
||||
'name': 'volume_foo',
|
||||
'comment': "Volume 'volume_foo' already exists.",
|
||||
'changes': {},
|
||||
'result': True,
|
||||
},
|
||||
ret)
|
||||
self.assertEqual(orig_volumes, volumes)
|
||||
|
||||
# run it again, except with a different driver
|
||||
ret = dockerng_state.volume_present('volume_foo', driver='local')
|
||||
self.assertEqual(
|
||||
{
|
||||
'name': 'volume_foo',
|
||||
'comment': "",
|
||||
'changes': {
|
||||
'removed': {
|
||||
'Driver': default_driver,
|
||||
'Name': 'volume_foo',
|
||||
},
|
||||
'created': {
|
||||
'Driver': 'local',
|
||||
'Name': 'volume_foo',
|
||||
},
|
||||
},
|
||||
'result': True,
|
||||
},
|
||||
ret)
|
||||
mod_orig_volumes = [orig_volumes[0].copy()]
|
||||
mod_orig_volumes[0]['Driver'] = 'local'
|
||||
self.assertEqual(mod_orig_volumes, volumes)
|
||||
|
||||
def test_volume_present_with_another_driver(self):
|
||||
'''
|
||||
|
|
Loading…
Add table
Reference in a new issue