summaryrefslogtreecommitdiffhomepage
path: root/packages/browser/src/methods/startAttestation.test.ts
diff options
context:
space:
mode:
authorMatthew Miller <matthew@millerti.me>2020-06-02 15:50:11 -0700
committerGitHub <noreply@github.com>2020-06-02 15:50:11 -0700
commited960d81a9667d5cca2d444839f5ce63e2f38911 (patch)
tree2d9f2f8e7ce60a83e5409d073f74422bcc2df60e /packages/browser/src/methods/startAttestation.test.ts
parent743de54fa9b0cbef261cdbedf1c567c2202737cd (diff)
parentbb5e3e99f7e50b9cec607b4fda34dcbd1e04aae9 (diff)
Merge pull request #21 from MasterKale/feature/improve-browser
Refactor Megamix 1
Diffstat (limited to 'packages/browser/src/methods/startAttestation.test.ts')
-rw-r--r--packages/browser/src/methods/startAttestation.test.ts34
1 files changed, 17 insertions, 17 deletions
diff --git a/packages/browser/src/methods/startAttestation.test.ts b/packages/browser/src/methods/startAttestation.test.ts
index ae79235..bf6ab9b 100644
--- a/packages/browser/src/methods/startAttestation.test.ts
+++ b/packages/browser/src/methods/startAttestation.test.ts
@@ -1,5 +1,3 @@
-import base64js from 'base64-js';
-
import {
AttestationCredential,
PublicKeyCredentialCreationOptionsJSON,
@@ -38,7 +36,7 @@ const goodOpts1: PublicKeyCredentialCreationOptionsJSON = {
},
timeout: 1,
excludeCredentials: [{
- id: 'authIdentifier',
+ id: 'C0VGlvYFratUdAV1iCw-ULpUW8E-exHPXQChBfyVeJZCMfjMFcwDmOFgoMUz39LoMtCJUBW8WPlLkGT6q8qTCg',
type: 'public-key',
transports: ['internal'],
}],
@@ -64,19 +62,22 @@ test('should convert options before passing to navigator.credentials.create(...)
await startAttestation(goodOpts1);
const argsPublicKey = mockNavigatorCreate.mock.calls[0][0].publicKey;
+ const credId = argsPublicKey.excludeCredentials[0].id;
- expect(argsPublicKey.challenge).toEqual(toUint8Array(goodOpts1.challenge));
- expect(argsPublicKey.user.id).toEqual(toUint8Array(goodOpts1.user.id));
- expect(argsPublicKey.excludeCredentials).toEqual([{
- id: base64js.toByteArray('authIdentifier=='),
- type: 'public-key',
- transports: ['internal'],
- }])
+ // Make sure challenge and user.id are converted to Buffers
+ expect(JSON.stringify(argsPublicKey.challenge)).toEqual('{"0":102,"1":105,"2":122,"3":122}');
+ expect(JSON.stringify(argsPublicKey.user.id)).toEqual('{"0":53,"1":54,"2":55,"3":56}');
+
+ // Confirm construction of excludeCredentials array
+ expect(credId instanceof ArrayBuffer).toEqual(true);
+ expect(credId.byteLength).toEqual(64);
+ expect(argsPublicKey.excludeCredentials[0].type).toEqual('public-key');
+ expect(argsPublicKey.excludeCredentials[0].transports).toEqual(['internal']);
done();
});
-test('should return base64-encoded response values', async done => {
+test('should return base64url-encoded response values', async done => {
mockSupportsWebauthn.mockReturnValue(true);
mockNavigatorCreate.mockImplementation(
@@ -86,8 +87,8 @@ test('should return base64-encoded response values', async done => {
id: 'foobar',
rawId: toUint8Array('foobar'),
response: {
- attestationObject: base64js.toByteArray(mockAttestationObject),
- clientDataJSON: base64js.toByteArray(mockClientDataJSON),
+ attestationObject: Buffer.from(mockAttestationObject, 'ascii'),
+ clientDataJSON: Buffer.from(mockClientDataJSON, 'ascii'),
},
getClientExtensionResults: () => ({}),
type: 'webauthn.create',
@@ -98,10 +99,9 @@ test('should return base64-encoded response values', async done => {
const response = await startAttestation(goodOpts1);
- expect(response).toEqual({
- base64AttestationObject: mockAttestationObject,
- base64ClientDataJSON: mockClientDataJSON,
- });
+ expect(response.rawId).toEqual('Zm9vYmFy');
+ expect(response.response.attestationObject).toEqual('bW9ja0F0dGU');
+ expect(response.response.clientDataJSON).toEqual('bW9ja0NsaWU');
done();
});