def test_build_inventory(self, expected, run_command_side_effect, raises): self.mock_run_command.side_effect = run_command_side_effect set_module_args({"update_cache": True}) if raises: with pytest.raises(raises): P = pacman.Pacman(pacman.setup_module()) P._build_inventory() else: P = pacman.Pacman(pacman.setup_module()) assert P._build_inventory() == expected
def test_upgrade(self, mock_valid_inventory, check_mode_value, run_command_data, upgrade_extra_args): args = {"upgrade": True, "_ansible_check_mode": check_mode_value} if upgrade_extra_args: args["upgrade_extra_args"] = upgrade_extra_args set_module_args(args) if run_command_data and "return_value" in run_command_data: self.mock_run_command.return_value = run_command_data[ "return_value"] P = pacman.Pacman(pacman.setup_module()) with pytest.raises(AnsibleExitJson) as e: P.run() out = e.value.args[0] if check_mode_value: self.mock_run_command.call_count == 0 if run_command_data and "args" in run_command_data: self.mock_run_command.assert_called_with(mock.ANY, run_command_data["args"], check_rc=False) assert out["stdout"] == "stdout" assert out["stderr"] == "stderr" assert len(out["packages"]) == 1 and "sqlite" in out["packages"] assert out["changed"] assert out["diff"]["before"] and out["diff"]["after"]
def test_op_packages( self, mock_valid_inventory, mock_package_list, module_args, expected_packages, package_list_out, run_command_data, raises, ): set_module_args(module_args) self.mock_run_command.side_effect = run_command_data["side_effect"] mock_package_list.return_value = package_list_out P = pacman.Pacman(pacman.setup_module()) with pytest.raises(raises) as e: P.run() out = e.value.args[0] assert self.mock_run_command.mock_calls == run_command_data["calls"] if raises == AnsibleExitJson: assert out["packages"] == expected_packages assert out["changed"] assert "packages" in out assert "diff" in out else: assert out["stdout"] == "stdout" assert out["stderr"] == "stderr"
def test_update_db_check(self, mock_empty_inventory): set_module_args({"update_cache": True, "_ansible_check_mode": True}) P = pacman.Pacman(pacman.setup_module()) with pytest.raises(AnsibleExitJson) as e: P.run() self.mock_run_command.call_count == 0 out = e.value.args[0] assert out["changed"]
def test_upgrade_fail(self, mock_valid_inventory): set_module_args({"upgrade": True}) self.mock_run_command.return_value = [1, "stdout", "stderr"] P = pacman.Pacman(pacman.setup_module()) with pytest.raises(AnsibleFailJson) as e: P.run() self.mock_run_command.call_count == 1 out = e.value.args[0] assert out["failed"] assert out["stdout"] == "stdout" assert out["stderr"] == "stderr"
def test_fail(self, mock_empty_inventory): set_module_args({"update_cache": True}) P = pacman.Pacman(pacman.setup_module()) args = dict(msg="msg", stdout="something", stderr="somethingelse", cmd=["command", "with", "args"], rc=1) with pytest.raises(AnsibleFailJson) as e: P.fail(**args) assert all(item in e.value.args[0] for item in args)
def test_upgrade_check_empty_inventory(self, mock_empty_inventory, check_mode_value): set_module_args({ "upgrade": True, "_ansible_check_mode": check_mode_value }) P = pacman.Pacman(pacman.setup_module()) with pytest.raises(AnsibleExitJson) as e: P.run() self.mock_run_command.call_count == 0 out = e.value.args[0] assert "packages" not in out assert not out["changed"] assert "diff" not in out
def test_update_db(self, mock_empty_inventory, module_args, expected_call): args = {"update_cache": True} args.update(module_args) set_module_args(args) self.mock_run_command.return_value = [0, "stdout", "stderr"] with pytest.raises(AnsibleExitJson) as e: P = pacman.Pacman(pacman.setup_module()) P.run() self.mock_run_command.assert_called_with(mock.ANY, expected_call, check_rc=False) out = e.value.args[0] assert out["changed"]
def test_package_list(self, mock_valid_inventory, state, pkg_names, expected, run_command_data, raises): set_module_args({"name": pkg_names, "state": state}) P = pacman.Pacman(pacman.setup_module()) P.inventory = P._build_inventory() if run_command_data: self.mock_run_command.side_effect = run_command_data["side_effect"] if raises: with pytest.raises(raises): P.package_list() else: assert sorted(P.package_list()) == sorted(expected) if run_command_data: assert self.mock_run_command.mock_calls == run_command_data[ "calls"]
def test_op_packages_nothing_to_do(self, mock_valid_inventory, mock_package_list, check_mode_value, name, state, package_list): set_module_args({ "name": name, "state": state, "_ansible_check_mode": check_mode_value }) mock_package_list.return_value = package_list P = pacman.Pacman(pacman.setup_module()) with pytest.raises(AnsibleExitJson) as e: P.run() out = e.value.args[0] assert "packages" not in out assert not out["changed"] assert "diff" not in out self.mock_run_command.call_count == 0
def test_update_db(self, module_args, expected_calls, changed): args = {"update_cache": True} args.update(module_args) set_module_args(args) self.mock_run_command.side_effect = [ (rc, stdout, stderr) for expected_call, kwargs, rc, stdout, stderr in expected_calls ] with pytest.raises(AnsibleExitJson) as e: P = pacman.Pacman(pacman.setup_module()) P.run() self.mock_run_command.assert_has_calls([ mock.call(mock.ANY, expected_call, **kwargs) for expected_call, kwargs, rc, stdout, stderr in expected_calls ]) out = e.value.args[0] assert out["cache_updated"] == changed assert out["changed"] == changed
def test_success(self, mock_empty_inventory): set_module_args({"update_cache": True}) # Simplest args to let init go through P = pacman.Pacman(pacman.setup_module()) with pytest.raises(AnsibleExitJson) as e: P.success()