API: Added /api/flake/list. Added API grouping and description for better visibility
This commit is contained in:
@@ -8,6 +8,8 @@ from pathlib import Path
|
||||
from typing import Iterator, NamedTuple
|
||||
|
||||
import pytest
|
||||
from pydantic import AnyUrl
|
||||
from pydantic.tools import parse_obj_as
|
||||
from root import CLAN_CORE
|
||||
|
||||
from clan_cli.dirs import nixpkgs_source
|
||||
@@ -117,6 +119,16 @@ def test_flake_with_core(
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_democlan_url(
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path
|
||||
) -> Iterator[AnyUrl]:
|
||||
yield parse_obj_as(
|
||||
AnyUrl,
|
||||
"https://git.clan.lol/clan/democlan/archive/main.tar.gz",
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def test_flake_with_core_and_pass(
|
||||
monkeypatch: pytest.MonkeyPatch, temporary_home: Path
|
||||
|
||||
@@ -8,6 +8,14 @@ from fixtures_flakes import FlakeForTest
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def test_list_flakes(api: TestClient, test_flake_with_core: FlakeForTest) -> None:
|
||||
response = api.get("/api/flake/list")
|
||||
assert response.status_code == 200, "Failed to list flakes"
|
||||
data = response.json()
|
||||
print("Data: ", data)
|
||||
assert data.get("flakes") == ["test_flake_with_core"]
|
||||
|
||||
|
||||
@pytest.mark.impure
|
||||
def test_inspect_ok(api: TestClient, test_flake_with_core: FlakeForTest) -> None:
|
||||
params = {"url": str(test_flake_with_core.path)}
|
||||
@@ -38,7 +46,7 @@ def test_inspect_err(api: TestClient) -> None:
|
||||
def test_inspect_flake(api: TestClient, test_flake_with_core: FlakeForTest) -> None:
|
||||
params = {"url": str(test_flake_with_core.path)}
|
||||
response = api.get(
|
||||
"/api/flake",
|
||||
"/api/flake/inspect",
|
||||
params=params,
|
||||
)
|
||||
assert response.status_code == 200, "Failed to inspect vm"
|
||||
|
||||
@@ -7,6 +7,7 @@ from api import TestClient
|
||||
from cli import Cli
|
||||
from fixtures_flakes import FlakeForTest, create_flake
|
||||
from httpx import SyncByteStream
|
||||
from pydantic import AnyUrl
|
||||
from root import CLAN_CORE
|
||||
|
||||
from clan_cli.types import FlakeName
|
||||
@@ -42,7 +43,7 @@ def remote_flake_with_vm_without_secrets(
|
||||
)
|
||||
|
||||
|
||||
def generic_create_vm_test(api: TestClient, flake: Path, vm: str) -> None:
|
||||
def generic_create_vm_test(api: TestClient, flake: Path | AnyUrl, vm: str) -> None:
|
||||
print(f"flake_url: {flake} ")
|
||||
response = api.post(
|
||||
"/api/vms/create",
|
||||
@@ -113,3 +114,18 @@ def test_create_remote(
|
||||
generic_create_vm_test(
|
||||
api, remote_flake_with_vm_without_secrets.path, "vm_without_secrets"
|
||||
)
|
||||
|
||||
|
||||
# TODO: We need a test that creates the same VM twice, and checks that the second time it fails
|
||||
|
||||
|
||||
# TODO: Democlan needs a machine called testVM, which is headless and gets executed by this test below
|
||||
# pytest -n0 -s tests/test_vms_api_create.py::test_create_from_democlan
|
||||
# @pytest.mark.skipif(not os.path.exists("/dev/kvm"), reason="Requires KVM")
|
||||
# @pytest.mark.impure
|
||||
# def test_create_from_democlan(
|
||||
# api: TestClient,
|
||||
# test_democlan_url: AnyUrl) -> None:
|
||||
# generic_create_vm_test(
|
||||
# api, test_democlan_url, "defaultVM"
|
||||
# )
|
||||
|
||||
Reference in New Issue
Block a user