from __future__ import annotations

import os
from pathlib import Path

import pytest

from nutricoach_continuity.cli import Arguments, Command, parse_arguments, run
from nutricoach_continuity.sealer import seal

from .real_support import build_permission

pytestmark = pytest.mark.skipif(
    "NUTRICOACH_TEST_CUSTOMER_KEY_FILE" not in os.environ,
    reason="private installed-store customer fixture is unavailable",
)


def test_typed_cli_verify_loads_canonical_permission_package(tmp_path: Path) -> None:
    package = build_permission(tmp_path / "fixture")
    permission, preseal = tmp_path / "permission", tmp_path / "preseal"
    _ = seal(package, permission, preseal)
    arguments = parse_arguments(("verify", str(permission)))
    assert arguments == Arguments(Command.VERIFY, permission, None)
    assert run(arguments) == package.package_digest


def test_recovery_cli_rejects_approval_argument(tmp_path: Path) -> None:
    with pytest.raises(RuntimeError, match="approval"):
        _ = parse_arguments(("recover", str(tmp_path), "forbidden"))
