kanidm/pykanidm/tests/test_config_loader.py

105 lines
2.8 KiB
Python
Raw Normal View History

""" tests the config file things """
import logging
from pathlib import Path
import sys
import pydantic
import pytest
from kanidm import KanidmClient
from kanidm.types import KanidmClientConfig
from kanidm.utils import load_config
logging.basicConfig(level=logging.DEBUG)
EXAMPLE_CONFIG_FILE = str(Path(__file__).parent.parent.parent / "examples/config_localhost")
@pytest.fixture(scope="function")
async def client() -> KanidmClient:
"""sets up a client with a basic thing"""
2022-09-29 02:08:15 +02:00
return KanidmClient(
uri="https://idm.example.com",
)
def test_load_config_file() -> None:
"""tests that the file loads"""
if not Path(EXAMPLE_CONFIG_FILE).expanduser().resolve().exists():
print("Can't find client config file", file=sys.stderr)
pytest.skip()
print("Loading config file")
config = load_config(EXAMPLE_CONFIG_FILE)
assert config.get("uri") == "https://localhost:8443"
print(f"{config.get('uri')=}")
print(config)
def test_load_missing_config_file() -> None:
"""tests that an error is raised"""
with pytest.raises(
FileNotFoundError,
match=EXAMPLE_CONFIG_FILE + "cheese",
):
load_config(EXAMPLE_CONFIG_FILE + "cheese")
def test_parse_config_validationerror(client: KanidmClient) -> None:
"""tests parse_config with a faulty input"""
testdict = {"verify_certificate": "that was weird."}
with pytest.raises(ValueError):
client.parse_config_data(config_data=testdict)
async def test_parse_config_data(client: KanidmClient) -> None:
"""tests parse_config with a valid input"""
2022-09-29 02:08:15 +02:00
testdict = {
"uri": "https://example.com",
"username": "testuser",
"password": "CraBzR0oL",
}
client.parse_config_data(config_data=testdict)
async def test_init_with_uri() -> None:
"""tests the class"""
2022-09-29 02:08:15 +02:00
testclient = KanidmClient(
uri="https://example.com",
)
assert testclient.config.uri == "https://example.com/"
def test_config_invalid_uri() -> None:
"""tests passing an invalid uri to the config parser"""
test_input = {
"uri": "asdfsadfasd",
}
with pytest.raises(pydantic.ValidationError):
2023-07-24 09:09:43 +02:00
KanidmClientConfig.model_validate(test_input)
def test_config_none_uri() -> None:
"""tests passing an invalid uri to the config parser"""
with pytest.raises(ValueError, match="Please initialize this with a server URI"):
KanidmClient(uri=None)
def test_config_loader_str() -> None:
"""tests passing an invalid uri to the config parser"""
with pytest.raises(FileNotFoundError):
KanidmClient(config_file="hello world")
def test_config_init() -> None:
"""tests passing config object"""
config = KanidmClientConfig(uri="https://idp.crabzrool.test")
assert KanidmClient(config=config)