mirror of
https://github.com/bitwarden/browser
synced 2026-02-26 01:23:24 +00:00
[PM-25688] Add unit test to ensure Folder Id is never set for import request
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { mock, MockProxy } from "jest-mock-extended";
|
||||
import { of } from "rxjs";
|
||||
|
||||
// This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop.
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
@@ -10,13 +11,14 @@ import {
|
||||
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
|
||||
import { KeyGenerationService } from "@bitwarden/common/key-management/crypto";
|
||||
import { EncryptService } from "@bitwarden/common/key-management/crypto/abstractions/encrypt.service";
|
||||
import { EncString } from "@bitwarden/common/key-management/crypto/models/enc-string";
|
||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||
import { Utils } from "@bitwarden/common/platform/misc/utils";
|
||||
import { CollectionId, OrganizationId } from "@bitwarden/common/types/guid";
|
||||
import { CollectionId, OrganizationId, UserId } from "@bitwarden/common/types/guid";
|
||||
import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service";
|
||||
import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
|
||||
import { Folder } from "@bitwarden/common/vault/models/domain/folder";
|
||||
import { FolderWithIdRequest } from "@bitwarden/common/vault/models/request/folder-with-id.request";
|
||||
import { FolderRequest } from "@bitwarden/common/vault/models/request/folder.request";
|
||||
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
|
||||
import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
|
||||
import { RestrictedItemTypesService } from "@bitwarden/common/vault/services/restricted-item-types.service";
|
||||
@@ -280,19 +282,31 @@ describe("ImportService", () => {
|
||||
expect(importResult.collectionRelationships.every((r) => r[1] === 0)).toBe(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("FolderWithIdRequest", () => {
|
||||
function makeFolder(id: string): Folder {
|
||||
const folder = new Folder();
|
||||
folder.id = id;
|
||||
return folder;
|
||||
}
|
||||
describe("handleIndividualImport", () => {
|
||||
it("sends folder requests without an id property", async () => {
|
||||
const importResult = new ImportResult();
|
||||
const folderView = new FolderView();
|
||||
folderView.name = "Test Folder";
|
||||
importResult.folders.push(folderView);
|
||||
|
||||
it("preserves a real folder id", () => {
|
||||
const guid = "f1a2b3c4-d5e6-7890-abcd-ef1234567890";
|
||||
const request = new FolderWithIdRequest(makeFolder(guid));
|
||||
expect(request.id).toBe(guid);
|
||||
const encryptedFolder = new Folder();
|
||||
encryptedFolder.id = "";
|
||||
encryptedFolder.name = new EncString("2.encryptedName");
|
||||
folderService.encrypt.mockResolvedValue(encryptedFolder);
|
||||
|
||||
cipherService.encryptMany.mockResolvedValue([]);
|
||||
keyService.userKey$.mockReturnValue(of(null));
|
||||
|
||||
const userId = "test-user-id" as UserId;
|
||||
await importService["handleIndividualImport"](importResult, userId);
|
||||
|
||||
const request = importApiService.postImportCiphers.mock.calls[0][0];
|
||||
expect(request.folders).toHaveLength(1);
|
||||
expect(request.folders[0]).toBeInstanceOf(FolderRequest);
|
||||
expect(request.folders[0].name).toBe("2.encryptedName");
|
||||
expect(request.folders[0]).not.toHaveProperty("id");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user