Fix unit tests

This commit is contained in:
twangboy 2016-05-27 10:19:38 -06:00
parent 56a6f6bb83
commit 79bc7195dc
2 changed files with 92 additions and 51 deletions

View file

@ -54,9 +54,11 @@ def installed(name, recurse=False, force=False):
# Determine if the feature is installed
old = __salt__['win_servermanager.list_installed']()
if name not in old:
ret['comment'] = '{0} will be installed recurse={1}'.format(name, recurse)
ret['changes']['feature'] = \
'{0} will be installed recurse={1}'.format(name, recurse)
elif force and recurse:
ret['comment'] = '{0} already installed but might install sub-features'.format(name)
ret['changes']['feature'] = \
'{0} already installed but might install sub-features'.format(name)
else:
ret['comment'] = 'The feature {0} is already installed'.format(name)
return ret
@ -65,22 +67,23 @@ def installed(name, recurse=False, force=False):
ret['result'] = None
return ret
ret['changes'] = {}
# Install the features
status = __salt__['win_servermanager.install'](name, recurse)
ret['result'] = status['Success']
if not ret['result']:
ret['comment'] = 'Failed to install {0}: {1}'.format(name, ret['changes']['feature']['ExitCode'])
if 'already installed' not in status['DisplayName']:
ret['changes']['feature'] = status
ret['comment'] = 'Failed to install {0}: {1}'\
.format(name, status['ExitCode'])
new = __salt__['win_servermanager.list_installed']()
changes = salt.utils.compare_dicts(old, new)
if changes:
ret['changes']['features'] = changes
ret['changes']['restart_needed'] = status['RestartNeeded']
ret['comment'] = 'Installed {0}'.format(name)
ret['changes'] = status
ret['changes']['feature'] = changes
return ret
@ -116,7 +119,7 @@ def removed(name):
# Determine if the feature is installed
old = __salt__['win_servermanager.list_installed']()
if name in old:
ret['comment'] = '{0} will be removed'.format(name)
ret['changes']['feature'] = '{0} will be removed'.format(name)
else:
ret['comment'] = 'The feature {0} is not installed'.format(name)
return ret
@ -125,18 +128,22 @@ def removed(name):
ret['result'] = None
return ret
ret['changes'] = {}
# Remove the features
status = __salt__['win_servermanager.remove'](name)
ret['result'] = status['Success']
if not ret['result']:
ret['comment'] = 'Failed to uninstall the feature {0}'.format(ret['changes']['feature']['ExitCode'])
ret['comment'] = 'Failed to uninstall the feature {0}'\
.format(status['ExitCode'])
new = __salt__['win_servermanager.list_installed']()
changes = salt.utils.compare_dicts(old, new)
if changes:
ret['changes']['features'] = changes
ret['changes']['restart_needed'] = status['RestartNeeded']
ret['comment'] = 'Removed {0}'.format(name)
ret['changes'] = status
ret['changes']['feature'] = changes
return ret

View file

@ -35,58 +35,92 @@ class WinServermanagerTestCase(TestCase):
'''
Test to install the windows feature
'''
ret = {'name': 'salt',
'changes': {},
'result': True,
'comment': ''}
mock = MagicMock(side_effect=['salt', 'stack', 'stack'])
mock1 = MagicMock(return_value={'Success': True})
mock_list = MagicMock(
side_effect=[{'spongebob': 'squarepants'},
{'squidward': 'patrick'},
{'spongebob': 'squarepants'},
{'spongebob': 'squarepants',
'squidward': 'patrick'}])
mock_install = MagicMock(
return_value={'Success': True,
'RestartNeeded': False,
'ExitCode': 1234})
with patch.dict(win_servermanager.__salt__,
{"win_servermanager.list_installed": mock,
"win_servermanager.install": mock1}):
ret.update({'comment': 'The feature salt is already installed'})
self.assertDictEqual(win_servermanager.installed('salt'), ret)
{"win_servermanager.list_installed": mock_list,
"win_servermanager.install": mock_install}):
ret = {'name': 'spongebob',
'changes': {},
'result': True,
'comment': 'The feature spongebob is already installed'}
self.assertDictEqual(win_servermanager.installed('spongebob'), ret)
with patch.dict(win_servermanager.__opts__, {"test": True}):
ret.update({'changes': {'feature':
'salt will be installed'
' recurse=False'}, 'result': None,
'comment': ''})
self.assertDictEqual(win_servermanager.installed('salt'), ret)
ret = {'name': 'spongebob',
'result': None,
'comment': '',
'changes': {
'feature': 'spongebob will be installed '
'recurse=False'}}
self.assertDictEqual(
win_servermanager.installed('spongebob'), ret)
with patch.dict(win_servermanager.__opts__, {"test": False}):
ret.update({'changes': {'feature': {'Success': True}},
'result': True, 'comment': 'Installed salt'})
self.assertDictEqual(win_servermanager.installed('salt'),
ret)
with patch.dict(win_servermanager.__opts__, {"test": False}):
ret = {'name': 'squidward',
'result': True,
'comment': 'Installed squidward',
'changes': {
'Success': True,
'RestartNeeded': False,
'ExitCode': 1234,
'feature': {'squidward': {'new': 'patrick',
'old': ''}}}}
self.assertDictEqual(
win_servermanager.installed('squidward'), ret)
def test_removed(self):
'''
Test to remove the windows feature
'''
ret = {'name': 'salt',
'changes': {},
'result': True,
'comment': ''}
mock = MagicMock(side_effect=['stack', 'salt', 'salt'])
mock1 = MagicMock(return_value={'Success': True})
mock_list = MagicMock(
side_effect=[{'spongebob': 'squarepants'},
{'squidward': 'patrick'},
{'spongebob': 'squarepants',
'squidward': 'patrick'},
{'spongebob': 'squarepants'}])
mock_remove = MagicMock(
return_value={'Success': True,
'RestartNeeded': False,
'ExitCode': 1234})
with patch.dict(win_servermanager.__salt__,
{"win_servermanager.list_installed": mock,
"win_servermanager.remove": mock1}):
ret.update({'comment': 'The feature salt is not installed'})
self.assertDictEqual(win_servermanager.removed('salt'), ret)
{"win_servermanager.list_installed": mock_list,
"win_servermanager.remove": mock_remove}):
ret = {'name': 'squidward',
'changes': {},
'result': True,
'comment': 'The feature squidward is not installed'}
self.assertDictEqual(
win_servermanager.removed('squidward'), ret)
with patch.dict(win_servermanager.__opts__, {"test": True}):
ret.update({'changes': {'feature':
'salt will be removed'},
'result': None, 'comment': ''})
self.assertDictEqual(win_servermanager.removed('salt'), ret)
ret = {'name': 'squidward',
'result': None,
'comment': '',
'changes': {'feature': 'squidward will be removed'}}
self.assertDictEqual(
win_servermanager.removed('squidward'), ret)
with patch.dict(win_servermanager.__opts__, {"test": False}):
ret.update({'changes': {'feature': {'Success': True}},
'result': True})
self.assertDictEqual(win_servermanager.removed('salt'),
ret)
with patch.dict(win_servermanager.__opts__, {"test": False}):
ret = {'name': 'squidward',
'result': True,
'comment': 'Removed squidward',
'changes': {
'Success': True,
'RestartNeeded': False,
'ExitCode': 1234,
'feature': {'squidward': {'new': '',
'old': 'patrick'}}}}
self.assertDictEqual(
win_servermanager.removed('squidward'), ret)
if __name__ == '__main__':