[AC-1266] Enums filename conventions (#5140)
* refactor: update clientType enum
* refactor: update deviceType filename
* refactor: update encryptedExportType filename
* refactor: update encryptionType filename
* refactor: update eventType filename
* refactor: update fieldType filename
* refactor: update fileUploadType filename
* refactor: update hashPurpose filename
* refactor: update htmlStorageLocation filename
* refactor: update kdfType filename
* refactor: update keySuffixOptions filename
* refactor: update linkedIdType filename
* refactor: update logLevelType filename
* refactor: update nativeMessagingVersion filename
* refactor: update notificationType filename
* refactor: update productType filename
* refactor: update secureNoteType filename
* refactor: update stateVersion filename
* refactor: update storageLocation filename
* refactor: update themeType filename
* refactor: update uriMatchType filename
* fix: update kdfType classes missed in initial pass, refs AC-1266
* fix: missing import update for device-type
* refactor: add barrel file for enums and update pathed import statements, refs AC-1266
* fix: incorrect import statements for web, refs AC-1266
* fix: missed import statement updates (browser), refs AC-1266
* fix: missed import statement changes (cli), refs AC-1266
* fix: missed import statement changes (desktop), refs AC-1266
* fix: prettier, refs AC-1266
* refactor: (libs) update relative paths to use barrel file, refs AC-1266
* fix: missed find/replace import statements for SecureNoteType, refs AC-1266
* refactor: apply .enum suffix to enums folder and modify leftover relative paths, refs AC-1266
* fix: find/replace errors for native-messaging-version, refs AC-1266
2023-04-05 05:42:21 +02:00
|
|
|
import { FieldType } from "@bitwarden/common/enums";
|
2023-01-31 22:08:37 +01:00
|
|
|
import { CipherType } from "@bitwarden/common/vault/enums/cipher-type";
|
|
|
|
import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
|
|
|
|
import { FieldView } from "@bitwarden/common/vault/models/view/field.view";
|
2020-12-08 18:29:57 +01:00
|
|
|
|
2023-03-23 11:43:27 +01:00
|
|
|
import { OnePasswordWinCsvImporter } from "../src/importers";
|
|
|
|
|
2022-11-11 16:20:03 +01:00
|
|
|
import { data as creditCardData } from "./test-data/onepassword-csv/credit-card.windows.csv";
|
|
|
|
import { data as identityData } from "./test-data/onepassword-csv/identity.windows.csv";
|
|
|
|
import { data as multiTypeData } from "./test-data/onepassword-csv/multiple-items.windows.csv";
|
2020-12-08 18:29:57 +01:00
|
|
|
|
|
|
|
function expectIdentity(cipher: CipherView) {
|
|
|
|
expect(cipher.type).toBe(CipherType.Identity);
|
|
|
|
|
|
|
|
expect(cipher.identity).toEqual(
|
2022-03-28 16:00:42 +02:00
|
|
|
expect.objectContaining({
|
2020-12-08 18:29:57 +01:00
|
|
|
firstName: "first name",
|
|
|
|
middleName: "mi",
|
|
|
|
lastName: "last name",
|
|
|
|
username: "userNam3",
|
|
|
|
company: "bitwarden",
|
|
|
|
phone: "8005555555",
|
2021-02-08 21:11:44 +01:00
|
|
|
email: "email@bitwarden.com",
|
2020-12-08 18:29:57 +01:00
|
|
|
})
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(cipher.fields).toEqual(
|
2022-03-28 16:00:42 +02:00
|
|
|
expect.arrayContaining([
|
2020-12-08 18:29:57 +01:00
|
|
|
Object.assign(new FieldView(), {
|
|
|
|
type: FieldType.Text,
|
|
|
|
name: "address",
|
2021-02-08 21:11:44 +01:00
|
|
|
value: "address city state zip us",
|
|
|
|
}),
|
2020-12-08 18:29:57 +01:00
|
|
|
])
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
function expectCreditCard(cipher: CipherView) {
|
|
|
|
expect(cipher.type).toBe(CipherType.Card);
|
|
|
|
|
|
|
|
expect(cipher.card).toEqual(
|
2022-03-28 16:00:42 +02:00
|
|
|
expect.objectContaining({
|
2020-12-08 18:29:57 +01:00
|
|
|
number: "4111111111111111",
|
|
|
|
code: "111",
|
|
|
|
cardholderName: "test",
|
|
|
|
expMonth: "1",
|
|
|
|
expYear: "1970",
|
|
|
|
})
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
describe("1Password windows CSV Importer", () => {
|
2023-03-23 11:43:27 +01:00
|
|
|
let importer: OnePasswordWinCsvImporter;
|
2020-12-08 18:29:57 +01:00
|
|
|
beforeEach(() => {
|
2023-03-23 11:43:27 +01:00
|
|
|
importer = new OnePasswordWinCsvImporter();
|
2020-12-08 18:29:57 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
it("should parse identity records", async () => {
|
|
|
|
const result = await importer.parse(identityData);
|
|
|
|
|
|
|
|
expect(result).not.toBeNull();
|
|
|
|
expect(result.success).toBe(true);
|
|
|
|
expect(result.ciphers.length).toBe(1);
|
|
|
|
const cipher = result.ciphers[0];
|
|
|
|
expectIdentity(cipher);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should parse credit card records", async () => {
|
|
|
|
const result = await importer.parse(creditCardData);
|
|
|
|
|
|
|
|
expect(result).not.toBeNull();
|
|
|
|
expect(result.success).toBe(true);
|
|
|
|
expect(result.ciphers.length).toBe(1);
|
|
|
|
const cipher = result.ciphers[0];
|
|
|
|
expectCreditCard(cipher);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should parse csv's with multiple record types", async () => {
|
|
|
|
const result = await importer.parse(multiTypeData);
|
|
|
|
|
|
|
|
expect(result).not.toBeNull();
|
|
|
|
expect(result.success).toBe(true);
|
|
|
|
expect(result.ciphers.length).toBe(4);
|
|
|
|
|
|
|
|
expectIdentity(result.ciphers[1]);
|
|
|
|
expectCreditCard(result.ciphers[2]);
|
|
|
|
});
|
|
|
|
});
|