def test_call_success_parameters(): """Test transactional_update.chroot when succeed with parameters""" utils_mock = { "json.find_json": MagicMock(return_value={"return": "result"}), } salt_mock = { "cmd.run_all": MagicMock(return_value={ "retcode": 0, "stdout": "" }), } with patch.dict(tu.__utils__, utils_mock), patch.dict(tu.__salt__, salt_mock): assert tu.call("module.function", key="value") == "result" salt_mock["cmd.run_all"].assert_called_with([ "transactional-update", "--non-interactive", "--drop-if-no-change", "--no-selfupdate", "--continue", "--quiet", "run", "salt-call", "--out", "json", "-l", "quiet", "--no-return-event", "--", "module.function", "key=value", ])
def test_call_fails_function(self, mkdtemp): """Test transactional_update.chroot when fails the function""" mkdtemp.return_value = "/var/cache/salt/minion/tmp01" utils_mock = { "thin.gen_thin": MagicMock(return_value="/salt-thin.tgz"), "files.rm_rf": MagicMock(), "json.find_json": MagicMock(side_effect=ValueError()), } opts_mock = {"cachedir": "/var/cache/salt/minion"} salt_mock = { "cmd.run": MagicMock(return_value=""), "config.option": MagicMock(), "cmd.run_all": MagicMock(return_value={ "retcode": 0, "stdout": "Not found", "stderr": "" }), } with patch.dict(tu.__utils__, utils_mock), patch.dict( tu.__opts__, opts_mock), patch.dict(tu.__salt__, salt_mock): assert tu.call("test.ping") == { "result": False, "retcode": 1, "comment": "Not found", } utils_mock["thin.gen_thin"].assert_called_once() salt_mock["config.option"].assert_called() salt_mock["cmd.run"].assert_called_once() salt_mock["cmd.run_all"].assert_called_with([ "transactional-update", "--non-interactive", "--drop-if-no-change", "--no-selfupdate", "--continue", "--quiet", "run", "python{}".format(sys.version_info[0]), "/var/cache/salt/minion/tmp01/salt-call", "--metadata", "--local", "--log-file", "/var/cache/salt/minion/tmp01/log", "--cachedir", "/var/cache/salt/minion/tmp01/cache", "--out", "json", "-l", "quiet", "--", "test.ping", ]) utils_mock["files.rm_rf"].assert_called_once()
def test_call_success_reboot(): """Test transactional_update.chroot when succeed and reboot""" pending_transaction_mock = MagicMock(return_value=True) reboot_mock = MagicMock() utils_mock = { "thin.gen_thin": MagicMock(return_value="/salt-thin.tgz"), "files.rm_rf": MagicMock(), "json.find_json": MagicMock(return_value={"return": "result"}), } opts_mock = {"cachedir": "/var/cache/salt/minion"} salt_mock = { "cmd.run": MagicMock(return_value=""), "config.option": MagicMock(), "cmd.run_all": MagicMock(return_value={ "retcode": 0, "stdout": "" }), } with patch.dict(tu.__utils__, utils_mock), patch.dict( tu.__opts__, opts_mock), patch.dict(tu.__salt__, salt_mock), patch( "salt.modules.transactional_update.pending_transaction", pending_transaction_mock, ), patch("salt.modules.transactional_update.reboot", reboot_mock): assert (tu.call("transactional_update.dup", activate_transaction=True) == "result") utils_mock["thin.gen_thin"].assert_called_once() salt_mock["config.option"].assert_called() salt_mock["cmd.run"].assert_called_once() salt_mock["cmd.run_all"].assert_called_with([ "transactional-update", "--non-interactive", "--drop-if-no-change", "--no-selfupdate", "--continue", "--quiet", "run", "python{}".format(sys.version_info[0]), "/var/cache/salt/minion/tmp01/salt-call", "--metadata", "--local", "--log-file", "/var/cache/salt/minion/tmp01/log", "--cachedir", "/var/cache/salt/minion/tmp01/cache", "--out", "json", "-l", "quiet", "--", "transactional_update.dup", ]) utils_mock["files.rm_rf"].assert_called_once() pending_transaction_mock.assert_called_once() reboot_mock.assert_called_once()
def test_call_success_parameters(self, mkdtemp): """Test transactional_update.chroot when succeed with parameters""" mkdtemp.return_value = "/var/cache/salt/minion/tmp01" utils_mock = { "thin.gen_thin": MagicMock(return_value="/salt-thin.tgz"), "files.rm_rf": MagicMock(), "json.find_json": MagicMock(return_value={"return": "result"}), } opts_mock = {"cachedir": "/var/cache/salt/minion"} salt_mock = { "cmd.run": MagicMock(return_value=""), "config.option": MagicMock(), "cmd.run_all": MagicMock(return_value={ "retcode": 0, "stdout": "" }), } with patch.dict(tu.__utils__, utils_mock), patch.dict( tu.__opts__, opts_mock), patch.dict(tu.__salt__, salt_mock): assert tu.call("module.function", key="value") == "result" utils_mock["thin.gen_thin"].assert_called_once() salt_mock["config.option"].assert_called() salt_mock["cmd.run"].assert_called_once() salt_mock["cmd.run_all"].assert_called_with([ "transactional-update", "--non-interactive", "--drop-if-no-change", "--no-selfupdate", "--continue", "--quiet", "run", "python{}".format(sys.version_info[0]), "/var/cache/salt/minion/tmp01/salt-call", "--metadata", "--local", "--log-file", "/var/cache/salt/minion/tmp01/log", "--cachedir", "/var/cache/salt/minion/tmp01/cache", "--out", "json", "-l", "quiet", "--", "module.function", "key=value", ]) utils_mock["files.rm_rf"].assert_called_once()
def test_call_success_reboot(): """Test transactional_update.chroot when succeed and reboot""" pending_transaction_mock = MagicMock(return_value=True) reboot_mock = MagicMock() utils_mock = { "json.find_json": MagicMock(return_value={"return": "result"}), } salt_mock = { "cmd.run_all": MagicMock(return_value={ "retcode": 0, "stdout": "" }), } with patch.dict(tu.__utils__, utils_mock), patch.dict( tu.__salt__, salt_mock), patch.dict(tu.__salt__, salt_mock), patch( "salt.modules.transactional_update.pending_transaction", pending_transaction_mock, ), patch("salt.modules.transactional_update.reboot", reboot_mock): assert (tu.call("transactional_update.dup", activate_transaction=True) == "result") salt_mock["cmd.run_all"].assert_called_with([ "transactional-update", "--non-interactive", "--drop-if-no-change", "--no-selfupdate", "--continue", "--quiet", "run", "salt-call", "--out", "json", "-l", "quiet", "--no-return-event", "--", "transactional_update.dup", ]) pending_transaction_mock.assert_called_once() reboot_mock.assert_called_once()
def test_call_fails_untar(): """Test transactional_update.call when tar fails""" utils_mock = { "thin.gen_thin": MagicMock(return_value="/salt-thin.tgz"), "files.rm_rf": MagicMock(), } opts_mock = {"cachedir": "/var/cache/salt/minion"} salt_mock = { "cmd.run": MagicMock(return_value="Error"), "config.option": MagicMock(), } with patch.dict(tu.__utils__, utils_mock), patch.dict( tu.__opts__, opts_mock), patch.dict(tu.__salt__, salt_mock): assert tu.call("/chroot", "test.ping") == { "result": False, "comment": "Error", } utils_mock["thin.gen_thin"].assert_called_once() salt_mock["config.option"].assert_called() salt_mock["cmd.run"].assert_called_once() utils_mock["files.rm_rf"].assert_called_once()
def test_call_fails_function(): """Test transactional_update.chroot when fails the function""" utils_mock = { "json.find_json": MagicMock(side_effect=ValueError()), } salt_mock = { "cmd.run_all": MagicMock(return_value={ "retcode": 0, "stdout": "Not found", "stderr": "" }), } with patch.dict(tu.__utils__, utils_mock), patch.dict(tu.__salt__, salt_mock): assert tu.call("test.ping") == { "result": False, "retcode": 1, "comment": "Not found", } salt_mock["cmd.run_all"].assert_called_with([ "transactional-update", "--non-interactive", "--drop-if-no-change", "--no-selfupdate", "--continue", "--quiet", "run", "salt-call", "--out", "json", "-l", "quiet", "--no-return-event", "--", "test.ping", ])
def test_call_fails_input_validation(): """Test transactional_update.call missing function name""" with pytest.raises(CommandExecutionError): tu.call("")