mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 01:18:58 +00:00
170 lines
7.1 KiB
Python
170 lines
7.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Import Python libs
|
|
from __future__ import absolute_import, unicode_literals, print_function
|
|
|
|
# Import Salt Libs
|
|
import salt.states.win_wusa as wusa
|
|
from salt.exceptions import SaltInvocationError
|
|
|
|
# Import Salt Testing Libs
|
|
from tests.support.mixins import LoaderModuleMockMixin
|
|
from tests.support.unit import TestCase
|
|
from tests.support.mock import MagicMock, patch
|
|
|
|
|
|
class WinWusaTestCase(TestCase, LoaderModuleMockMixin):
|
|
'''
|
|
test the function in the win_wusa state module
|
|
'''
|
|
kb = 'KB123456'
|
|
|
|
def setup_loader_modules(self):
|
|
return {wusa: {'__opts__': {'test': False},
|
|
'__env__': 'base'}}
|
|
|
|
def test_installed_no_source(self):
|
|
'''
|
|
test wusa.installed without passing source
|
|
'''
|
|
with self.assertRaises(SaltInvocationError) as excinfo:
|
|
wusa.installed(name='KB123456', source=None)
|
|
|
|
self.assertEqual(excinfo.exception.strerror,
|
|
'Must specify a "source" file to install')
|
|
|
|
def test_installed_existing(self):
|
|
'''
|
|
test wusa.installed when the kb is already installed
|
|
'''
|
|
mock_installed = MagicMock(return_value=True)
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed}):
|
|
returned = wusa.installed(name=self.kb,
|
|
source='salt://{0}.msu'.format(self.kb))
|
|
expected = {'changes': {},
|
|
'comment': '{0} already installed'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': True}
|
|
self.assertDictEqual(expected, returned)
|
|
|
|
def test_installed_test_true(self):
|
|
'''
|
|
test wusa.installed with test=True
|
|
'''
|
|
mock_installed = MagicMock(return_value=False)
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed}), \
|
|
patch.dict(wusa.__opts__, {'test': True}):
|
|
returned = wusa.installed(name=self.kb,
|
|
source='salt://{0}.msu'.format(self.kb))
|
|
expected = {'changes': {},
|
|
'comment': '{0} would be installed'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': None}
|
|
self.assertDictEqual(expected, returned)
|
|
|
|
def test_installed_cache_fail(self):
|
|
'''
|
|
test wusa.install when it fails to cache the file
|
|
'''
|
|
mock_installed = MagicMock(return_value=False)
|
|
mock_cache = MagicMock(return_value='')
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed,
|
|
'cp.cache_file': mock_cache}):
|
|
returned = wusa.installed(name=self.kb,
|
|
source='salt://{0}.msu'.format(self.kb))
|
|
expected = {'changes': {},
|
|
'comment': 'Unable to cache salt://{0}.msu from '
|
|
'saltenv "base"'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': False}
|
|
self.assertDictEqual(expected, returned)
|
|
|
|
def test_installed(self):
|
|
'''
|
|
test wusa.installed assuming success
|
|
'''
|
|
mock_installed = MagicMock(side_effect=[False, True])
|
|
mock_cache = MagicMock(return_value='C:\\{0}.msu'.format(self.kb))
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed,
|
|
'cp.cache_file': mock_cache,
|
|
'wusa.install': MagicMock()}):
|
|
returned = wusa.installed(name=self.kb,
|
|
source='salt://{0}.msu'.format(self.kb))
|
|
expected = {'changes': {'new': True, 'old': False},
|
|
'comment': '{0} was installed'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': True}
|
|
self.assertDictEqual(expected, returned)
|
|
|
|
def test_installed_failed(self):
|
|
'''
|
|
test wusa.installed with a failure
|
|
'''
|
|
mock_installed = MagicMock(side_effect=[False, False])
|
|
mock_cache = MagicMock(return_value='C:\\{0}.msu'.format(self.kb))
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed,
|
|
'cp.cache_file': mock_cache,
|
|
'wusa.install': MagicMock()}):
|
|
returned = wusa.installed(name=self.kb,
|
|
source='salt://{0}.msu'.format(self.kb))
|
|
expected = {'changes': {},
|
|
'comment': '{0} failed to install'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': False}
|
|
self.assertDictEqual(expected, returned)
|
|
|
|
def test_uninstalled_non_existing(self):
|
|
'''
|
|
test wusa.uninstalled when the kb is not installed
|
|
'''
|
|
mock_installed = MagicMock(return_value=False)
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed}):
|
|
returned = wusa.uninstalled(name=self.kb)
|
|
expected = {'changes': {},
|
|
'comment': '{0} already uninstalled'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': True}
|
|
self.assertDictEqual(expected, returned)
|
|
|
|
def test_uninstalled_test_true(self):
|
|
'''
|
|
test wusa.uninstalled with test=True
|
|
'''
|
|
mock_installed = MagicMock(return_value=True)
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed}), \
|
|
patch.dict(wusa.__opts__, {'test': True}):
|
|
returned = wusa.uninstalled(name=self.kb)
|
|
expected = {'changes': {},
|
|
'comment': '{0} would be uninstalled'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': None}
|
|
self.assertDictEqual(expected, returned)
|
|
|
|
def test_uninstalled(self):
|
|
'''
|
|
test wusa.uninstalled assuming success
|
|
'''
|
|
mock_installed = MagicMock(side_effect=[True, False])
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed,
|
|
'wusa.uninstall': MagicMock()}):
|
|
returned = wusa.uninstalled(name=self.kb)
|
|
expected = {'changes': {'new': False, 'old': True},
|
|
'comment': '{0} was uninstalled'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': True}
|
|
self.assertDictEqual(expected, returned)
|
|
|
|
def test_uninstalled_failed(self):
|
|
'''
|
|
test wusa.uninstalled with a failure
|
|
'''
|
|
mock_installed = MagicMock(side_effect=[True, True])
|
|
with patch.dict(wusa.__salt__, {'wusa.is_installed': mock_installed,
|
|
'wusa.uninstall': MagicMock()}):
|
|
returned = wusa.uninstalled(name=self.kb)
|
|
expected = {'changes': {},
|
|
'comment': '{0} failed to uninstall'.format(self.kb),
|
|
'name': self.kb,
|
|
'result': False}
|
|
self.assertDictEqual(expected, returned)
|