Files
nexus-claude-api/tests/test_diagnostics.py

96 lines
3.2 KiB
Python
Raw Normal View History

from __future__ import annotations
import base64
from nexus_claude_api.diagnostics import summarize_messages_request
from nexus_claude_api.models import AnthropicMessagesRequest
def test_text_request_summary_omits_prompt_text() -> None:
payload = AnthropicMessagesRequest.model_validate(
{
"model": "claude-opus-4.6",
"messages": [{"role": "user", "content": "secret prompt"}],
"max_tokens": 32,
}
)
summary = summarize_messages_request(payload, correlation_id="corr-1")
assert summary["correlation_id"] == "corr-1"
assert summary["model"] == "claude-opus-4.6"
assert summary["backend_model"] == "claude-opus-4.6"
assert summary["stream"] is False
assert summary["message_count"] == 1
assert summary["content_block_types"] == {"text": 1}
assert "secret prompt" not in repr(summary)
def test_image_request_summary_omits_base64_and_records_size() -> None:
image_data = base64.b64encode(b"image-bytes").decode("ascii")
payload = AnthropicMessagesRequest.model_validate(
{
"model": "claude-opus-4.6",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "describe"},
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data,
},
},
],
}
],
"max_tokens": 32,
}
)
summary = summarize_messages_request(payload, correlation_id="corr-2")
assert summary["content_block_types"] == {"image": 1, "text": 1}
assert summary["images"] == [{"media_type": "image/png", "byte_size": 11}]
assert image_data not in repr(summary)
assert "image-bytes" not in repr(summary)
def test_tool_request_summary_omits_tool_inputs() -> None:
payload = AnthropicMessagesRequest.model_validate(
{
"model": "claude-opus-4.6",
"messages": [
{
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "toolu_1",
"name": "lookup_secret",
"input": {"api_key": "secret-tool-input"},
}
],
}
],
"tools": [
{
"name": "lookup_secret",
"input_schema": {"type": "object"},
}
],
"tool_choice": {"type": "tool", "name": "lookup_secret"},
"max_tokens": 32,
}
)
summary = summarize_messages_request(payload, correlation_id="corr-3")
assert summary["tools"] == {"count": 1, "names": ["lookup_secret"]}
assert summary["tool_choice_type"] == "tool"
assert "secret-tool-input" not in repr(summary)
assert "api_key" not in repr(summary)