summaryrefslogtreecommitdiffhomepage
path: root/packages/browser/src
diff options
context:
space:
mode:
authorMatthew Miller <matthew@millerti.me>2021-09-01 08:54:26 -0700
committerGitHub <noreply@github.com>2021-09-01 08:54:26 -0700
commit963ed3089fdc21858a90348253aed5e4ea318778 (patch)
treea6dbbfe003b3672e854752aff1d4e5d4d952ebb3 /packages/browser/src
parent5758fe2de619cfda2952abb16e134b7c25c1396b (diff)
parent98b823b3d5ccde302bcc5e801793a0358dce9037 (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.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();
}