Files
Pyra/tests/unit/test_chat_renderer.py
curo1305 6bb7c77692 test: add comprehensive coverage for cli, chat, renderer, dirs, install, paths
56 new tests covering previously untested modules:
- test_cli.py: memory write/read/append/list + plugin enable/disable + daemon stubs (via CliRunner)
- test_chat_history.py: ConversationHistory build_for_api, add_*/clear, _trim_to_budget
- test_chat_renderer.py: render_text_response return values, void render_* functions
- test_config_dirs.py: bootstrap idempotency, directory/template/vault/db creation
- test_plugin_install.py: list_bundled_plugins, read_manifest, install_bundled_plugin
- test_utils_paths.py: ensure_dir (nested, idempotent), safe_chmod

Total: 171 → 227 passing tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 20:16:25 +02:00

58 lines
1.8 KiB
Python

from pyra.security.injection import InjectionWarning
def test_render_text_response_passthrough():
from pyra.chat.renderer import render_text_response
result = render_text_response("Hello world")
assert result == "Hello world"
def test_render_text_response_redacts_api_key():
from pyra.chat.renderer import render_text_response
# anthropic-style key
result = render_text_response("key: sk-ant-api03-abcdefghijklmnopqrstuvwxyz123456")
assert "sk-ant" not in result
assert "[REDACTED]" in result
def test_render_text_response_empty_string():
from pyra.chat.renderer import render_text_response
result = render_text_response("")
assert result == ""
def test_render_text_response_whitespace_only():
from pyra.chat.renderer import render_text_response
result = render_text_response(" ")
assert result == " "
def test_render_error_no_exception():
from pyra.chat.renderer import render_error
render_error("Something went wrong")
def test_render_info_no_exception():
from pyra.chat.renderer import render_info
render_info("Informational message")
def test_render_system_no_exception():
from pyra.chat.renderer import render_system
render_system("System message")
def test_render_injection_warning_no_exception():
from pyra.chat.renderer import render_injection_warning
warnings = [InjectionWarning(pattern_label="instruction-override", matched_text="ignore all")]
render_injection_warning(warnings)
def test_render_injection_warning_multiple():
from pyra.chat.renderer import render_injection_warning
warnings = [
InjectionWarning(pattern_label="instruction-override", matched_text="ignore"),
InjectionWarning(pattern_label="jailbreak", matched_text="DAN mode"),
]
render_injection_warning(warnings)