mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 14:07:55 +00:00
* fix(channels): wire channel→agent handler and fix Telegram send pipeline * format code * add supported tests
73 lines
2.3 KiB
Python
73 lines
2.3 KiB
Python
"""Tests for the ``jarvis vault`` CLI commands."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
from click.testing import CliRunner
|
|
|
|
from openjarvis.cli.vault_cmd import vault
|
|
|
|
|
|
class TestVaultCmd:
|
|
def test_vault_group_help(self) -> None:
|
|
result = CliRunner().invoke(vault, ["--help"])
|
|
assert result.exit_code == 0
|
|
assert "set" in result.output
|
|
assert "get" in result.output
|
|
assert "list" in result.output
|
|
assert "remove" in result.output
|
|
|
|
def test_vault_set_help(self) -> None:
|
|
result = CliRunner().invoke(vault, ["set", "--help"])
|
|
assert result.exit_code == 0
|
|
|
|
def test_vault_get_help(self) -> None:
|
|
result = CliRunner().invoke(vault, ["get", "--help"])
|
|
assert result.exit_code == 0
|
|
|
|
def test_vault_list_empty(self) -> None:
|
|
with mock.patch(
|
|
"openjarvis.cli.vault_cmd._VAULT_FILE",
|
|
Path("/nonexistent/vault.enc"),
|
|
):
|
|
result = CliRunner().invoke(vault, ["list"])
|
|
assert result.exit_code == 0
|
|
assert "empty" in result.output.lower()
|
|
|
|
def test_vault_roundtrip(self, tmp_path: Path) -> None:
|
|
pytest.importorskip("cryptography")
|
|
|
|
vault_file = tmp_path / "vault.enc"
|
|
key_file = tmp_path / ".vault_key"
|
|
|
|
with (
|
|
mock.patch("openjarvis.cli.vault_cmd._VAULT_FILE", vault_file),
|
|
mock.patch("openjarvis.cli.vault_cmd._VAULT_KEY_FILE", key_file),
|
|
mock.patch(
|
|
"openjarvis.cli.vault_cmd.DEFAULT_CONFIG_DIR",
|
|
tmp_path,
|
|
),
|
|
):
|
|
runner = CliRunner()
|
|
|
|
# Set a credential
|
|
result = runner.invoke(vault, ["set", "MY_API_KEY", "secret123"])
|
|
assert result.exit_code == 0
|
|
|
|
# Get it back
|
|
result = runner.invoke(vault, ["get", "MY_API_KEY"])
|
|
assert result.exit_code == 0
|
|
assert "secret123" in result.output
|
|
|
|
def test_vault_remove_not_found(self) -> None:
|
|
with mock.patch(
|
|
"openjarvis.cli.vault_cmd._VAULT_FILE",
|
|
Path("/nonexistent/vault.enc"),
|
|
):
|
|
result = CliRunner().invoke(vault, ["remove", "nonexistent"])
|
|
assert result.exit_code == 0
|
|
assert "not found" in result.output.lower()
|