Calling processFolder method when adding ciphers on PsonoJsonImporter (#7984)

This commit is contained in:
aj-rosado 2024-02-22 17:51:44 +00:00 committed by GitHub
parent fda656afaa
commit f9539ef68b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 8 deletions

View File

@ -230,10 +230,8 @@ describe("PSONO JSON Importer", () => {
const result = await importer.parse(FoldersTestDataJson); const result = await importer.parse(FoldersTestDataJson);
expect(result != null).toBe(true); expect(result != null).toBe(true);
const folders = result.folders;
// // Check that ciphers have a folder assigned to them // // Check that ciphers have a folder assigned to them
expect(result.ciphers.filter((c) => c.folderId === folders[0].id).length).toBeGreaterThan(0); expect(result.ciphers.length).toEqual(result.folderRelationships.length);
expect(result.ciphers.filter((c) => c.folderId === folders[1].id).length).toBeGreaterThan(0);
}); });
it("should create collections if part of an organization", async () => { it("should create collections if part of an organization", async () => {

View File

@ -23,6 +23,24 @@ export const FoldersTestData: PsonoJsonExport = {
callback_user: "callbackUser", callback_user: "callbackUser",
callback_pass: "callbackPassword", callback_pass: "callbackPassword",
}, },
{
type: "website_password",
name: "TestEntry1.2",
autosubmit: true,
urlfilter: "filter",
website_password_title: "TestEntry1.2",
website_password_url: "bitwarden.com",
website_password_username: "testUser",
website_password_password: "testPassword",
website_password_notes: "some notes",
website_password_auto_submit: true,
website_password_url_filter: "filter",
create_date: "2022-12-13T19:24:09.810266Z",
write_date: "2022-12-13T19:24:09.810292Z",
callback_url: "callback",
callback_user: "callbackUser",
callback_pass: "callbackPassword",
},
], ],
}, },
{ {

View File

@ -61,20 +61,22 @@ export class PsonoJsonImporter extends BaseImporter implements Importer {
this.parseFolders(result, folder.folders, folder.name); this.parseFolders(result, folder.folders, folder.name);
} }
this.processFolder(result, folder.name, folderHasItems); if (!folderHasItems) {
this.processFolder(result, folder.name, folderHasItems);
this.handleItemParsing(result, folder.items); } else {
this.handleItemParsing(result, folder.items, folder.name);
}
}); });
} }
private handleItemParsing(result: ImportResult, items?: PsonoItemTypes[]) { private handleItemParsing(result: ImportResult, items?: PsonoItemTypes[], folderName?: string) {
if (items == null || items.length === 0) { if (items == null || items.length === 0) {
return; return;
} }
items.forEach((record) => { items.forEach((record) => {
const cipher = this.parsePsonoItem(record); const cipher = this.parsePsonoItem(record);
this.processFolder(result, folderName, true);
this.cleanupCipher(cipher); this.cleanupCipher(cipher);
result.ciphers.push(cipher); result.ciphers.push(cipher);
}); });