diff --git a/packages/strapi-utils/lib/__tests__/stringFormatting.test.js b/packages/strapi-utils/lib/__tests__/stringFormatting.test.js new file mode 100644 index 0000000000..2ebe5cafd4 --- /dev/null +++ b/packages/strapi-utils/lib/__tests__/stringFormatting.test.js @@ -0,0 +1,25 @@ +const { escapeQuery } = require('../stringFormatting'); + +describe('Escape Query', () => { + const testData = [ + // [query, charsToEscape, escapeChar, expectedResult] + ['123', '[%\\', '\\', '123'], + ['12%3', '[%\\', '\\', '12\\%3'], + ['1[2%3', '[%\\', '\\', '1\\[2\\%3'], + ['1\\23', '[%\\', '\\', '1\\\\23'], + ['123\\', '[%\\', '\\', '123\\\\'], + ['\\', '[%\\', '\\', '\\\\'], + ['123', '[%\\', '+', '123'], + ['12%3', '[%\\', '+', '12+%3'], + ['1[2%3', '[%\\', '+', '1+[2+%3'], + ['1\\23', '[%\\', '+', '1+\\23'], + ]; + + test.each(testData)( + 'Escaping %s from %s with %s', + (query, charsToEscape, escapeChar, expectedResult) => { + const result = escapeQuery(query, charsToEscape, escapeChar); + expect(result).toEqual(expectedResult); + } + ); +}); diff --git a/packages/strapi-utils/lib/stringFormatting.js b/packages/strapi-utils/lib/stringFormatting.js index 553b2e1c83..691e0831e4 100644 --- a/packages/strapi-utils/lib/stringFormatting.js +++ b/packages/strapi-utils/lib/stringFormatting.js @@ -6,13 +6,13 @@ const nameToSlug = name => slugify(name, { separator: '-' }); const nameToCollectionName = name => slugify(name, { separator: '_' }); -const escapeQuery = (query, charsToEscape, espaceChar = '\\') => { +const escapeQuery = (query, charsToEscape, escapeChar = '\\') => { return query .split('') .reduce( (escapedQuery, char) => charsToEscape.includes(char) - ? `${escapedQuery}${espaceChar}${char}` + ? `${escapedQuery}${escapeChar}${char}` : `${escapedQuery}${char}`, '' );