Esempio n. 1
0
    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
Esempio n. 2
0
    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"]
Esempio n. 3
0
    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"
Esempio n. 4
0
    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"]
Esempio n. 5
0
    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"
Esempio n. 6
0
    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)
Esempio n. 7
0
 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
Esempio n. 8
0
    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"]
Esempio n. 9
0
    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"]
Esempio n. 10
0
 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
Esempio n. 11
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
Esempio n. 12
0
 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()