diff options
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(); } |