Fix totp import on Dashlane csv importer

This commit is contained in:
Daniel James Smith 2024-10-28 11:44:17 +01:00
parent 9d2848d0f1
commit 077816997f
No known key found for this signature in database
GPG Key ID: DA2E2EC600E1289B
4 changed files with 14 additions and 2 deletions

View File

@ -2,6 +2,7 @@ import { CipherType } from "@bitwarden/common/vault/enums";
import { DashlaneCsvImporter } from "../src/importers";
import { credentialsData_otpUrl } from "./test-data/dashlane-csv/credentials-otpurl.csv";
import { credentialsData } from "./test-data/dashlane-csv/credentials.csv";
import { identityData } from "./test-data/dashlane-csv/id.csv";
import { multiplePersonalInfoData } from "./test-data/dashlane-csv/multiple-personal-info.csv";
@ -30,6 +31,14 @@ describe("Dashlane CSV Importer", () => {
expect(cipher.notes).toEqual("some note for example.com");
});
it("should parse login with totp when given otpUrl instead of otpSecret", async () => {
const result = await importer.parse(credentialsData_otpUrl);
expect(result != null).toBe(true);
const cipher = result.ciphers.shift();
expect(cipher.login.totp).toEqual("anotherTOTPSeed");
});
it("should parse an item and create a folder", async () => {
const result = await importer.parse(credentialsData);

View File

@ -0,0 +1,2 @@
export const credentialsData_otpUrl = `username,username2,username3,title,password,note,url,category,otpUrl
jdoe,,,example.com,somePassword,some note for example.com,https://www.example.com,Entertainment,anotherTOTPSeed`;

View File

@ -119,7 +119,7 @@ export class DashlaneCsvImporter extends BaseImporter implements Importer {
cipher.notes = row.note;
cipher.login.username = row.username;
cipher.login.password = row.password;
cipher.login.totp = row.otpSecret;
cipher.login.totp = Object.keys(row).includes("otpUrl") ? row.otpUrl : row.otpSecret;
cipher.login.uris = this.makeUriArray(row.url);
this.importUnmappedFields(cipher, row, _mappedCredentialsColumns);

View File

@ -8,7 +8,8 @@ export class CredentialsRecord {
note: string;
url: string;
category: string;
otpSecret: string;
otpSecret?: string;
otpUrl?: string; // Likely introduced by Dashlane as a replacement for `otpSecret`
}
export class PaymentsRecord {