From ace80fe5a14b336cb535f4eee1c95615895d8ebc Mon Sep 17 00:00:00 2001 From: coo1estguy <70365929+coolestcodeguy@users.noreply.github.com> Date: Sat, 19 Sep 2026 15:00:59 +0530 Subject: [PATCH] fix(api): remove redundant decodeURIComponent in deleteSuppression --- src/services/api/handlers.ts | 2 +- tests/api-suppressions.test.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/services/api/handlers.ts b/src/services/api/handlers.ts index b64f2aa..612305b 100644 --- a/src/services/api/handlers.ts +++ b/src/services/api/handlers.ts @@ -1840,7 +1840,7 @@ code{background:#f4f4f5;padding:.1rem .35rem;border-radius:4px} and( eq(suppressions.projectId, ctx.projectId!), eq(suppressions.channel, channel as any), - eq(suppressions.target, normaliseTarget(decodeURIComponent(target))), + eq(suppressions.target, normaliseTarget(target)), ), ); diff --git a/tests/api-suppressions.test.ts b/tests/api-suppressions.test.ts index 1a7bf9a..c08a429 100644 --- a/tests/api-suppressions.test.ts +++ b/tests/api-suppressions.test.ts @@ -272,6 +272,18 @@ describe("API compliance handlers", () => { expect(mockDb.deletes[0]!.table).toBe(suppressions); }); + it("handles targets with special characters correctly", async () => { + const res = createMockRes(); + await handlers.deleteSuppression( + createMockReq(), + res, + ctx({ params: { channel: "email", target: "alice+tag@example.com" } }), + ); + + expect(res.statusCode).toBe(204); + expect(mockDb.deletes).toHaveLength(1); + }); + it("400s when the channel or target segment is missing", async () => { const res = createMockRes(); await handlers.deleteSuppression(createMockReq(), res, ctx({ params: { channel: "email" } }));