diff options
Diffstat (limited to 'packages/server/src')
-rw-r--r-- | packages/server/src/assertion/generateAssertionOptions.test.ts | 19 | ||||
-rw-r--r-- | packages/server/src/assertion/generateAssertionOptions.ts | 7 |
2 files changed, 23 insertions, 3 deletions
diff --git a/packages/server/src/assertion/generateAssertionOptions.test.ts b/packages/server/src/assertion/generateAssertionOptions.test.ts index 70a72db..24253bf 100644 --- a/packages/server/src/assertion/generateAssertionOptions.test.ts +++ b/packages/server/src/assertion/generateAssertionOptions.test.ts @@ -65,6 +65,25 @@ test('should not set userVerification if not specified', () => { expect(options.userVerification).toEqual(undefined); }); +test('should not set allowCredentials if not specified', () => { + const options = generateAssertionOptions({ rpID: 'test' }); + + expect(options.allowCredentials).toEqual(undefined); +}); + +test('should generate without params', () => { + const options = generateAssertionOptions(); + const { challenge, ...otherFields } = options; + expect(otherFields).toEqual({ + allowCredentials: undefined, + extensions: undefined, + rpId: undefined, + timeout: 60000, + userVerification: undefined, + }); + expect(typeof challenge).toEqual('string'); +}); + test('should set userVerification if specified', () => { const options = generateAssertionOptions({ challenge: 'totallyrandomvalue', diff --git a/packages/server/src/assertion/generateAssertionOptions.ts b/packages/server/src/assertion/generateAssertionOptions.ts index d05dc00..79ff6f8 100644 --- a/packages/server/src/assertion/generateAssertionOptions.ts +++ b/packages/server/src/assertion/generateAssertionOptions.ts @@ -9,7 +9,7 @@ import base64url from 'base64url'; import generateChallenge from '../helpers/generateChallenge'; type Options = { - allowCredentials: PublicKeyCredentialDescriptorJSON[]; + allowCredentials?: PublicKeyCredentialDescriptorJSON[]; challenge?: string | Buffer; timeout?: number; userVerification?: UserVerificationRequirement; @@ -20,7 +20,8 @@ type Options = { /** * Prepare a value to pass into navigator.credentials.get(...) for authenticator "login" * - * @param allowCredentials Authenticators previously registered by the user + * @param allowCredentials Authenticators previously registered by the user, if not provided + * device can ask user which credential he wants to use * @param challenge Random value the authenticator needs to sign and pass back * user for assertion * @param timeout How long (in ms) the user can take to complete assertion @@ -30,7 +31,7 @@ type Options = { * @param rpID Valid domain name (after `https://`) */ export default function generateAssertionOptions( - options: Options, + options: Options = {}, ): PublicKeyCredentialRequestOptionsJSON { const { allowCredentials, |