ansible/test/units/modules/test_service.py
Sam Doran 9a21e24778
get_distribution - Return distribution for all platforms (#71641)
Since moving to distro, it is possible to return this information for all platforms, not just Linux.
Also return version information for all platfrom not just Linux.
Update unit tests.
Remove some duplicate unit tests though I think there are more to remove.

* Fix docstring formatting

* Minor docstring changes

* Mock distro.id for Solaris service test

* Update comment
2021-06-11 10:22:18 -04:00

70 lines
2 KiB
Python

# Copyright: (c) 2021, Ansible Project
# Copyright: (c) 2021, Abhijeet Kasurde <akasurde@redhat.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import absolute_import, division, print_function
__metaclass__ = type
import json
import platform
import pytest
from ansible.modules import service
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.six import PY2
from units.modules.utils import set_module_args
def mocker_sunos_service(mocker):
"""
Configure common mocker object for SunOSService
"""
platform_system = mocker.patch.object(platform, "system")
platform_system.return_value = "SunOS"
get_bin_path = mocker.patch.object(AnsibleModule, "get_bin_path")
get_bin_path.return_value = "/usr/bin/svcs"
# Read a mocked /etc/release file
mocked_etc_release_data = mocker.mock_open(
read_data=" Oracle Solaris 12.0")
builtin_open = "__builtin__.open" if PY2 else "builtins.open"
mocker.patch(builtin_open, mocked_etc_release_data)
service_status = mocker.patch.object(
service.Service, "modify_service_state")
service_status.return_value = (0, "", "")
get_sunos_svcs_status = mocker.patch.object(
service.SunOSService, "get_sunos_svcs_status")
get_sunos_svcs_status.return_value = "offline"
get_service_status = mocker.patch.object(
service.Service, "get_service_status")
get_service_status.return_value = ""
mocker.patch('ansible.module_utils.common.sys_info.distro.id', return_value='')
@pytest.fixture
def mocked_sunos_service(mocker):
mocker_sunos_service(mocker)
def test_sunos_service_start(mocked_sunos_service, capfd):
"""
test SunOS Service Start
"""
set_module_args(
{
"name": "environment",
"state": "started",
}
)
with pytest.raises(SystemExit):
service.main()
out, dummy = capfd.readouterr()
results = json.loads(out)
assert not results.get("failed")
assert results["changed"]