salt/tests/integration/states/test_chocolatey.py
twangboy 3df091f543
Put tests behind try block
Uninstall firefox in finally
Add some log messages
2017-12-11 15:18:03 -07:00

107 lines
3.7 KiB
Python

# -*- coding: utf-8 -*-
'''
Tests for the Chocolatey State
'''
# Import Python libs
from __future__ import absolute_import
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 {0} is not installed'.format(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 {0}'.format(target))
self.run_function('chocolatey.uninstall', [target])