diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-11-14 01:29:08 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-11-14 01:29:08 +0100 |
commit | 4df35bdcd9e57452bb7f5f5b73f9e52f3693a78f (patch) | |
tree | 6b135fe557438b7d77aa4f6400c1f4686c43fdd6 | |
parent | 3d79aba854ccdbc79e8b7145ca99d6e0803e66bc (diff) | |
download | wallet-core-4df35bdcd9e57452bb7f5f5b73f9e52f3693a78f.tar.xz |
add test for base url canonicalization and fix canonicalization bug
-rw-r--r-- | src/helpers-test.ts | 21 | ||||
-rw-r--r-- | src/helpers.ts | 2 | ||||
-rw-r--r-- | testlib/selenium/testhost.html | 2 | ||||
-rw-r--r-- | testlib/talertest.ts | 12 | ||||
-rw-r--r-- | tsconfig.json | 3 |
5 files changed, 37 insertions, 3 deletions
diff --git a/src/helpers-test.ts b/src/helpers-test.ts new file mode 100644 index 000000000..4aac5ebec --- /dev/null +++ b/src/helpers-test.ts @@ -0,0 +1,21 @@ +import {test, TestLib} from "testlib/talertest"; +import * as helpers from "./helpers"; + + +test("URL canonicalization", (t: TestLib) => { + // converts to relative, adds https + t.assertEqualsStrict( + "https://alice.example.com/exchange/", + helpers.canonicalizeBaseUrl("alice.example.com/exchange")) + + // keeps http, adds trailing slash + t.assertEqualsStrict( + "http://alice.example.com/exchange/", + helpers.canonicalizeBaseUrl("http://alice.example.com/exchange")) + + // keeps http, adds trailing slash + t.assertEqualsStrict( + "http://alice.example.com/exchange/", + helpers.canonicalizeBaseUrl("http://alice.example.com/exchange#foobar")) + t.pass(); +}); diff --git a/src/helpers.ts b/src/helpers.ts index 26cd350ee..2e7a701c3 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -50,7 +50,7 @@ export function canonicalizeBaseUrl(url: string) { x.protocol("https"); } x.path(x.path() + "/").normalizePath(); - x.fragment(); + x.fragment(""); x.query(); return x.href() } diff --git a/testlib/selenium/testhost.html b/testlib/selenium/testhost.html index fcc9394f2..01641547d 100644 --- a/testlib/selenium/testhost.html +++ b/testlib/selenium/testhost.html @@ -7,6 +7,8 @@ <script src="/testlib/selenium/escodegen.browser.js"></script> <script src="/testlib/selenium/instrumenter.js"></script> + <script src="/src/vendor/URI.js"></script> + <!-- for instrumentation to work, we have to use the non-csp version --> <script src="/testlib/selenium/system.js"></script> diff --git a/testlib/talertest.ts b/testlib/talertest.ts index 6012eb657..b602fca14 100644 --- a/testlib/talertest.ts +++ b/testlib/talertest.ts @@ -30,6 +30,7 @@ export interface TestLib { pass(msg?: string): void; fail(msg?: string): void; assert(v: any, msg?: string): void; + assertEqualsStrict(v1: any, v2: any, msg?: string): void; } let tests: Test[] = []; @@ -75,8 +76,17 @@ export async function run(statusCallback?: (m: string) => void) { throw Error("test failed"); } }; + let assertEqualsStrict = (v1: any, v2: any, msg?: string) => { + if (v1 !== v2) { + console.log(`# expected: ${v1}`); + console.log(`# actual: ${v2}`); + lastMsg = msg; + reject(); + throw Error("test failed"); + } + }; // Test might return a promise. If so, wait for it. - let r = t.testFn({pass,fail, assert}); + let r = t.testFn({pass,fail, assert, assertEqualsStrict}); r.then(() => resolve(), (e) => reject(e)); }); diff --git a/tsconfig.json b/tsconfig.json index 4daa17fbb..54ec05ca8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,8 +23,9 @@ "src/emscriptif-test.ts", "src/cryptoApi.ts", "decl/react-global.d.ts", - "src/types-test.ts", + "src/helpers-test.ts", "src/cryptoLib.ts", + "src/types-test.ts", "decl/chrome/chrome.d.ts", "src/cryptoWorker.ts", "src/db.ts", |