12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- # -*- coding: utf-8 -*-
- # Import Python libs
- from __future__ import absolute_import, print_function, unicode_literals
- import os
- import textwrap
- import pytest
- # Import Salt Testing libs
- from tests.support.case import ModuleCase
- from tests.support.unit import skipIf
- from tests.support.runtests import RUNTIME_VARS
- # Import Salt libs
- import salt.utils.files
- import salt.utils.platform
- @skipIf(not salt.utils.platform.is_windows(), 'windows test only')
- @pytest.mark.windows_whitelisted
- class WinPKGTest(ModuleCase):
- '''
- Tests for salt.modules.win_pkg. There are already
- some pkg execution module tests in the the test
- integration.modules.test_pkg but this will be for
- specific windows software respository tests while
- using the win_pkg module.
- '''
- @classmethod
- def setUpClass(cls):
- cls.repo_dir = os.path.join(RUNTIME_VARS.FILES, 'file', 'base', 'win', 'repo-ng')
- cls.curl_sls_path = os.path.join(cls.repo_dir, 'curl.sls')
- def tearDown(self):
- if os.path.isfile(self.curl_sls_path):
- os.remove(self.curl_sls_path)
- @pytest.mark.destructive_test
- def test_adding_removing_pkg_sls(self):
- '''
- Test add and removing a new pkg sls
- in the windows software repository
- '''
- def _check_pkg(pkgs, check_refresh, exists=True):
- refresh = self.run_function('pkg.refresh_db')
- self.assertEqual(check_refresh, refresh['total'],
- msg='total returned {0}. Expected return {1}'.format(refresh['total'], check_refresh))
- repo_data = self.run_function('pkg.get_repo_data')
- repo_cache = os.path.join(RUNTIME_VARS.TMP, 'rootdir', 'cache', 'files', 'base', 'win', 'repo-ng')
- for pkg in pkgs:
- if exists:
- assert pkg in str(repo_data), str(repo_data)
- else:
- assert pkg not in str(repo_data), str(repo_data)
- for root, dirs, files in os.walk(repo_cache):
- if exists:
- assert pkg + '.sls' in files
- else:
- assert pkg + '.sls' not in files
- pkgs = ['putty', '7zip']
- # check putty and 7zip are in cache and repo query
- _check_pkg(pkgs, 2)
- # now add new sls
- with salt.utils.files.fopen(self.curl_sls_path, 'w') as fp_:
- fp_.write(textwrap.dedent('''
- curl:
- '7.46.0':
- full_name: 'cURL'
- {% if grains['cpuarch'] == 'AMD64' %}
- installer: 'salt://win/repo-ng/curl/curl-7.46.0-win64.msi'
- uninstaller: 'salt://win/repo-ng/curl/curl-7.46.0-win64.msi'
- {% else %}
- installer: 'salt://win/repo-ng/curl/curl-7.46.0-win32.msi'
- uninstaller: 'salt://win/repo-ng/curl/curl-7.46.0-win32.msi'
- {% endif %}
- install_flags: '/qn /norestart'
- uninstall_flags: '/qn /norestart'
- msiexec: True
- locale: en_US
- reboot: False
- '''))
- # now check if curl is also in cache and repo query
- pkgs.append('curl')
- for pkg in pkgs:
- self.assertIn(pkg + '.sls', os.listdir(self.repo_dir))
- _check_pkg(pkgs, 3)
- # remove curl sls and check its not in cache and repo query
- os.remove(self.curl_sls_path)
- _check_pkg(['curl'], 2, exists=False)
|