From 14c9bbdc8696cb05e08b6ec8df1bbbcfa1d5ccf0 Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Tue, 25 Jun 2024 12:26:31 -0400 Subject: [PATCH 1/4] Encoding slashes --- src/helpers/url-query-string-encoder.js | 8 ++++++++ src/store/index.js | 8 ++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 src/helpers/url-query-string-encoder.js diff --git a/src/helpers/url-query-string-encoder.js b/src/helpers/url-query-string-encoder.js new file mode 100644 index 00000000..715991dd --- /dev/null +++ b/src/helpers/url-query-string-encoder.js @@ -0,0 +1,8 @@ +/** + * Replaces all instances of '/' with '%2F' + * @param {string} parameter + * @returns string with '/' replaced with '%2F' + */ +export default function encodeParameter(parameter) { + return parameter.split('/').join('%2F') +} \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js index 1570bf3b..4f6b210c 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -28,6 +28,7 @@ import partNumberStrings from '@/constants/part-number-strings'; import { getLineItemsFlattened } from '@/helpers/line-items-helper'; import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper'; import coverageType from '@/constants/coverage-type'; +import encodeParameter from '@/helpers/url-query-string-encoder'; const storeId = 'main'; @@ -477,17 +478,20 @@ export const useMainStore = defineStore({ }, getVehicleModels() { + const encodedMake = encodeParameter(this.order.vehicle.make); return globalMethods.callHttpClient({ method: endpoints.GetVehicleModels.method, - endpoint: `${endpoints.GetVehicleModels.url}/${this.order.vehicle.year}/${this.order.vehicle.make}`, + endpoint: `${endpoints.GetVehicleModels.url}/${this.order.vehicle.year}/${encodedMake}`, payload: {} }); }, getVehicleStyles() { + const encodedMake = encodeParameter(this.order.vehicle.make); + const encodedModel = encodeParameter(this.order.vehicle.model); return globalMethods.callHttpClient({ method: endpoints.GetVehicleStyles.method, - endpoint: `${endpoints.GetVehicleStyles.url}/${this.order.vehicle.year}/${this.order.vehicle.make}/${this.order.vehicle.model}`, + endpoint: `${endpoints.GetVehicleStyles.url}/${this.order.vehicle.year}/${encodedMake}/${encodedModel}`, payload: {} }); }, From 1dfbfe7ba5a3ba588a576dda458816835288623a Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Tue, 25 Jun 2024 13:55:48 -0400 Subject: [PATCH 2/4] Adding tests for encodere --- src/helpers/url-query-string-encoder.spec.js | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/helpers/url-query-string-encoder.spec.js diff --git a/src/helpers/url-query-string-encoder.spec.js b/src/helpers/url-query-string-encoder.spec.js new file mode 100644 index 00000000..1d11f7d6 --- /dev/null +++ b/src/helpers/url-query-string-encoder.spec.js @@ -0,0 +1,21 @@ +import encodeParameter from '@/helpers/url-query-string-encoder'; + +describe('url-query-string-encoder', () => { + describe('encodeParameter', () => { + test.each([ + ['', ''], + ['/', '%2F'], + ['// ', '%2F%2F '], + ['/ap ple', '%2Fap ple'], + ['ap/ple', 'ap%2Fple'], + ['apple /', 'apple %2F'], + ['//a/pp/le/', '%2F%2Fa%2Fpp%2Fle%2F'] + ])('Given %p returns %p', (input, expected) => { + // Act + var result = encodeParameter(input); + + // Assert + expect(result).toEqual(expected); + }) + }); +}) \ No newline at end of file From 47e644969da5e262f301e0aaefc9253b5c2448cf Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Tue, 25 Jun 2024 14:23:09 -0400 Subject: [PATCH 3/4] Using better existing method --- src/helpers/url-query-string-encoder.js | 8 -------- src/helpers/url-query-string-encoder.spec.js | 21 -------------------- src/store/index.js | 6 +++--- 3 files changed, 3 insertions(+), 32 deletions(-) delete mode 100644 src/helpers/url-query-string-encoder.js delete mode 100644 src/helpers/url-query-string-encoder.spec.js diff --git a/src/helpers/url-query-string-encoder.js b/src/helpers/url-query-string-encoder.js deleted file mode 100644 index 715991dd..00000000 --- a/src/helpers/url-query-string-encoder.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Replaces all instances of '/' with '%2F' - * @param {string} parameter - * @returns string with '/' replaced with '%2F' - */ -export default function encodeParameter(parameter) { - return parameter.split('/').join('%2F') -} \ No newline at end of file diff --git a/src/helpers/url-query-string-encoder.spec.js b/src/helpers/url-query-string-encoder.spec.js deleted file mode 100644 index 1d11f7d6..00000000 --- a/src/helpers/url-query-string-encoder.spec.js +++ /dev/null @@ -1,21 +0,0 @@ -import encodeParameter from '@/helpers/url-query-string-encoder'; - -describe('url-query-string-encoder', () => { - describe('encodeParameter', () => { - test.each([ - ['', ''], - ['/', '%2F'], - ['// ', '%2F%2F '], - ['/ap ple', '%2Fap ple'], - ['ap/ple', 'ap%2Fple'], - ['apple /', 'apple %2F'], - ['//a/pp/le/', '%2F%2Fa%2Fpp%2Fle%2F'] - ])('Given %p returns %p', (input, expected) => { - // Act - var result = encodeParameter(input); - - // Assert - expect(result).toEqual(expected); - }) - }); -}) \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js index 4f6b210c..f3b45468 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -478,7 +478,7 @@ export const useMainStore = defineStore({ }, getVehicleModels() { - const encodedMake = encodeParameter(this.order.vehicle.make); + const encodedMake = encodeURIComponent(this.order.vehicle.make); return globalMethods.callHttpClient({ method: endpoints.GetVehicleModels.method, endpoint: `${endpoints.GetVehicleModels.url}/${this.order.vehicle.year}/${encodedMake}`, @@ -487,8 +487,8 @@ export const useMainStore = defineStore({ }, getVehicleStyles() { - const encodedMake = encodeParameter(this.order.vehicle.make); - const encodedModel = encodeParameter(this.order.vehicle.model); + const encodedMake = encodeURIComponent(this.order.vehicle.make); + const encodedModel = encodeURIComponent(this.order.vehicle.model); return globalMethods.callHttpClient({ method: endpoints.GetVehicleStyles.method, endpoint: `${endpoints.GetVehicleStyles.url}/${this.order.vehicle.year}/${encodedMake}/${encodedModel}`, From 77a317e062a5fe0544bdf11eea3388694b5f7674 Mon Sep 17 00:00:00 2001 From: Michaela Brydon Date: Tue, 25 Jun 2024 14:23:57 -0400 Subject: [PATCH 4/4] Removing unused line --- src/store/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index f3b45468..40365998 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -28,7 +28,6 @@ import partNumberStrings from '@/constants/part-number-strings'; import { getLineItemsFlattened } from '@/helpers/line-items-helper'; import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper'; import coverageType from '@/constants/coverage-type'; -import encodeParameter from '@/helpers/url-query-string-encoder'; const storeId = 'main';