Add Memory Gateway agent plugin
This commit is contained in:
106
plugins/memory-gateway-agent/tests/test_tools.py
Normal file
106
plugins/memory-gateway-agent/tests/test_tools.py
Normal file
@ -0,0 +1,106 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from memory_gateway_plugin.tools import memory_append_episode, memory_feedback, memory_search, memory_upsert
|
||||
|
||||
|
||||
class FakeClient:
|
||||
def __init__(self):
|
||||
self.calls = []
|
||||
|
||||
def search_memory(self, payload):
|
||||
self.calls.append(("search", payload))
|
||||
return {"ok": True, "data": {"results": []}}
|
||||
|
||||
def append_episode(self, payload):
|
||||
self.calls.append(("append", payload))
|
||||
return {"ok": True, "data": payload}
|
||||
|
||||
def upsert_memory(self, payload):
|
||||
self.calls.append(("upsert", payload))
|
||||
return {"ok": True, "data": payload}
|
||||
|
||||
def send_feedback(self, memory_id, payload):
|
||||
self.calls.append(("feedback", memory_id, payload))
|
||||
return {"ok": True, "data": payload}
|
||||
|
||||
|
||||
def test_memory_search_empty_query_rejected():
|
||||
client = FakeClient()
|
||||
result = memory_search(query="", user_id="u", agent_id="a", client=client)
|
||||
|
||||
assert result["ok"] is False
|
||||
assert client.calls == []
|
||||
|
||||
|
||||
def test_append_episode_rejects_api_key():
|
||||
result = memory_append_episode(
|
||||
user_id="u",
|
||||
agent_id="a",
|
||||
session_id="s",
|
||||
episode_summary="api_key=sk-secret",
|
||||
client=FakeClient(),
|
||||
)
|
||||
|
||||
assert result["ok"] is False
|
||||
assert result["reason"] == "secret_like_content"
|
||||
|
||||
|
||||
def test_append_episode_rejects_password():
|
||||
result = memory_append_episode(
|
||||
user_id="u",
|
||||
agent_id="a",
|
||||
session_id="s",
|
||||
episode_summary="password=hunter2",
|
||||
client=FakeClient(),
|
||||
)
|
||||
|
||||
assert result["ok"] is False
|
||||
assert result["reason"] == "secret_like_content"
|
||||
|
||||
|
||||
def test_append_episode_rejects_raw_transcript():
|
||||
content = "\n".join(["User: hi", "Assistant: hello", "User: remember this", "Assistant: ok"])
|
||||
result = memory_append_episode(user_id="u", agent_id="a", session_id="s", episode_summary=content, client=FakeClient())
|
||||
|
||||
assert result["ok"] is False
|
||||
assert result["reason"] == "raw_chat_transcript"
|
||||
|
||||
|
||||
def test_append_episode_accepts_stable_preference():
|
||||
client = FakeClient()
|
||||
result = memory_append_episode(
|
||||
user_id="u",
|
||||
agent_id="a",
|
||||
session_id="s",
|
||||
episode_summary="用户稳定偏好:以后所有技术方案都使用中文输出。",
|
||||
tags=["preference"],
|
||||
client=client,
|
||||
)
|
||||
|
||||
assert result["ok"] is True
|
||||
assert client.calls[0][0] == "append"
|
||||
|
||||
|
||||
def test_upsert_uses_long_term_namespace_when_provided():
|
||||
client = FakeClient()
|
||||
namespace = "user/u/long_term"
|
||||
result = memory_upsert(
|
||||
user_id="u",
|
||||
agent_id="a",
|
||||
namespace=namespace,
|
||||
memory_type="preference",
|
||||
content="用户稳定偏好:使用中文输出。",
|
||||
client=client,
|
||||
)
|
||||
|
||||
assert result["ok"] is True
|
||||
assert client.calls[0][1]["namespace"] == namespace
|
||||
|
||||
|
||||
def test_feedback_calls_correct_endpoint():
|
||||
client = FakeClient()
|
||||
result = memory_feedback(user_id="u", agent_id="a", memory_id="mem_1", feedback="reject", client=client)
|
||||
|
||||
assert result["ok"] is True
|
||||
assert client.calls[0] == ("feedback", "mem_1", {"user_id": "u", "agent_id": "a", "feedback": "incorrect", "comment": None})
|
||||
|
||||
Reference in New Issue
Block a user