clan-core/pkgs/clan-cli/tests/test_create_flake.py

71 lines
2.0 KiB
Python
Raw Normal View History

import json
import subprocess
from pathlib import Path
import pytest
from api import TestClient
from cli import Cli
from clan_cli.flakes.create import DEFAULT_URL
from clan_cli.dirs import clan_flakes_dir, clan_data_dir
2023-09-22 17:17:45 +00:00
@pytest.fixture
def cli() -> Cli:
return Cli()
@pytest.mark.impure
def test_create_flake_api(
monkeypatch: pytest.MonkeyPatch, api: TestClient, temporary_home: Path
) -> None:
monkeypatch.chdir(clan_flakes_dir())
flake_name = "flake_dir"
flake_dir = clan_flakes_dir() / flake_name
response = api.post(
"/api/flake/create",
json=dict(
dest=str(flake_dir),
url=str(DEFAULT_URL),
),
)
assert response.status_code == 201, f"Failed to create flake {response.text}"
assert (flake_dir / ".clan-flake").exists()
assert (flake_dir / "flake.nix").exists()
@pytest.mark.impure
2023-10-04 09:01:12 +00:00
def test_create_flake(
2023-09-22 17:17:45 +00:00
monkeypatch: pytest.MonkeyPatch,
capsys: pytest.CaptureFixture,
temporary_home: Path,
2023-09-22 17:17:45 +00:00
cli: Cli,
) -> None:
monkeypatch.chdir(clan_flakes_dir())
flake_name = "flake_dir"
flake_dir = clan_flakes_dir() / flake_name
cli.run(["flakes", "create", flake_name])
assert (flake_dir / ".clan-flake").exists()
monkeypatch.chdir(flake_dir)
cli.run(["machines", "create", "machine1", flake_name])
capsys.readouterr() # flush cache
cli.run(["machines", "list", flake_name])
assert "machine1" in capsys.readouterr().out
flake_show = subprocess.run(
["nix", "flake", "show", "--json"],
check=True,
capture_output=True,
text=True,
)
flake_outputs = json.loads(flake_show.stdout)
try:
flake_outputs["nixosConfigurations"]["machine1"]
except KeyError:
pytest.fail("nixosConfigurations.machine1 not found in flake outputs")
2023-09-22 17:17:45 +00:00
# configure machine1
capsys.readouterr()
2023-10-19 23:20:40 +00:00
cli.run(["config", "--machine", "machine1", "services.openssh.enable", "", flake_name])
2023-09-22 17:17:45 +00:00
capsys.readouterr()
2023-10-19 23:20:40 +00:00
cli.run(["config", "--machine", "machine1", "services.openssh.enable", "true", flake_name])