From 3bd56fff9e6ee385abe09a7dcc2402edd13f1425 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Wed, 12 May 2021 20:27:14 -0700 Subject: [PATCH] fix: Search query backslash replacement only touched first instance closes #2111 --- server/models/Document.js | 2 +- server/models/Document.test.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/server/models/Document.js b/server/models/Document.js index d0b165f49..daba170b9 100644 --- a/server/models/Document.js +++ b/server/models/Document.js @@ -248,7 +248,7 @@ type SearchOptions = { function escape(query: string): string { // replace "\" with escaped "\\" because sequelize.escape doesn't do it // https://github.com/sequelize/sequelize/issues/2950 - return sequelize.escape(query).replace("\\", "\\\\"); + return sequelize.escape(query).replace(/\\/g, "\\\\"); } Document.searchForTeam = async ( diff --git a/server/models/Document.test.js b/server/models/Document.test.js index d50e42de4..c57fee545 100644 --- a/server/models/Document.test.js +++ b/server/models/Document.test.js @@ -197,6 +197,12 @@ describe("#searchForTeam", () => { expect(results.length).toBe(0); }); + test("should handle backslashes in search term", async () => { + const team = await buildTeam(); + const { results } = await Document.searchForTeam(team, "\\\\"); + expect(results.length).toBe(0); + }); + test("should return the total count of search results", async () => { const team = await buildTeam(); const collection = await buildCollection({ teamId: team.id });