diff options
author | Matthew Miller <matthew@millerti.me> | 2021-09-01 08:54:26 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-01 08:54:26 -0700 |
commit | 963ed3089fdc21858a90348253aed5e4ea318778 (patch) | |
tree | a6dbbfe003b3672e854752aff1d4e5d4d952ebb3 /packages/browser/src | |
parent | 5758fe2de619cfda2952abb16e134b7c25c1396b (diff) | |
parent | 98b823b3d5ccde302bcc5e801793a0358dce9037 (diff) |
Merge pull request #156 from MasterKale/fix/browser-isuvpaa-detect-webauthn-support
fix/browser-isuvpaa-detect-webauthn-support
Diffstat (limited to 'packages/browser/src')
-rw-r--r-- | packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts | 12 | ||||
-rw-r--r-- | packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts | 6 |
2 files changed, 15 insertions, 3 deletions
diff --git a/packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts b/packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts index ba9f233..e8e53c7 100644 --- a/packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts +++ b/packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts @@ -6,9 +6,8 @@ beforeEach(() => { mockIsUVPAA.mockReset(); // @ts-ignore 2741 - window.PublicKeyCredential = { - isUserVerifyingPlatformAuthenticatorAvailable: mockIsUVPAA.mockResolvedValue(true), - }; + window.PublicKeyCredential = jest.fn().mockReturnValue(() => {}); + window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable = mockIsUVPAA.mockResolvedValue(true); }); test('should return true when platform authenticator is available', async () => { @@ -24,3 +23,10 @@ test('should return false when platform authenticator is unavailable', async () expect(isAvailable).toEqual(false); }); + +test('should return false when browser does not support WebAuthn', async () => { + delete (window as any).PublicKeyCredential; + const isAvailable = await platformAuthenticatorIsAvailable(); + + expect(isAvailable).toEqual(false); +}); diff --git a/packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts b/packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts index 10d84e3..af9cbcc 100644 --- a/packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts +++ b/packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts @@ -1,3 +1,5 @@ +import { browserSupportsWebauthn } from './browserSupportsWebauthn'; + /** * Determine whether the browser can communicate with a built-in authenticator, like * Touch ID, Android fingerprint scanner, or Windows Hello. @@ -5,5 +7,9 @@ * This method will _not_ be able to tell you the name of the platform authenticator. */ export async function platformAuthenticatorIsAvailable(): Promise<boolean> { + if (!browserSupportsWebauthn()) { + return false; + } + return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable(); } |