salt/tests/unit/runners/test_winrepo.py
2017-12-14 19:30:14 -06:00

112 lines
3.8 KiB
Python

# -*- coding: utf-8 -*-
# Import Python Libs
from __future__ import absolute_import, print_function, unicode_literals
import os
import shutil
import tempfile
# Import Salt Testing Libs
from tests.support.mixins import LoaderModuleMockMixin
from tests.support.paths import TMP
from tests.support.unit import skipIf, TestCase
from tests.support.mock import NO_MOCK, NO_MOCK_REASON
# Import salt libs
import salt.utils.files
import salt.utils.stringutils
import salt.runners.winrepo as winrepo
# Can't use raw string with unicode_literals, since the \u in the uninstaller
# will be interpreted as a unicode code point and the interpreter will raise a
# SyntaxError.
_WINREPO_SLS = '''
winscp_x86:
5.7.5:
full_name: 'WinSCP 5.7.5'
installer: 'http://heanet.dl.sourceforge.net/project/winscp/WinSCP/5.7.5/winscp575setup.exe'
install_flags: '/SP- /verysilent /norestart'
uninstaller: '%PROGRAMFILES%\\WinSCP\\unins000.exe'
uninstall_flags: '/verysilent'
msiexec: False
locale: en_US
reboot: False
5.7.4:
full_name: 'WinSCP 5.7.4'
installer: 'http://cznic.dl.sourceforge.net/project/winscp/WinSCP/5.7.4/winscp574setup.exe'
install_flags: '/SP- /verysilent /norestart'
uninstaller: '%PROGRAMFILES%\\WinSCP\\unins000.exe'
uninstall_flags: '/verysilent'
msiexec: False
locale: en_US
reboot: False
'''
_WINREPO_GENREPO_DATA = {
'name_map': {
'WinSCP 5.7.4': 'winscp_x86',
'WinSCP 5.7.5': 'winscp_x86'
},
'repo': {
'winscp_x86': {
'5.7.5': {
'full_name': 'WinSCP 5.7.5',
'installer': 'http://heanet.dl.sourceforge.net/project/winscp/WinSCP/5.7.5/winscp575setup.exe',
'install_flags': '/SP- /verysilent /norestart',
'uninstaller': '%PROGRAMFILES%\\WinSCP\\unins000.exe',
'uninstall_flags': '/verysilent',
'msiexec': False,
'locale': 'en_US',
'reboot': False
},
'5.7.4': {
'full_name': 'WinSCP 5.7.4',
'installer': 'http://cznic.dl.sourceforge.net/project/winscp/WinSCP/5.7.4/winscp574setup.exe',
'install_flags': '/SP- /verysilent /norestart',
'uninstaller': '%PROGRAMFILES%\\WinSCP\\unins000.exe',
'uninstall_flags': '/verysilent',
'msiexec': False,
'locale': 'en_US',
'reboot': False
}
}
}
}
@skipIf(NO_MOCK, NO_MOCK_REASON)
class WinrepoTest(TestCase, LoaderModuleMockMixin):
'''
Test the winrepo runner
'''
def setup_loader_modules(self):
self.winrepo_dir = tempfile.mkdtemp(dir=TMP)
self.addCleanup(shutil.rmtree, self.winrepo_dir, ignore_errors=True)
self.extmods_dir = tempfile.mkdtemp(dir=TMP)
self.addCleanup(shutil.rmtree, self.extmods_dir, ignore_errors=True)
self.winrepo_sls_dir = os.path.join(self.winrepo_dir, 'repo_sls')
os.mkdir(self.winrepo_sls_dir)
return {
winrepo: {
'__opts__': {
'winrepo_cachefile': 'winrepo.p',
'renderer': 'yaml',
'renderer_blacklist': [],
'renderer_whitelist': [],
'file_roots': {'base': [self.winrepo_dir]},
'winrepo_dir': self.winrepo_dir,
'extension_modules': self.extmods_dir
}
}
}
def test_genrepo(self):
'''
Test winrepo.genrepo runner
'''
sls_file = os.path.join(self.winrepo_sls_dir, 'wireshark.sls')
# Add a winrepo SLS file
with salt.utils.files.fopen(sls_file, 'w') as fp_:
fp_.write(salt.utils.stringutils.to_str(_WINREPO_SLS))
self.assertEqual(winrepo.genrepo(), _WINREPO_GENREPO_DATA)