2021-06-03 18:58:57 +02:00
|
|
|
import { OnePasswordWinCsvImporter as Importer } from 'jslib-common/importers/onepasswordImporters/onepasswordWinCsvImporter';
|
2020-12-08 18:29:57 +01:00
|
|
|
|
2021-09-17 14:57:31 +02:00
|
|
|
import { CipherType } from 'jslib-common/enums/cipherType';
|
|
|
|
import { FieldType } from 'jslib-common/enums/fieldType';
|
2021-06-03 18:58:57 +02:00
|
|
|
import { CipherView } from 'jslib-common/models/view/cipherView';
|
|
|
|
import { FieldView } from 'jslib-common/models/view/fieldView';
|
2020-12-08 18:29:57 +01:00
|
|
|
|
|
|
|
import { data as creditCardData } from './testData/onePasswordCsv/creditCard.windows.csv';
|
|
|
|
import { data as identityData } from './testData/onePasswordCsv/identity.windows.csv';
|
|
|
|
import { data as multiTypeData } from './testData/onePasswordCsv/multipleItems.windows.csv';
|
|
|
|
|
|
|
|
function expectIdentity(cipher: CipherView) {
|
|
|
|
expect(cipher.type).toBe(CipherType.Identity);
|
|
|
|
|
|
|
|
expect(cipher.identity).toEqual(jasmine.objectContaining({
|
|
|
|
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(jasmine.arrayContaining([
|
|
|
|
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(jasmine.objectContaining({
|
|
|
|
number: '4111111111111111',
|
|
|
|
code: '111',
|
|
|
|
cardholderName: 'test',
|
|
|
|
expMonth: '1',
|
|
|
|
expYear: '1970',
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
|
|
|
|
describe('1Password windows CSV Importer', () => {
|
|
|
|
let importer: Importer;
|
|
|
|
beforeEach(() => {
|
|
|
|
importer = new Importer();
|
|
|
|
});
|
|
|
|
|
|
|
|
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]);
|
|
|
|
});
|
|
|
|
});
|