1""" 2 :synopsis: Unit Tests for 'module.yumkernelpkg' 3 :platform: Linux 4 :maturity: develop 5 .. versionadded:: 2018.3.0 6""" 7# pylint: disable=invalid-name,no-member 8 9 10try: 11 # Import Salt Testing Libs 12 from tests.support.mixins import LoaderModuleMockMixin 13 from tests.support.unit import TestCase, skipIf 14 from tests.support.mock import MagicMock, patch 15 16 # Import Salt Libs 17 from tests.support.kernelpkg import KernelPkgTestCase 18 import salt.modules.kernelpkg_linux_yum as kernelpkg 19 import salt.modules.yumpkg as pkg 20 from salt.exceptions import CommandExecutionError 21 22 HAS_MODULES = True 23except ImportError: 24 HAS_MODULES = False 25 26 27@skipIf(not HAS_MODULES, "Salt modules could not be loaded") 28class YumKernelPkgTestCase(KernelPkgTestCase, TestCase, LoaderModuleMockMixin): 29 """ 30 Test cases for salt.modules.kernelpkg_linux_yum 31 """ 32 33 _kernelpkg = kernelpkg 34 KERNEL_LIST = ["3.10.0-327.el7", "3.11.0-327.el7", "4.9.1-100.el7"] 35 LATEST = KERNEL_LIST[-1] 36 OS_ARCH = "x86_64" 37 OS_NAME = "RedHat" 38 OS_MAJORRELEASE = "7" 39 40 def setup_loader_modules(self): 41 return { 42 kernelpkg: { 43 "__grains__": { 44 "os": self.OS_NAME, 45 "osmajorrelease": self.OS_MAJORRELEASE, 46 "kernelrelease": "{}.{}".format(self.KERNEL_LIST[0], self.OS_ARCH), 47 }, 48 "__salt__": { 49 "pkg.normalize_name": pkg.normalize_name, 50 "pkg.upgrade": MagicMock(return_value={}), 51 "pkg.list_pkgs": MagicMock(return_value={}), 52 "pkg.version": MagicMock(return_value=self.KERNEL_LIST), 53 "system.reboot": MagicMock(return_value=None), 54 "config.get": MagicMock(return_value=True), 55 }, 56 }, 57 pkg: {"__grains__": {"osarch": self.OS_ARCH}}, 58 } 59 60 def test_list_installed(self): 61 """ 62 Test - Return the latest installed kernel version 63 """ 64 mock = MagicMock(return_value=self.KERNEL_LIST) 65 with patch.dict(self._kernelpkg.__salt__, {"pkg.version": mock}): 66 self.assertListEqual(self._kernelpkg.list_installed(), self.KERNEL_LIST) 67 68 def test_list_installed_none(self): 69 """ 70 Test - Return the latest installed kernel version 71 """ 72 mock = MagicMock(return_value=None) 73 with patch.dict(self._kernelpkg.__salt__, {"pkg.version": mock}): 74 self.assertListEqual(self._kernelpkg.list_installed(), []) 75 76 def test_remove_success(self): 77 """ 78 Test - remove kernel package 79 """ 80 mock = MagicMock(return_value={"retcode": 0, "stderr": []}) 81 with patch.dict(self._kernelpkg.__salt__, {"cmd.run_all": mock}): 82 with patch.object( 83 self._kernelpkg, "active", return_value=self.KERNEL_LIST[-1] 84 ): 85 with patch.object( 86 self._kernelpkg, "list_installed", return_value=self.KERNEL_LIST 87 ): 88 result = self._kernelpkg.remove(release=self.KERNEL_LIST[0]) 89 self.assertIn("removed", result) 90 target = "{}-{}".format( 91 self._kernelpkg._package_name(), self.KERNEL_LIST[0] 92 ) # pylint: disable=protected-access 93 self.assertListEqual(result["removed"], [target]) 94 95 def test_remove_error(self): 96 """ 97 Test - remove kernel package 98 """ 99 mock = MagicMock(return_value={"retcode": -1, "stderr": []}) 100 with patch.dict(self._kernelpkg.__salt__, {"cmd.run_all": mock}): 101 with patch.object( 102 self._kernelpkg, "active", return_value=self.KERNEL_LIST[-1] 103 ): 104 with patch.object( 105 self._kernelpkg, "list_installed", return_value=self.KERNEL_LIST 106 ): 107 self.assertRaises( 108 CommandExecutionError, 109 self._kernelpkg.remove, 110 release=self.KERNEL_LIST[0], 111 ) 112