mirror of
https://github.com/bitwarden/browser
synced 2026-02-08 20:50:28 +00:00
Add tests
This commit is contained in:
@@ -43,6 +43,7 @@ import { UserKey, MasterKey } from "@bitwarden/common/types/key";
|
||||
import { KdfConfigService } from "./abstractions/kdf-config.service";
|
||||
import { UserPrivateKeyDecryptionFailedError } from "./abstractions/key.service";
|
||||
import { DefaultKeyService } from "./key.service";
|
||||
import { SigningKey } from "./models/signing-key";
|
||||
|
||||
describe("keyService", () => {
|
||||
let keyService: DefaultKeyService;
|
||||
@@ -493,6 +494,51 @@ describe("keyService", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("userSigningKey$", () => {
|
||||
it("returns the signing key when the user has a signing key set", async () => {
|
||||
const fakeSigningKey = new SigningKey("");
|
||||
const fakeSigningKeyState = stateProvider.singleUser.getFake(
|
||||
mockUserId,
|
||||
USER_KEY_ENCRYPTED_SIGNING_KEY,
|
||||
);
|
||||
fakeSigningKeyState.nextState(fakeSigningKey.toSerializable());
|
||||
|
||||
const signingKey = await firstValueFrom(keyService.userSigningKey$(mockUserId));
|
||||
|
||||
expect(signingKey).toEqual(fakeSigningKey);
|
||||
});
|
||||
|
||||
it("returns null when the user does not have a signing key set", async () => {
|
||||
const signingKey = await firstValueFrom(keyService.userSigningKey$(mockUserId));
|
||||
|
||||
expect(signingKey).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe("setUserSigningKey", () => {
|
||||
it("throws if the signing key is null", async () => {
|
||||
await expect(keyService.setUserSigningKey(null as any, mockUserId)).rejects.toThrow(
|
||||
"No user signing key provided.",
|
||||
);
|
||||
});
|
||||
it("throws if the userId is null", async () => {
|
||||
await expect(
|
||||
keyService.setUserSigningKey(new SigningKey(""), null as unknown as UserId),
|
||||
).rejects.toThrow("No userId provided.");
|
||||
});
|
||||
it("sets the signing key for the user", async () => {
|
||||
const fakeSigningKey = new SigningKey("test");
|
||||
const fakeSigningKeyState = stateProvider.singleUser.getFake(
|
||||
mockUserId,
|
||||
USER_KEY_ENCRYPTED_SIGNING_KEY,
|
||||
);
|
||||
fakeSigningKeyState.nextState(null);
|
||||
await keyService.setUserSigningKey(fakeSigningKey, mockUserId);
|
||||
expect(fakeSigningKeyState.nextMock).toHaveBeenCalledTimes(1);
|
||||
expect(fakeSigningKeyState.nextMock).toHaveBeenCalledWith(fakeSigningKey.toSerializable());
|
||||
});
|
||||
});
|
||||
|
||||
describe("cipherDecryptionKeys$", () => {
|
||||
function fakePrivateKeyDecryption(encryptedPrivateKey: Encrypted, key: SymmetricCryptoKey) {
|
||||
const output = new Uint8Array(64);
|
||||
|
||||
Reference in New Issue
Block a user