From 0b037303b1dc0d632bd2b7bb4557842b4705d422 Mon Sep 17 00:00:00 2001 From: Daniel James Smith Date: Tue, 3 Dec 2024 13:44:00 +0100 Subject: [PATCH] Report "importFormatError" when header translation did not work, instead of a generic undefined error (startsWith) --- libs/importer/spec/passwordxp-csv-importer.spec.ts | 6 ++++++ libs/importer/src/importers/passwordxp-csv-importer.ts | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/libs/importer/spec/passwordxp-csv-importer.spec.ts b/libs/importer/spec/passwordxp-csv-importer.spec.ts index c11e7ac053..fda323450c 100644 --- a/libs/importer/spec/passwordxp-csv-importer.spec.ts +++ b/libs/importer/spec/passwordxp-csv-importer.spec.ts @@ -56,6 +56,12 @@ describe("PasswordXPCsvImporter", () => { expect(result.success).toBe(false); }); + it("should return success false if CSV headers did not get translated", async () => { + const data = germanHeaders.replace("Titel;", "UnknownTitle;"); + const result: ImportResult = await importer.parse(data); + expect(result.success).toBe(false); + }); + it("should skip rows starting with >>>", async () => { const result: ImportResult = await importer.parse(noFolder); expect(result.success).toBe(true); diff --git a/libs/importer/src/importers/passwordxp-csv-importer.ts b/libs/importer/src/importers/passwordxp-csv-importer.ts index 9d17f671b6..e305af1a4e 100644 --- a/libs/importer/src/importers/passwordxp-csv-importer.ts +++ b/libs/importer/src/importers/passwordxp-csv-importer.ts @@ -55,6 +55,13 @@ export class PasswordXPCsvImporter extends BaseImporter implements Importer { result.success = false; return Promise.resolve(result); } + + // If the first row (header check) does not contain the column "Title", then the data is invalid (no translation found) + if (!results[0].Title) { + result.success = false; + return Promise.resolve(result); + } + let currentFolderName = ""; results.forEach((row) => { // Skip rows starting with '>>>' as they indicate items following have no folder assigned to them