mirror of
https://github.com/Katakate/k7.git
synced 2026-09-22 01:53:19 +00:00
76a8139774
HTTPS-by-default for k7-api, cluster-wide Cilium isolation, first-class --docker on Kata and k7d, and RuntimeClass k7-fc. Playbook pins k7d 0.6.0.
80 lines
2.7 KiB
Python
80 lines
2.7 KiB
Python
"""CLI tests for --docker / --docker-disk and the --sidecar docker alias."""
|
|
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
from typer.testing import CliRunner
|
|
|
|
from k7.cli.k7 import app
|
|
from k7.core.models import OperationResult
|
|
|
|
runner = CliRunner()
|
|
|
|
|
|
def _mock_create():
|
|
fake = AsyncMock(return_value=OperationResult(success=True, message="created"))
|
|
patcher = patch("k7.cli.k7.K7Core")
|
|
core_cls = patcher.start()
|
|
core_cls.return_value.create_sandbox = fake
|
|
core_cls.return_value.list_sandboxes = AsyncMock(return_value=[])
|
|
return patcher, fake
|
|
|
|
|
|
def _config_for(args: list[str]):
|
|
patcher, fake = _mock_create()
|
|
try:
|
|
result = runner.invoke(app, ["--core", "create", *args])
|
|
finally:
|
|
patcher.stop()
|
|
return result, fake
|
|
|
|
|
|
def test_docker_flag_sets_config():
|
|
result, fake = _config_for(["demo", "ubuntu:24.04", "--docker", "--backend", "k7d"])
|
|
assert result.exit_code == 0, result.output
|
|
cfg = fake.await_args.args[0]
|
|
assert cfg.docker is True
|
|
assert cfg.sidecar is None
|
|
assert cfg.docker_disk is None
|
|
|
|
|
|
def test_docker_disk_requires_docker():
|
|
result, _ = _config_for(["demo", "ubuntu:24.04", "--docker-disk", "40Gi", "--backend", "k7d"])
|
|
assert result.exit_code != 0
|
|
assert "docker-disk" in result.output.lower() or "docker-disk" in (result.exception and str(result.exception) or "")
|
|
|
|
|
|
def test_docker_disk_forwarded():
|
|
result, fake = _config_for(["demo", "ubuntu:24.04", "--docker", "--docker-disk", "40Gi", "--backend", "k7d"])
|
|
assert result.exit_code == 0, result.output
|
|
cfg = fake.await_args.args[0]
|
|
assert cfg.docker is True
|
|
assert cfg.docker_disk == "40Gi"
|
|
|
|
|
|
def test_sidecar_docker_alias_warns_and_maps():
|
|
result, fake = _config_for(["demo", "ubuntu:24.04", "--sidecar", "docker", "--backend", "k7d"])
|
|
assert result.exit_code == 0, result.output
|
|
assert "deprecated" in result.output.lower()
|
|
cfg = fake.await_args.args[0]
|
|
assert cfg.docker is True
|
|
assert cfg.sidecar is None
|
|
|
|
|
|
def test_sidecar_docker_alias_on_kata_maps_to_docker():
|
|
result, fake = _config_for(["demo", "ubuntu:24.04", "--sidecar", "docker", "--backend", "kata-qemu-longhorn"])
|
|
assert result.exit_code == 0, result.output
|
|
assert "deprecated" in result.output.lower()
|
|
cfg = fake.await_args.args[0]
|
|
assert cfg.docker is True
|
|
assert cfg.sidecar is None
|
|
assert cfg.backend == "kata-qemu-longhorn"
|
|
|
|
|
|
def test_unknown_sidecar_lists_non_docker_types():
|
|
result, _ = _config_for(["demo", "ubuntu:24.04", "--sidecar", "nosuch"])
|
|
assert result.exit_code != 0
|
|
text = result.output + (str(result.exception) if result.exception else "")
|
|
assert "nosuch" in text
|
|
assert "Available: docker" not in text
|
|
assert "--docker" in text or "no non-docker" in text
|