69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
import json
|
|
from pathlib import Path
|
|
|
|
from pytest import MonkeyPatch
|
|
|
|
from archinstall.lib.args import ArchConfigHandler
|
|
from archinstall.lib.configuration import ConfigurationOutput
|
|
|
|
|
|
def test_user_config_roundtrip(
|
|
monkeypatch: MonkeyPatch,
|
|
config_fixture: Path,
|
|
) -> None:
|
|
monkeypatch.setattr("sys.argv", ["archinstall", "--config", str(config_fixture)])
|
|
|
|
handler = ArchConfigHandler()
|
|
arch_config = handler.config
|
|
|
|
# the version is retrieved dynamically from an installed archinstall package
|
|
# as there is no version present in the test environment we'll set it manually
|
|
arch_config.version = "3.0.2"
|
|
|
|
config_output = ConfigurationOutput(arch_config)
|
|
|
|
test_out_dir = Path("/tmp/")
|
|
test_out_file = test_out_dir / config_output.user_configuration_file
|
|
|
|
config_output.save(test_out_dir)
|
|
|
|
result = json.loads(test_out_file.read_text())
|
|
expected = json.loads(config_fixture.read_text())
|
|
|
|
# the parsed config will check if the given device exists otherwise
|
|
# it will ignore the modification; as this test will run on various local systems
|
|
# and the CI pipeline there's no good way specify a real device so we'll simply
|
|
# copy the expected result to the actual result
|
|
result["disk_config"]["config_type"] = expected["disk_config"]["config_type"]
|
|
result["disk_config"]["device_modifications"] = expected["disk_config"]["device_modifications"]
|
|
|
|
assert json.dumps(
|
|
result["mirror_config"],
|
|
sort_keys=True,
|
|
) == json.dumps(
|
|
expected["mirror_config"],
|
|
sort_keys=True,
|
|
)
|
|
|
|
|
|
def test_creds_roundtrip(
|
|
monkeypatch: MonkeyPatch,
|
|
creds_fixture: Path,
|
|
) -> None:
|
|
monkeypatch.setattr("sys.argv", ["archinstall", "--creds", str(creds_fixture)])
|
|
|
|
handler = ArchConfigHandler()
|
|
arch_config = handler.config
|
|
|
|
config_output = ConfigurationOutput(arch_config)
|
|
|
|
test_out_dir = Path("/tmp/")
|
|
test_out_file = test_out_dir / config_output.user_credentials_file
|
|
|
|
config_output.save(test_out_dir, creds=True)
|
|
|
|
result = json.loads(test_out_file.read_text())
|
|
expected = json.loads(creds_fixture.read_text())
|
|
|
|
assert sorted(result.items()) == sorted(expected.items())
|