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 @@ + + 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",