mirror of
https://github.com/bitwarden/browser
synced 2025-12-21 10:43:35 +00:00
[PM-11419] Fix issues encountered with inline menu passkeys (#10892)
* [PM-11419] Login items do not display after adding passkey * [PM-11419] Login items do not display after adding passkey * [PM-11419] Incorporating fixes for deleting a cipher from the inline menu as well as authenticating using passkeys * [PM-11419] Fixing an issue where master password reprompt is ignored for a set passkey cipher * [PM-11419] Fixing an issue where saving a passkey does not trigger a clearing of cached cipher values * [PM-11419] Refactoring implementation * [PM-11419] Ensuring that passkeys must be enabled in order for ciphers to appear * [PM-11419] Adding an abort event from the active request manager * [PM-11419] Adding an abort event from the active request manager * [PM-11419] Working through jest tests within implementation * [PM-11419] Fixing jest tests within Fido2ClientService and Fido2AuthenticatorService * [PM-11419] Adding jest tests for added logic within OverlayBackground * [PM-11419] Adding jest tests for added logic within OverlayBackground * [PM-11419] Reworking how we handle assuming user presence when master password reprompt is required * [PM-11419] Reworking how we handle assuming user presence when master password reprompt is required * [PM-11419] Reworking how we handle assuming user presence when master password reprompt is required * [PM-11419] Refactoring implementation * [PM-11419] Incorporating suggestion for reporting failed passkey authentication from the inline menu * [PM-11419] Reworking positioning of the abort controller that informs the background script of an error * [PM-11419] Scoping down the behavior surrounding master password reprompt a bit more tightly * [PM-11419] Reworking how we handle reacting to active fido2 requests to avoid ambiguity * [PM-11419] Reworking how we handle reacting to active fido2 requests to avoid ambiguity * [PM-11419] Adjusting implementation to ensure we clear any active requests when the passkeys setting is modified
This commit is contained in:
@@ -6,11 +6,12 @@ import { AuthenticationStatus } from "../../../auth/enums/authentication-status"
|
||||
import { DomainSettingsService } from "../../../autofill/services/domain-settings.service";
|
||||
import { Utils } from "../../../platform/misc/utils";
|
||||
import { VaultSettingsService } from "../../../vault/abstractions/vault-settings/vault-settings.service";
|
||||
import { Fido2CredentialView } from "../../../vault/models/view/fido2-credential.view";
|
||||
import { ConfigService } from "../../abstractions/config/config.service";
|
||||
import {
|
||||
ActiveRequest,
|
||||
Fido2ActiveRequestEvents,
|
||||
Fido2ActiveRequestManager,
|
||||
RequestResult,
|
||||
} from "../../abstractions/fido2/fido2-active-request-manager.abstraction";
|
||||
import {
|
||||
Fido2AuthenticatorError,
|
||||
@@ -56,7 +57,10 @@ describe("FidoAuthenticatorService", () => {
|
||||
domainSettingsService = mock<DomainSettingsService>();
|
||||
taskSchedulerService = mock<TaskSchedulerService>();
|
||||
activeRequest = mock<ActiveRequest>({
|
||||
subject: new BehaviorSubject<string>(""),
|
||||
subject: new BehaviorSubject<RequestResult>({
|
||||
type: Fido2ActiveRequestEvents.Continue,
|
||||
credentialId: "",
|
||||
}),
|
||||
});
|
||||
requestManager = mock<Fido2ActiveRequestManager>({
|
||||
getActiveRequest$: (tabId: number) => new BehaviorSubject(activeRequest),
|
||||
@@ -615,7 +619,10 @@ describe("FidoAuthenticatorService", () => {
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
requestManager.newActiveRequest.mockResolvedValue(crypto.randomUUID());
|
||||
requestManager.newActiveRequest.mockResolvedValue({
|
||||
type: Fido2ActiveRequestEvents.Continue,
|
||||
credentialId: crypto.randomUUID(),
|
||||
});
|
||||
authenticator.getAssertion.mockResolvedValue(createAuthenticatorAssertResult());
|
||||
});
|
||||
|
||||
@@ -676,28 +683,6 @@ describe("FidoAuthenticatorService", () => {
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
describe("autofill of credentials through the active request manager", () => {
|
||||
it("returns an observable that updates with an array of the credentials for active Fido2 requests", async () => {
|
||||
const activeRequestCredentials = mock<Fido2CredentialView>();
|
||||
activeRequest.credentials = [activeRequestCredentials];
|
||||
|
||||
const observable = client.availableAutofillCredentials$(tab.id);
|
||||
observable.subscribe((credentials) => {
|
||||
expect(credentials).toEqual([activeRequestCredentials]);
|
||||
});
|
||||
});
|
||||
|
||||
it("triggers the logic of the next behavior subject of an active request", async () => {
|
||||
const activeRequestCredentials = mock<Fido2CredentialView>();
|
||||
activeRequest.credentials = [activeRequestCredentials];
|
||||
jest.spyOn(activeRequest.subject, "next");
|
||||
|
||||
await client.autofillCredential(tab.id, activeRequestCredentials.credentialId);
|
||||
|
||||
expect(activeRequest.subject.next).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
/** This is a fake function that always returns the same byte sequence */
|
||||
|
||||
Reference in New Issue
Block a user