Skip to content

Commit a17758d

Browse files
committed
Fix link-handling unit tests
1 parent 00a73c9 commit a17758d

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

app/core/DeeplinkManager/ParseManager/utils/verifySignature.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ function canonicalize(url: URL): string {
3535
const sigParams = url.searchParams.get('sig_params');
3636

3737
let params;
38-
if (sigParams) {
38+
if (sigParams === '') {
39+
// Legacy behavior: empty sig_params means only include sig_params itself
40+
params = new URLSearchParams();
41+
params.append('sig_params', '');
42+
} else if (sigParams) {
3943
const allowedParams = sigParams.split(',');
4044
params = new URLSearchParams();
4145

@@ -47,24 +51,16 @@ function canonicalize(url: URL): string {
4751
}
4852

4953
params.append('sig_params', sigParams);
54+
params.sort();
5055
} else {
56+
// Backward compatibility: sign all params if there are no sig_params
57+
// clone the searchParams so we don't edit the original URL when deleting `sig`
5158
params = new URLSearchParams(url.searchParams);
5259
params.delete('sig');
60+
params.sort();
5361
}
5462

55-
const paramsArray = Array.from(params.entries());
56-
paramsArray.sort((a, b) => {
57-
if (a[0] < b[0]) return -1;
58-
if (a[0] > b[0]) return 1;
59-
return 0;
60-
});
61-
62-
const queryString = paramsArray
63-
.map(
64-
([key, value]) =>
65-
`${encodeURIComponent(key)}=${encodeURIComponent(value)}`,
66-
)
67-
.join('&');
63+
const queryString = params.toString();
6864

6965
const result =
7066
url.origin + url.pathname + (queryString ? `?${queryString}` : '');

0 commit comments

Comments
 (0)