mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 05:12:26 +00:00
* fix(channels): wire channel→agent handler and fix Telegram send pipeline * format code * add supported tests
57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
"""Tests for credential persistence module."""
|
|
|
|
import os
|
|
|
|
import pytest
|
|
|
|
from openjarvis.core.credentials import (
|
|
get_credential_status,
|
|
load_credentials,
|
|
save_credential,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def cred_path(tmp_path):
|
|
return tmp_path / "credentials.toml"
|
|
|
|
|
|
def test_save_and_load(cred_path):
|
|
save_credential("web_search", "TAVILY_API_KEY", "tvly-123", path=cred_path)
|
|
creds = load_credentials(path=cred_path)
|
|
assert creds["web_search"]["TAVILY_API_KEY"] == "tvly-123"
|
|
|
|
|
|
def test_save_sets_env(cred_path, monkeypatch):
|
|
monkeypatch.delenv("TAVILY_API_KEY", raising=False)
|
|
save_credential("web_search", "TAVILY_API_KEY", "tvly-abc", path=cred_path)
|
|
assert os.environ["TAVILY_API_KEY"] == "tvly-abc"
|
|
|
|
|
|
def test_save_rejects_unknown_key(cred_path):
|
|
with pytest.raises(ValueError, match="Unknown credential key"):
|
|
save_credential("web_search", "BOGUS_KEY", "val", path=cred_path)
|
|
|
|
|
|
def test_save_rejects_empty_value(cred_path):
|
|
with pytest.raises(ValueError, match="empty"):
|
|
save_credential("web_search", "TAVILY_API_KEY", " ", path=cred_path)
|
|
|
|
|
|
def test_get_status(cred_path, monkeypatch):
|
|
monkeypatch.setenv("TAVILY_API_KEY", "tvly-x")
|
|
status = get_credential_status("web_search")
|
|
assert status["TAVILY_API_KEY"] is True
|
|
|
|
|
|
def test_get_status_missing(monkeypatch):
|
|
monkeypatch.delenv("TAVILY_API_KEY", raising=False)
|
|
status = get_credential_status("web_search")
|
|
assert status["TAVILY_API_KEY"] is False
|
|
|
|
|
|
def test_file_permissions(cred_path):
|
|
save_credential("web_search", "TAVILY_API_KEY", "tvly-x", path=cred_path)
|
|
mode = oct(cred_path.stat().st_mode & 0o777)
|
|
assert mode == "0o600"
|