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())
|