All tests passing babyyy !!
This commit is contained in:
@@ -46,7 +46,7 @@ async def create_machine(
|
||||
return MachineResponse(machine=Machine(name=machine.name, status=Status.UNKNOWN))
|
||||
|
||||
|
||||
@router.get("/api/machines/{name}")
|
||||
@router.get("/api/{flake_name}/machines/{name}")
|
||||
async def get_machine(name: str) -> MachineResponse:
|
||||
log.error("TODO")
|
||||
return MachineResponse(machine=Machine(name=name, status=Status.UNKNOWN))
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import os
|
||||
import signal
|
||||
import subprocess
|
||||
from typing import IO, Any, Dict, Iterator, List, Union
|
||||
from pathlib import Path
|
||||
from typing import IO, Any, Dict, Iterator, List, Optional, Union
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -19,6 +20,7 @@ class Command:
|
||||
stdin: _FILE = None,
|
||||
stdout: _FILE = None,
|
||||
stderr: _FILE = None,
|
||||
workdir: Optional[Path] = None,
|
||||
) -> subprocess.Popen[str]:
|
||||
env = os.environ.copy()
|
||||
env.update(extra_env)
|
||||
@@ -31,6 +33,7 @@ class Command:
|
||||
stderr=stderr,
|
||||
stdin=stdin,
|
||||
text=True,
|
||||
cwd=workdir,
|
||||
)
|
||||
self.processes.append(p)
|
||||
return p
|
||||
|
||||
@@ -6,6 +6,7 @@ from pathlib import Path
|
||||
from typing import Iterator, NamedTuple
|
||||
|
||||
import pytest
|
||||
from command import Command
|
||||
from root import CLAN_CORE
|
||||
|
||||
from clan_cli.dirs import nixpkgs_source
|
||||
@@ -40,6 +41,7 @@ def create_flake(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
temporary_home: Path,
|
||||
flake_name: FlakeName,
|
||||
command: Command,
|
||||
clan_core_flake: Path | None = None,
|
||||
machines: list[str] = [],
|
||||
remote: bool = False,
|
||||
@@ -67,6 +69,14 @@ def create_flake(
|
||||
flake_nix = flake / "flake.nix"
|
||||
# this is where we would install the sops key to, when updating
|
||||
substitute(flake_nix, clan_core_flake, flake)
|
||||
|
||||
# Init git
|
||||
command.run(["git", "init"], workdir=flake)
|
||||
command.run(["git", "add", "."], workdir=flake)
|
||||
command.run(["git", "config", "user.name", "clan-tool"], workdir=flake)
|
||||
command.run(["git", "config", "user.email", "clan@example.com"], workdir=flake)
|
||||
command.run(["git", "commit", "-a", "-m", "Initial commit"], workdir=flake)
|
||||
|
||||
if remote:
|
||||
with tempfile.TemporaryDirectory() as workdir:
|
||||
monkeypatch.chdir(workdir)
|
||||
@@ -80,28 +90,33 @@ def create_flake(
|
||||
|
||||
@pytest.fixture
|
||||
def test_flake(
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path, command: Command
|
||||
) -> Iterator[FlakeForTest]:
|
||||
yield from create_flake(monkeypatch, temporary_home, FlakeName("test_flake"))
|
||||
yield from create_flake(
|
||||
monkeypatch, temporary_home, FlakeName("test_flake"), command
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_flake_with_core(
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path, command: Command
|
||||
) -> Iterator[FlakeForTest]:
|
||||
if not (CLAN_CORE / "flake.nix").exists():
|
||||
raise Exception(
|
||||
"clan-core flake not found. This test requires the clan-core flake to be present"
|
||||
)
|
||||
yield from create_flake(
|
||||
monkeypatch, temporary_home, FlakeName("test_flake_with_core"), CLAN_CORE
|
||||
monkeypatch,
|
||||
temporary_home,
|
||||
FlakeName("test_flake_with_core"),
|
||||
command,
|
||||
CLAN_CORE,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_flake_with_core_and_pass(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
temporary_home: Path,
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path, command: Command
|
||||
) -> Iterator[FlakeForTest]:
|
||||
if not (CLAN_CORE / "flake.nix").exists():
|
||||
raise Exception(
|
||||
@@ -111,5 +126,6 @@ def test_flake_with_core_and_pass(
|
||||
monkeypatch,
|
||||
temporary_home,
|
||||
FlakeName("test_flake_with_core_and_pass"),
|
||||
command,
|
||||
CLAN_CORE,
|
||||
)
|
||||
|
||||
@@ -41,7 +41,7 @@ def test_import_sops(
|
||||
str(test_root.joinpath("data", "secrets.yaml")),
|
||||
test_flake.name,
|
||||
]
|
||||
repro_env_break(work_dir=test_flake.path, cmd=cmd)
|
||||
|
||||
cli.run(cmd)
|
||||
capsys.readouterr()
|
||||
cli.run(["secrets", "users", "list", test_flake.name])
|
||||
|
||||
@@ -7,9 +7,9 @@ def test_machines(api: TestClient, test_flake: FlakeForTest) -> None:
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {"machines": []}
|
||||
|
||||
# TODO: Fails because the test_flake fixture needs to init a git repo, which it currently does not
|
||||
response = api.post(f"/api/{test_flake.name}/machines", json={"name": "test"})
|
||||
assert response.status_code == 201
|
||||
|
||||
assert response.json() == {"machine": {"name": "test", "status": "unknown"}}
|
||||
|
||||
response = api.get(f"/api/{test_flake.name}/machines/test")
|
||||
@@ -91,13 +91,13 @@ def test_configure_machine(api: TestClient, test_flake: FlakeForTest) -> None:
|
||||
devices=["/dev/fake_disk"],
|
||||
),
|
||||
),
|
||||
f"/api/{test_flake.name}machines/machine1/config",
|
||||
|
||||
json=dict(
|
||||
clan=dict(
|
||||
jitsi=True,
|
||||
)
|
||||
),
|
||||
)
|
||||
))
|
||||
|
||||
# set some valid config
|
||||
config2 = dict(
|
||||
|
||||
@@ -2,20 +2,20 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from cli import Cli
|
||||
from fixtures_flakes import FlakeForTest
|
||||
|
||||
|
||||
def test_machine_subcommands(test_flake: Path, capsys: pytest.CaptureFixture) -> None:
|
||||
def test_machine_subcommands(test_flake: FlakeForTest, capsys: pytest.CaptureFixture) -> None:
|
||||
cli = Cli()
|
||||
cli.run(["machines", "create", "machine1"])
|
||||
cli.run(["machines", "create", "machine1", test_flake.name])
|
||||
|
||||
capsys.readouterr()
|
||||
cli.run(["machines", "list"])
|
||||
cli.run(["machines", "list", test_flake.name])
|
||||
out = capsys.readouterr()
|
||||
assert "machine1\n" == out.out
|
||||
|
||||
cli.run(["machines", "remove", "machine1"])
|
||||
cli.run(["machines", "delete", "machine1", test_flake.name])
|
||||
|
||||
capsys.readouterr()
|
||||
cli.run(["machines", "list"])
|
||||
cli.run(["machines", "list", test_flake.name])
|
||||
out = capsys.readouterr()
|
||||
assert "" == out.out
|
||||
|
||||
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING, Iterator
|
||||
import pytest
|
||||
from api import TestClient
|
||||
from cli import Cli
|
||||
from command import Command
|
||||
from fixtures_flakes import FlakeForTest, create_flake
|
||||
from httpx import SyncByteStream
|
||||
from root import CLAN_CORE
|
||||
@@ -17,12 +18,13 @@ if TYPE_CHECKING:
|
||||
|
||||
@pytest.fixture
|
||||
def flake_with_vm_with_secrets(
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path, command: Command
|
||||
) -> Iterator[FlakeForTest]:
|
||||
yield from create_flake(
|
||||
monkeypatch,
|
||||
temporary_home,
|
||||
FlakeName("test_flake_with_core_dynamic_machines"),
|
||||
command,
|
||||
CLAN_CORE,
|
||||
machines=["vm_with_secrets"],
|
||||
)
|
||||
@@ -30,12 +32,13 @@ def flake_with_vm_with_secrets(
|
||||
|
||||
@pytest.fixture
|
||||
def remote_flake_with_vm_without_secrets(
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path, command: Command
|
||||
) -> Iterator[FlakeForTest]:
|
||||
yield from create_flake(
|
||||
monkeypatch,
|
||||
temporary_home,
|
||||
FlakeName("test_flake_with_core_dynamic_machines"),
|
||||
command,
|
||||
CLAN_CORE,
|
||||
machines=["vm_without_secrets"],
|
||||
remote=True,
|
||||
|
||||
Reference in New Issue
Block a user