summaryrefslogtreecommitdiffhomepage
path: root/packages/browser/src/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'packages/browser/src/helpers')
-rw-r--r--packages/browser/src/helpers/__mocks__/browserSupportsWebauthn.ts (renamed from packages/browser/src/helpers/__mocks__/supportsWebauthn.ts)2
-rw-r--r--packages/browser/src/helpers/browserSupportsWebauthn.test.ts (renamed from packages/browser/src/helpers/supportsWebauthn.test.ts)8
-rw-r--r--packages/browser/src/helpers/browserSupportsWebauthn.ts (renamed from packages/browser/src/helpers/supportsWebauthn.ts)2
-rw-r--r--packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts26
-rw-r--r--packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts9
5 files changed, 41 insertions, 6 deletions
diff --git a/packages/browser/src/helpers/__mocks__/supportsWebauthn.ts b/packages/browser/src/helpers/__mocks__/browserSupportsWebauthn.ts
index b6b47d4..20d5d88 100644
--- a/packages/browser/src/helpers/__mocks__/supportsWebauthn.ts
+++ b/packages/browser/src/helpers/__mocks__/browserSupportsWebauthn.ts
@@ -1,2 +1,2 @@
// We just need a simple mock so we can control whether this returns `true` or `false`
-export default jest.fn();
+export const browserSupportsWebauthn = jest.fn();
diff --git a/packages/browser/src/helpers/supportsWebauthn.test.ts b/packages/browser/src/helpers/browserSupportsWebauthn.test.ts
index e11d77b..5308315 100644
--- a/packages/browser/src/helpers/supportsWebauthn.test.ts
+++ b/packages/browser/src/helpers/browserSupportsWebauthn.test.ts
@@ -1,4 +1,4 @@
-import supportsWebauthn from './supportsWebauthn';
+import { browserSupportsWebauthn } from './browserSupportsWebauthn';
beforeEach(() => {
// @ts-ignore 2741
@@ -6,12 +6,12 @@ beforeEach(() => {
});
test('should return true when browser supports WebAuthn', () => {
- expect(supportsWebauthn()).toBe(true);
+ expect(browserSupportsWebauthn()).toBe(true);
});
test('should return false when browser does not support WebAuthn', () => {
delete (window as any).PublicKeyCredential;
- expect(supportsWebauthn()).toBe(false);
+ expect(browserSupportsWebauthn()).toBe(false);
});
test('should return false when window is undefined', () => {
@@ -20,7 +20,7 @@ test('should return false when window is undefined', () => {
windowSpy.mockImplementation(() => undefined);
expect(window).toBe(undefined);
- expect(supportsWebauthn()).toBe(false);
+ expect(browserSupportsWebauthn()).toBe(false);
// Restore original window value.
windowSpy.mockRestore();
diff --git a/packages/browser/src/helpers/supportsWebauthn.ts b/packages/browser/src/helpers/browserSupportsWebauthn.ts
index b572080..030256f 100644
--- a/packages/browser/src/helpers/supportsWebauthn.ts
+++ b/packages/browser/src/helpers/browserSupportsWebauthn.ts
@@ -1,7 +1,7 @@
/**
* Determine if the browser is capable of Webauthn
*/
-export default function supportsWebauthn(): boolean {
+export function browserSupportsWebauthn(): boolean {
return (
window?.PublicKeyCredential !== undefined && typeof window.PublicKeyCredential === 'function'
);
diff --git a/packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts b/packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts
new file mode 100644
index 0000000..ba9f233
--- /dev/null
+++ b/packages/browser/src/helpers/platformAuthenticatorIsAvailable.test.ts
@@ -0,0 +1,26 @@
+import { platformAuthenticatorIsAvailable } from './platformAuthenticatorIsAvailable';
+
+const mockIsUVPAA = jest.fn();
+
+beforeEach(() => {
+ mockIsUVPAA.mockReset();
+
+ // @ts-ignore 2741
+ window.PublicKeyCredential = {
+ isUserVerifyingPlatformAuthenticatorAvailable: mockIsUVPAA.mockResolvedValue(true),
+ };
+});
+
+test('should return true when platform authenticator is available', async () => {
+ const isAvailable = await platformAuthenticatorIsAvailable();
+
+ expect(isAvailable).toEqual(true);
+});
+
+test('should return false when platform authenticator is unavailable', async () => {
+ mockIsUVPAA.mockResolvedValue(false);
+
+ const isAvailable = await platformAuthenticatorIsAvailable();
+
+ expect(isAvailable).toEqual(false);
+});
diff --git a/packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts b/packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts
new file mode 100644
index 0000000..10d84e3
--- /dev/null
+++ b/packages/browser/src/helpers/platformAuthenticatorIsAvailable.ts
@@ -0,0 +1,9 @@
+/**
+ * Determine whether the browser can communicate with a built-in authenticator, like
+ * Touch ID, Android fingerprint scanner, or Windows Hello.
+ *
+ * This method will _not_ be able to tell you the name of the platform authenticator.
+ */
+export async function platformAuthenticatorIsAvailable(): Promise<boolean> {
+ return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();
+}