summaryrefslogtreecommitdiffhomepage
path: root/packages/browser/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/browser/src')
-rw-r--r--packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts12
-rw-r--r--packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts6
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();
}