Files
OpenJarvis/tests/core/test_credentials.py
T
Prathap PandGitHub c2756964a7 fix(channels): wire channel→agent handler and fix Telegram send pipeline (#94)
* fix(channels): wire channel→agent handler and fix Telegram send pipeline

* format code

* add supported tests
2026-03-20 18:35:18 -07:00

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"