aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-11-14 01:29:08 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-11-14 01:29:08 +0100
commit4df35bdcd9e57452bb7f5f5b73f9e52f3693a78f (patch)
tree6b135fe557438b7d77aa4f6400c1f4686c43fdd6
parent3d79aba854ccdbc79e8b7145ca99d6e0803e66bc (diff)
downloadwallet-core-4df35bdcd9e57452bb7f5f5b73f9e52f3693a78f.tar.gz
wallet-core-4df35bdcd9e57452bb7f5f5b73f9e52f3693a78f.tar.bz2
wallet-core-4df35bdcd9e57452bb7f5f5b73f9e52f3693a78f.zip
add test for base url canonicalization and fix canonicalization bug
-rw-r--r--src/helpers-test.ts21
-rw-r--r--src/helpers.ts2
-rw-r--r--testlib/selenium/testhost.html2
-rw-r--r--testlib/talertest.ts12
-rw-r--r--tsconfig.json3
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",