mirror of
https://github.com/bitwarden/browser
synced 2025-12-19 17:53:39 +00:00
[PM-23628] Require userId for fetching provider keys (#16993)
* remove getProviderKey and expose providerKeys$ * update consumers
This commit is contained in:
@@ -39,7 +39,7 @@ import {
|
||||
FakeSingleUserState,
|
||||
} from "@bitwarden/common/spec";
|
||||
import { CsprngArray } from "@bitwarden/common/types/csprng";
|
||||
import { OrganizationId, UserId } from "@bitwarden/common/types/guid";
|
||||
import { OrganizationId, ProviderId, UserId } from "@bitwarden/common/types/guid";
|
||||
import {
|
||||
UserKey,
|
||||
MasterKey,
|
||||
@@ -1314,6 +1314,49 @@ describe("keyService", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("providerKeys$", () => {
|
||||
let mockUserPrivateKey: Uint8Array;
|
||||
let mockProviderKeys: Record<ProviderId, ProviderKey>;
|
||||
|
||||
beforeEach(() => {
|
||||
mockUserPrivateKey = makeStaticByteArray(64, 1);
|
||||
mockProviderKeys = {
|
||||
["provider1" as ProviderId]: makeSymmetricCryptoKey<ProviderKey>(64),
|
||||
["provider2" as ProviderId]: makeSymmetricCryptoKey<ProviderKey>(64),
|
||||
};
|
||||
});
|
||||
|
||||
it("returns null when userPrivateKey is null", async () => {
|
||||
jest.spyOn(keyService, "userPrivateKey$").mockReturnValue(of(null));
|
||||
|
||||
const result = await firstValueFrom(keyService.providerKeys$(mockUserId));
|
||||
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
||||
it("returns provider keys when userPrivateKey is available", async () => {
|
||||
jest.spyOn(keyService, "userPrivateKey$").mockReturnValue(of(mockUserPrivateKey as any));
|
||||
jest.spyOn(keyService as any, "providerKeysHelper$").mockReturnValue(of(mockProviderKeys));
|
||||
|
||||
const result = await firstValueFrom(keyService.providerKeys$(mockUserId));
|
||||
|
||||
expect(result).toEqual(mockProviderKeys);
|
||||
expect((keyService as any).providerKeysHelper$).toHaveBeenCalledWith(
|
||||
mockUserId,
|
||||
mockUserPrivateKey,
|
||||
);
|
||||
});
|
||||
|
||||
it("returns null when providerKeysHelper$ returns null", async () => {
|
||||
jest.spyOn(keyService, "userPrivateKey$").mockReturnValue(of(mockUserPrivateKey as any));
|
||||
jest.spyOn(keyService as any, "providerKeysHelper$").mockReturnValue(of(null));
|
||||
|
||||
const result = await firstValueFrom(keyService.providerKeys$(mockUserId));
|
||||
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe("makeKeyPair", () => {
|
||||
test.each([null as unknown as SymmetricCryptoKey, undefined as unknown as SymmetricCryptoKey])(
|
||||
"throws when the provided key is %s",
|
||||
|
||||
Reference in New Issue
Block a user