fix: encode dynamic URL path segments (#5963)

Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai>
This commit is contained in:
VectorPeak
2026-07-07 16:11:54 +05:30
committed by GitHub
co-authored by kartik-mem0
parent 87276ef968
commit cc52f0e367
9 changed files with 374 additions and 39 deletions
@@ -71,4 +71,43 @@ describe("MemoryClient - deleteUser() (deprecated)", () => {
findFetchCall(mock, "/v1/entities/user/456/", "DELETE"),
).toBeDefined();
});
test("URL-encodes entity path segments", async () => {
const extra = new Map<string, { status: number; body: unknown }>();
extra.set("/v1/entities/team%2Ftype/org%2Fteam%3Factive%23frag/", {
status: 200,
body: { message: "Entity deleted successfully!" },
});
const mock = setupMockFetch(extra);
const client = new MemoryClient({ apiKey: TEST_API_KEY });
await client.deleteUser({
entity_id: "org/team?active#frag" as never,
entity_type: "team/type",
});
expect(
findFetchCall(
mock,
"/v1/entities/team%2Ftype/org%2Fteam%3Factive%23frag/",
"DELETE",
),
).toBeDefined();
});
});
describe("MemoryClient - deleteUsers()", () => {
test("URL-encodes entity path segments", async () => {
setupMockFetch();
const client = new MemoryClient({ apiKey: TEST_API_KEY });
client.telemetryId = "test@example.com";
const deleteMock = jest.fn().mockResolvedValue({});
client.client = { delete: deleteMock };
await client.deleteUsers({ userId: "org/team?active#frag" });
expect(deleteMock).toHaveBeenCalledWith(
"/v2/entities/user/org%2Fteam%3Factive%23frag/",
);
});
});