From 40c3ec94b0057f990608a97dd07d043075763f6e Mon Sep 17 00:00:00 2001 From: Tristan Timblin Date: Thu, 18 Jan 2024 13:26:06 -0800 Subject: [PATCH] CEC-5591: strip out special characters in vehicle search (#496) --- src/components/Cars/List/useQuery.js | 2 ++ src/components/Cars/List/useQuery.test.jsx | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/components/Cars/List/useQuery.js b/src/components/Cars/List/useQuery.js index 48d353b..186a8e3 100644 --- a/src/components/Cars/List/useQuery.js +++ b/src/components/Cars/List/useQuery.js @@ -14,6 +14,8 @@ function parseVin(vin = "") { return [true, vin.replace(prefix, "")]; } + vin = vin.replace(/[^\p{L}\d]/gu, ''); + var re = new RegExp("^[A-HJ-NPR-Z0-9]{8}[0-9X][A-HJ-NPR-Z0-9]{2}[0-9]{6}$"); return [vin.match(re), vin]; } diff --git a/src/components/Cars/List/useQuery.test.jsx b/src/components/Cars/List/useQuery.test.jsx index fbf2e1b..04b8b7e 100644 --- a/src/components/Cars/List/useQuery.test.jsx +++ b/src/components/Cars/List/useQuery.test.jsx @@ -89,6 +89,22 @@ describe("useQuery", () => { ["test", "VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162", "test vin:VCF1EBE2008016235 vin:VCF1EBE20PG001002 vin:VCF1EBE20PG001162"] ], + [ + "parses a space separated search query with special characters", + "[ocean] pe@r a!aska r*nin", + ["[ocean] pe@r a!aska r*nin", "", "[ocean] pe@r a!aska r*nin"] + ], + [ + "parses a space separated vin query with special characters", + "[\"VCF1EBE2008016235\", \"VCF1EBE20PG001002\", \"VCF1EBE20PG001162\"]", + ["", "VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162", "vin:VCF1EBE2008016235 vin:VCF1EBE20PG001002 vin:VCF1EBE20PG001162"] + ], + [ + "parses a space separated mixed search and vin query with special characters", + "te$t VCF1EBE20@*(08016235 [VCF1EBE2]0PG001002 VCF*1EBE20PG001162", + ["te$t", "VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162", "te$t vin:VCF1EBE2008016235 vin:VCF1EBE20PG001002 vin:VCF1EBE20PG001162"] + ], + [ "trims extraneous values from search", "ocean,, , ,,,,pear,,, ",