From bb0d48911669b3f7b67fc5e3868659c7ff2fee4c Mon Sep 17 00:00:00 2001 From: gbubemismith Date: Wed, 6 Nov 2024 20:13:21 -0500 Subject: [PATCH] Fixed folder state test --- .../services/key-state/folder.state.spec.ts | 64 ++++++++++++++++--- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/libs/common/src/vault/services/key-state/folder.state.spec.ts b/libs/common/src/vault/services/key-state/folder.state.spec.ts index ece66b5d451..bb1a3383def 100644 --- a/libs/common/src/vault/services/key-state/folder.state.spec.ts +++ b/libs/common/src/vault/services/key-state/folder.state.spec.ts @@ -1,10 +1,13 @@ import { mock } from "jest-mock-extended"; +import { BehaviorSubject } from "rxjs"; + +import { EncryptService } from "@bitwarden/common/platform/abstractions/encrypt.service"; +import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; +import { Utils } from "@bitwarden/common/platform/misc/utils"; +import { UserId } from "@bitwarden/common/types/guid"; import { KeyService } from "../../../../../key-management/src/abstractions/key.service"; -import { FolderService } from "../../abstractions/folder/folder.service.abstraction"; import { FolderData } from "../../models/data/folder.data"; -import { Folder } from "../../models/domain/folder"; -import { FolderView } from "../../models/view/folder.view"; import { FOLDER_DECRYPTED_FOLDERS, FOLDER_ENCRYPTED_FOLDERS } from "./folder.state"; @@ -32,7 +35,9 @@ describe("encrypted folders", () => { describe("derived decrypted folders", () => { const keyService = mock(); - const folderService = mock(); + const encryptService = mock(); + const i18nService = mock(); + const mockUserId = Utils.newGuid() as UserId; const sut = FOLDER_DECRYPTED_FOLDERS; let data: FolderData; @@ -42,6 +47,13 @@ describe("derived decrypted folders", () => { name: "encName", revisionDate: "2024-01-31T12:00:00.000Z", }; + + keyService.userKey$.mockReturnValue(new BehaviorSubject("mockOriginalUserKey" as any)); + + i18nService.collator = new Intl.Collator("en"); + i18nService.t.mockReturnValue("No Folder"); + + encryptService.decryptToUtf8.mockResolvedValue("DEC"); }); afterEach(() => { @@ -63,16 +75,48 @@ describe("derived decrypted folders", () => { }); it("should derive encrypted folders", async () => { - const folderViewMock = new FolderView(new Folder(data)); - keyService.hasUserKey.mockResolvedValue(true); - folderService.decryptFolders.mockResolvedValue([folderViewMock]); + const encryptedFoldersState: [UserId, Record] = [mockUserId, { id: data }]; - const encryptedFoldersState = { id: data }; const derivedStateResult = await sut.derive(encryptedFoldersState, { - folderService, + encryptService, + i18nService, keyService, }); - expect(derivedStateResult).toEqual([folderViewMock]); + expect(derivedStateResult).toHaveLength(2); + expect(derivedStateResult[0]).toMatchObject({ + id: "id", + name: "DEC", + }); + expect(derivedStateResult[1]).toMatchObject({ + id: null, + name: "No Folder", + }); + }); + + it("should return empty array when no folder data", async () => { + const encryptedFoldersState: [UserId, Record] = [mockUserId, null]; + + const derivedStateResult = await sut.derive(encryptedFoldersState, { + encryptService, + i18nService, + keyService, + }); + + expect(derivedStateResult).toEqual([]); + }); + + it("should return empty array when no user key", async () => { + keyService.userKey$.mockReturnValue(new BehaviorSubject(null)); + + const encryptedFoldersState: [UserId, Record] = [mockUserId, { id: data }]; + + const derivedStateResult = await sut.derive(encryptedFoldersState, { + encryptService, + i18nService, + keyService, + }); + + expect(derivedStateResult).toEqual([]); }); });