fido2-lib
Version:
A library for performing FIDO 2.0 / WebAuthn functionality
46 lines (39 loc) • 1.89 kB
JavaScript
// 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");
});