Files
k7/tests/unit/test_cli_docker.py
T
G 76a8139774 Release 0.3.0
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.
2026-09-13 17:30:37 +02:00

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