1 | import decodeUrlQuery from './decodeUrlQuery';
|
2 | import qs from 'qs';
|
3 |
|
4 | describe('decodeUrlQuery', () => {
|
5 | it('with single value', () => {
|
6 | const stringValue = 'stringValue';
|
7 | const base64value = btoa(stringValue);
|
8 | const search = `?key=${base64value}`;
|
9 | const urlQuery = qs.parse(search, { ignoreQueryPrefix: true });
|
10 |
|
11 | const decodedUrlQuery = decodeUrlQuery({
|
12 | urlQuery,
|
13 | parametersToBeDecoded: ['key']
|
14 | });
|
15 |
|
16 | expect(Object.keys(decodedUrlQuery).length).toBe(1);
|
17 | expect(decodedUrlQuery['key']).toBe(stringValue);
|
18 | });
|
19 |
|
20 | it('with multiple values', () => {
|
21 | const stringValues = ['stringValue1', 'stringValue2', 'stringValue3'];
|
22 | const base64values = [btoa(stringValues[0]), btoa(stringValues[1])];
|
23 | const search = `?key1=${base64values[0]}&key2=${base64values[1]}&key3=${stringValues[2]}`;
|
24 | const urlQuery = qs.parse(search, { ignoreQueryPrefix: true });
|
25 |
|
26 | const decodedUrlQuery = decodeUrlQuery({
|
27 | urlQuery,
|
28 | parametersToBeDecoded: ['key1', 'key2']
|
29 | });
|
30 |
|
31 | expect(decodedUrlQuery).toMatchObject({
|
32 | key1: stringValues[0],
|
33 | key2: stringValues[1],
|
34 | key3: stringValues[2]
|
35 | });
|
36 | });
|
37 |
|
38 | it('did not decode urlQuery value, missed param', () => {
|
39 | const stringValues = ['stringValue1', 'stringValue2'];
|
40 | const base64values = [btoa(stringValues[0]), btoa(stringValues[1])];
|
41 | const search = `?key1=${base64values[0]}&key2=${base64values[1]}`;
|
42 | const urlQuery = qs.parse(search, { ignoreQueryPrefix: true });
|
43 |
|
44 | const decodedUrlQuery = decodeUrlQuery({
|
45 | urlQuery,
|
46 | parametersToBeDecoded: ['key1']
|
47 | });
|
48 |
|
49 | expect(decodedUrlQuery).toMatchObject({
|
50 | key1: stringValues[0],
|
51 | key2: base64values[1]
|
52 | });
|
53 | });
|
54 | });
|