826f1d98fa
Add provisioning/config.py with read/write/wipe functions, update conftest.py with autouse CONFIG_PATH patch fixture, write 7 tests covering all acceptance criteria, and extend pyproject.toml per-file-ignores so conftest.py may import from provisioning. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
import json
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
import planemapper.provisioning.config as config_module
|
|
|
|
SAMPLE_CONFIG = {
|
|
"home_lat": 51.5074,
|
|
"home_lon": -0.1278,
|
|
"coverage_radius_nm": 100,
|
|
"wifi_ssid": "HomeNetwork",
|
|
"wifi_password": "s3cr3t",
|
|
"provisioned": False,
|
|
}
|
|
|
|
|
|
def test_read_raises_when_no_file_exists() -> None:
|
|
with pytest.raises(FileNotFoundError):
|
|
config_module.read()
|
|
|
|
|
|
def test_write_creates_file_with_correct_content(tmp_path: Path) -> None:
|
|
config_module.write(SAMPLE_CONFIG)
|
|
assert config_module.CONFIG_PATH.exists()
|
|
with config_module.CONFIG_PATH.open() as f:
|
|
data = json.load(f)
|
|
for key in (
|
|
"home_lat",
|
|
"home_lon",
|
|
"coverage_radius_nm",
|
|
"wifi_ssid",
|
|
"wifi_password",
|
|
"provisioned",
|
|
):
|
|
assert key in data
|
|
assert data["home_lat"] == 51.5074
|
|
assert data["wifi_ssid"] == "HomeNetwork"
|
|
assert data["provisioned"] is False
|
|
|
|
|
|
def test_write_then_read_round_trips() -> None:
|
|
config_module.write(SAMPLE_CONFIG)
|
|
result = config_module.read()
|
|
assert result == SAMPLE_CONFIG
|
|
|
|
|
|
def test_wipe_deletes_file() -> None:
|
|
config_module.write(SAMPLE_CONFIG)
|
|
assert config_module.CONFIG_PATH.exists()
|
|
config_module.wipe()
|
|
assert not config_module.CONFIG_PATH.exists()
|
|
|
|
|
|
def test_wipe_then_read_raises() -> None:
|
|
config_module.write(SAMPLE_CONFIG)
|
|
config_module.wipe()
|
|
with pytest.raises(FileNotFoundError):
|
|
config_module.read()
|
|
|
|
|
|
def test_wipe_is_idempotent() -> None:
|
|
# wipe on a non-existent file should not raise
|
|
config_module.wipe()
|
|
config_module.wipe()
|
|
|
|
|
|
def test_config_path_is_in_tmp_path(tmp_path: Path) -> None:
|
|
assert str(config_module.CONFIG_PATH).startswith(str(tmp_path))
|