1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-10 05:30:01 +00:00

Merge branch 'main' into PM-19521

This commit is contained in:
Maximilian Power
2025-03-26 01:57:32 +01:00
committed by GitHub
2 changed files with 15 additions and 13 deletions

View File

@@ -295,7 +295,7 @@ describe("GeneratorMetadataProvider", () => {
[Algorithm.username, effWordList],
[Algorithm.password, password],
])("gets a specific algorithm", async (algorithm, metadata) => {
SomePolicyService.getAll$.mockReturnValue(new BehaviorSubject([]));
SomePolicyService.policiesByType$.mockReturnValue(new BehaviorSubject([]));
const provider = new GeneratorMetadataProvider(SystemProvider, ApplicationProvider, [
metadata,
]);
@@ -311,7 +311,7 @@ describe("GeneratorMetadataProvider", () => {
[Type.username, [effWordList]],
[Type.password, [password, passphrase]],
])("gets a category of algorithms", async (category, metadata) => {
SomePolicyService.getAll$.mockReturnValue(new BehaviorSubject([]));
SomePolicyService.policiesByType$.mockReturnValue(new BehaviorSubject([]));
const provider = new GeneratorMetadataProvider(SystemProvider, ApplicationProvider, metadata);
const result = new ReplaySubject<CredentialAlgorithm[]>(1);
@@ -329,7 +329,7 @@ describe("GeneratorMetadataProvider", () => {
overridePasswordType: Algorithm.password,
},
} as any);
SomePolicyService.getAll$.mockReturnValue(new BehaviorSubject([policy]));
SomePolicyService.policiesByType$.mockReturnValue(new BehaviorSubject([policy]));
const metadata = [password, passphrase];
const provider = new GeneratorMetadataProvider(SystemProvider, ApplicationProvider, metadata);
const algorithmResult = new ReplaySubject<CredentialAlgorithm[]>(1);
@@ -347,7 +347,7 @@ describe("GeneratorMetadataProvider", () => {
});
it("omits algorithms whose metadata is unavailable", async () => {
SomePolicyService.getAll$.mockReturnValue(new BehaviorSubject([]));
SomePolicyService.policiesByType$.mockReturnValue(new BehaviorSubject([]));
const provider = new GeneratorMetadataProvider(SystemProvider, ApplicationProvider, [
password,
]);
@@ -389,7 +389,7 @@ describe("GeneratorMetadataProvider", () => {
[Type.username, effWordList],
[Type.password, password],
])("emits the user's %s preference", async (type, metadata) => {
SomePolicyService.getAll$.mockReturnValue(new BehaviorSubject([]));
SomePolicyService.policiesByType$.mockReturnValue(new BehaviorSubject([]));
const provider = new GeneratorMetadataProvider(SystemProvider, ApplicationProvider, [
metadata,
]);
@@ -401,7 +401,7 @@ describe("GeneratorMetadataProvider", () => {
});
it("emits a default when the user's preference is unavailable", async () => {
SomePolicyService.getAll$.mockReturnValue(new BehaviorSubject([]));
SomePolicyService.policiesByType$.mockReturnValue(new BehaviorSubject([]));
const provider = new GeneratorMetadataProvider(SystemProvider, ApplicationProvider, [
plusAddress,
]);
@@ -416,7 +416,7 @@ describe("GeneratorMetadataProvider", () => {
});
it("emits undefined when the user's preference is unavailable and there is no metadata", async () => {
SomePolicyService.getAll$.mockReturnValue(new BehaviorSubject([]));
SomePolicyService.policiesByType$.mockReturnValue(new BehaviorSubject([]));
const provider = new GeneratorMetadataProvider(SystemProvider, ApplicationProvider, []);
const result = new ReplaySubject<CredentialAlgorithm | undefined>(1);

View File

@@ -145,12 +145,14 @@ export class GeneratorMetadataProvider {
const available$ = id$.pipe(
switchMap((id) => {
const policies$ = this.application.policy.getAll$(PolicyType.PasswordGenerator, id).pipe(
map((p) => availableAlgorithms_vNext(p).filter((a) => this._metadata.has(a))),
map((p) => new Set(p)),
// complete policy emissions otherwise `switchMap` holds `available$` open indefinitely
takeUntil(anyComplete(id$)),
);
const policies$ = this.application.policy
.policiesByType$(PolicyType.PasswordGenerator, id)
.pipe(
map((p) => availableAlgorithms_vNext(p).filter((a) => this._metadata.has(a))),
map((p) => new Set(p)),
// complete policy emissions otherwise `switchMap` holds `available$` open indefinitely
takeUntil(anyComplete(id$)),
);
return policies$;
}),
map(