diff options
author | Matthew Miller <matthew@millerti.me> | 2022-09-28 21:14:32 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-28 21:14:32 -0700 |
commit | 8b75f0836e39df29b8593f96fb806608c2a81196 (patch) | |
tree | ba1d6e1346ba40cddc35f5a9c2f3ca68358eecc2 /packages/browser/src/helpers | |
parent | e64b50cc84d49478d49e0a394511963d0110277b (diff) | |
parent | 4ea0bd370609294e3cf70f467d234093fc6e87fb (diff) |
Merge pull request #275 from MasterKale/fix/webauthn-abort-controller-race-condition
fix/webauthn-abort-controller-race-condition
Diffstat (limited to 'packages/browser/src/helpers')
-rw-r--r-- | packages/browser/src/helpers/webAuthnAbortService.test.ts | 20 | ||||
-rw-r--r-- | packages/browser/src/helpers/webAuthnAbortService.ts | 6 |
2 files changed, 1 insertions, 25 deletions
diff --git a/packages/browser/src/helpers/webAuthnAbortService.test.ts b/packages/browser/src/helpers/webAuthnAbortService.test.ts index f4e6344..294a894 100644 --- a/packages/browser/src/helpers/webAuthnAbortService.test.ts +++ b/packages/browser/src/helpers/webAuthnAbortService.test.ts @@ -20,23 +20,3 @@ test('should call abort() on existing controller when creating a new signal', () webauthnAbortService.createNewAbortSignal(); expect(abortSpy).toHaveBeenCalledTimes(1); }); - -test('should reset controller', () => { - // Reset the service - webauthnAbortService.reset(); - - // Populate `.controller` - webauthnAbortService.createNewAbortSignal(); - - // Spy on the existing instance of AbortController - const abortSpy = jest.fn(); - // @ts-ignore - webauthnAbortService.controller?.abort = abortSpy; - - // Reset the service - webauthnAbortService.reset(); - - // Generate a new signal, which should NOT call `abort()` because the controller was cleared - webauthnAbortService.createNewAbortSignal(); - expect(abortSpy).toHaveBeenCalledTimes(0); -}); diff --git a/packages/browser/src/helpers/webAuthnAbortService.ts b/packages/browser/src/helpers/webAuthnAbortService.ts index c60e6df..479df55 100644 --- a/packages/browser/src/helpers/webAuthnAbortService.ts +++ b/packages/browser/src/helpers/webAuthnAbortService.ts @@ -12,16 +12,12 @@ class WebAuthnAbortService { createNewAbortSignal() { // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get() if (this.controller) { - this.controller.abort(); + this.controller.abort('Cancelling existing WebAuthn API call for new one'); } this.controller = new AbortController(); return this.controller.signal; } - - reset() { - this.controller = undefined; - } } export const webauthnAbortService = new WebAuthnAbortService(); |