summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2025-09-30 13:51:40 +0200
committerOskar <oskar@mullvad.net>2025-10-01 13:19:43 +0200
commit8be95ab1b1f1d91f390235beff7c5b42feee357d (patch)
tree6337d41f79df2132d1a790d4e4475e05375743d8
parent3c2b13593aaf9ca1a44e4a2566216cd5ed7020cd (diff)
downloadmullvadvpn-8be95ab1b1f1d91f390235beff7c5b42feee357d.tar.xz
mullvadvpn-8be95ab1b1f1d91f390235beff7c5b42feee357d.zip
Fix use of colon in routes
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/lib/path-helpers.ts8
-rw-r--r--desktop/packages/mullvad-vpn/test/unit/path-helpers.spec.ts3
2 files changed, 6 insertions, 5 deletions
diff --git a/desktop/packages/mullvad-vpn/test/e2e/lib/path-helpers.ts b/desktop/packages/mullvad-vpn/test/e2e/lib/path-helpers.ts
index 53986e7002..bd8593dc88 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/lib/path-helpers.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/lib/path-helpers.ts
@@ -29,10 +29,6 @@ function trimTrailingSlash(value: string): string {
// Match b against a where a can contain parameters
export function matchPaths(a: string | null, b: string | null): boolean {
- if (b?.includes(':')) {
- throw new Error('Only a is allowed to contain parameters');
- }
-
if (a === null || b === null) {
return a === b;
}
@@ -40,6 +36,10 @@ export function matchPaths(a: string | null, b: string | null): boolean {
const aParts = trimTrailingSlash(a).split('/');
const bParts = trimTrailingSlash(b).split('/');
+ if (bParts.some((part) => part.startsWith(':'))) {
+ throw new Error('Only first argument is allowed to contain dynamic route path segments');
+ }
+
return (
aParts.length >= bParts.length &&
aParts.every((aPart, i) => {
diff --git a/desktop/packages/mullvad-vpn/test/unit/path-helpers.spec.ts b/desktop/packages/mullvad-vpn/test/unit/path-helpers.spec.ts
index 807604d2ea..1c7a814453 100644
--- a/desktop/packages/mullvad-vpn/test/unit/path-helpers.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/unit/path-helpers.spec.ts
@@ -20,7 +20,8 @@ describe('E2E test path helper', () => {
expect(matchPaths('/a/b/c', 'a/b/c')).to.be.false;
expect(matchPaths('/a/b/:param', '/a/b')).to.be.false;
- expect(() => matchPaths('/a/b/c', '/a/b/:param')).to.throw();
+ expect(() => matchPaths('/a/b/c', '/a/b/:clock')).to.throw();
+ expect(() => matchPaths('/a/b/:clock', '/a/b/20:00')).not.to.throw();
});
it('should correctly replace parameters', () => {