mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-24 16:10:02 -06:00
cc212e552f
Previously there were no tests for `ipalib.misc` module. Fixes: https://pagure.io/freeipa/issue/8898 Signed-off-by: Stanislav Levin <slev@altlinux.org> Reviewed-By: Rob Crittenden <rcritten@redhat.com>
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
#
|
|
# Copyright (C) 2021 FreeIPA Contributors see COPYING for license
|
|
#
|
|
"""Test `plugins` plugin
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from ipalib import api, errors
|
|
from ipatests.test_xmlrpc.xmlrpc_test import XMLRPC_test
|
|
|
|
|
|
@pytest.mark.tier1
|
|
class TestPlugins(XMLRPC_test):
|
|
"""Test `plugins` plugin
|
|
"""
|
|
EXPECTED_KEYS = ("result", "count", "summary")
|
|
|
|
def run_plugins(self, *args, **options):
|
|
cmd = api.Command.plugins
|
|
cmd_result = cmd(*args, **options)
|
|
return cmd_result
|
|
|
|
def assert_result(self, cmd_result):
|
|
assert tuple(cmd_result.keys()) == self.EXPECTED_KEYS
|
|
result = cmd_result["result"]
|
|
assert isinstance(result, dict)
|
|
|
|
actual_count = cmd_result["count"]
|
|
assert isinstance(actual_count, int)
|
|
assert len(result) == actual_count
|
|
|
|
expected_summaries = (
|
|
f"{actual_count} plugin loaded", f"{actual_count} plugins loaded"
|
|
)
|
|
assert cmd_result["summary"] in expected_summaries
|
|
|
|
@pytest.mark.parametrize(
|
|
"server", [True, False, None], ids=["server", "local", "local_default"]
|
|
)
|
|
def test_plugins(self, server):
|
|
options = {}
|
|
if server is not None:
|
|
options = {"server": server}
|
|
cmd_result = self.run_plugins(**options)
|
|
self.assert_result(cmd_result)
|
|
assert cmd_result["count"] >= 1
|
|
|
|
@pytest.mark.parametrize("server", [True, False], ids=["server", "local"])
|
|
def test_plugins_with_nonexistent_argument(self, server):
|
|
with pytest.raises(errors.ZeroArgumentError):
|
|
self.run_plugins("nonexistentarg", server=server)
|
|
|
|
@pytest.mark.parametrize("server", [True, False], ids=["server", "local"])
|
|
def test_plugins_with_nonexistent_option(self, server):
|
|
with pytest.raises(errors.OptionError) as e:
|
|
self.run_plugins(
|
|
nonexistentoption="nonexistentoption", server=server
|
|
)
|
|
assert "Unknown option: nonexistentoption" in str(e.value)
|