mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 01:18:58 +00:00
107 lines
3.7 KiB
Python
107 lines
3.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
'''
|
|
Tests for the Chocolatey State
|
|
'''
|
|
# Import Python libs
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
import logging
|
|
|
|
# Import Salt Testing libs
|
|
from tests.support.case import ModuleCase
|
|
from tests.support.mixins import SaltReturnAssertsMixin
|
|
from tests.support.unit import skipIf
|
|
from tests.support.helpers import destructiveTest
|
|
|
|
# Import Salt libs
|
|
import salt.utils.platform
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
__testcontext__ = {}
|
|
|
|
|
|
@destructiveTest
|
|
@skipIf(not salt.utils.platform.is_windows(), 'Windows Specific Test')
|
|
class ChocolateyTest(ModuleCase, SaltReturnAssertsMixin):
|
|
'''
|
|
Chocolatey State Tests
|
|
These tests are destructive as the install and remove software
|
|
'''
|
|
|
|
def setUp(self):
|
|
'''
|
|
Ensure that Chocolatey is installed
|
|
'''
|
|
super(ChocolateyTest, self).setUp()
|
|
if 'chocolatey' not in __testcontext__:
|
|
self.run_function('chocolatey.bootstrap')
|
|
__testcontext__['chocolatey'] = True
|
|
|
|
def test_chocolatey(self):
|
|
'''
|
|
Test the following:
|
|
- `chocolatey.installed`
|
|
- `chocolatey.upgraded`
|
|
- `chocolatey.uninstalled`
|
|
'''
|
|
# If this assert fails, we need to find new targets, this test needs to
|
|
# be able to test successful installation of packages, so this package
|
|
# needs to NOT be installed before we run the states below
|
|
target = 'firefox'
|
|
pre_version = '52.0.2'
|
|
upg_version = '57.0.2'
|
|
log.debug('Making sure %s is not installed', target)
|
|
self.assertFalse(
|
|
self.run_function('chocolatey.version', [target]))
|
|
|
|
try:
|
|
####################################################
|
|
# Test `chocolatey.installed`
|
|
####################################################
|
|
# Install the package
|
|
log.debug('Testing chocolatey.installed')
|
|
ret = self.run_state(
|
|
'chocolatey.installed',
|
|
name=target,
|
|
version=pre_version)
|
|
self.assertSaltTrueReturn(ret)
|
|
|
|
# Verify the package is installed
|
|
log.debug('Verifying install success')
|
|
ret = self.run_function('chocolatey.version', [target])
|
|
self.assertEqual(ret, {'Firefox': [pre_version]})
|
|
|
|
####################################################
|
|
# Test `chocolatey.upgraded`
|
|
####################################################
|
|
# Upgrade the package
|
|
log.debug('Testing chocolatey.upgraded')
|
|
ret = self.run_state(
|
|
'chocolatey.upgraded',
|
|
name=target,
|
|
version=upg_version)
|
|
self.assertSaltTrueReturn(ret)
|
|
|
|
# Verify the package is upgraded
|
|
log.debug('Verifying upgrade success')
|
|
ret = self.run_function('chocolatey.version', [target])
|
|
self.assertEqual(ret, {'Firefox': [upg_version]})
|
|
|
|
####################################################
|
|
# Test `chocolatey.uninstalled`
|
|
####################################################
|
|
# uninstall the package
|
|
log.debug('Testing chocolatey.uninstalled')
|
|
ret = self.run_state('chocolatey.uninstalled', name=target)
|
|
self.assertSaltTrueReturn(ret)
|
|
|
|
# Verify the package is uninstalled
|
|
log.debug('Verifying uninstall success')
|
|
ret = self.run_function('chocolatey.version', [target])
|
|
self.assertEqual(ret, {})
|
|
|
|
finally:
|
|
# Always uninstall
|
|
log.debug('Uninstalling %s', target)
|
|
self.run_function('chocolatey.uninstall', [target])
|