-
Notifications
You must be signed in to change notification settings - Fork 116
/
parseClientData.test.js
45 lines (39 loc) · 1.85 KB
/
parseClientData.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Testing lib
import * as chai from "chai";
// Helpers
import * as h from "./helpers/fido2-helpers.js";
// Test subject
import { parseClientResponse } from "../lib/main.js";
const { assert } = chai;
describe("parseClientData", function() {
it("correctly converts attestation JSON", function() {
const ret = parseClientResponse(h.lib.makeCredentialAttestationNoneResponse);
assert.instanceOf(ret, Map);
assert.strictEqual(ret.size, 6);
assert.strictEqual(ret.get("challenge"), "33EHav-jZ1v9qwH783aU-j0ARx6r5o-YHh-wd7C6jPbd7Wh6ytbIZosIIACehwf9-s6hXhySHO-HHUjEwZS29w");
// assert.deepEqual(ret.get("clientExtensions"), {});
// assert.strictEqual(ret.get("hashAlgorithm"), "SHA-256");
assert.strictEqual(ret.get("origin"), "https://localhost:8443");
assert.strictEqual(ret.get("type"), "webauthn.create");
assert.strictEqual(ret.get("tokenBinding", undefined));
assert.instanceOf(ret.get("rawClientDataJson"), ArrayBuffer);
// TODO: validate rawClientDataJson
});
it("correctly parses assertion JSON", function() {
const ret = parseClientResponse(h.lib.assertionResponse);
assert.instanceOf(ret, Map);
assert.strictEqual(ret.size, 6);
assert.strictEqual(ret.get("challenge"), "eaTyUNnyPDDdK8SNEgTEUvz1Q8dylkjjTimYd5X7QAo-F8_Z1lsJi3BilUpFZHkICNDWY8r9ivnTgW7-XZC3qQ");
// assert.deepEqual(ret.get("clientExtensions"), {});
// assert.strictEqual(ret.get("hashAlgorithm"), "SHA-256");
assert.strictEqual(ret.get("origin"), "https://localhost:8443");
assert.strictEqual(ret.get("type"), "webauthn.get");
assert.strictEqual(ret.get("tokenBinding", undefined));
assert.instanceOf(ret.get("rawClientDataJson"), ArrayBuffer);
// TODO: validate rawClientDataJson
});
it("throws error when args are wrong format");
it("throws when buffer doesn't contain JSON");
it("throws on malformatted JSON");
it("throws when buffer contains random data");
});