mirror of
https://github.com/bitwarden/browser
synced 2026-02-02 01:33:22 +00:00
address issues in string handling
This commit is contained in:
@@ -27,12 +27,12 @@ export class CardExport {
|
||||
}
|
||||
|
||||
static toDomain(req: CardExport, domain = new CardDomain()) {
|
||||
domain.cardholderName = new EncString(req.cardholderName ?? "");
|
||||
domain.brand = new EncString(req.brand ?? "");
|
||||
domain.number = new EncString(req.number ?? "");
|
||||
domain.expMonth = new EncString(req.expMonth ?? "");
|
||||
domain.expYear = new EncString(req.expYear ?? "");
|
||||
domain.code = new EncString(req.code ?? "");
|
||||
domain.cardholderName = req.cardholderName ? new EncString(req.cardholderName) : undefined;
|
||||
domain.brand = req.brand ? new EncString(req.brand) : undefined;
|
||||
domain.number = req.number ? new EncString(req.number) : undefined;
|
||||
domain.expMonth = req.expMonth ? new EncString(req.expMonth) : undefined;
|
||||
domain.expYear = req.expYear ? new EncString(req.expYear) : undefined;
|
||||
domain.code = req.code ? new EncString(req.code) : undefined;
|
||||
return domain;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,24 +51,24 @@ export class IdentityExport {
|
||||
}
|
||||
|
||||
static toDomain(req: IdentityExport, domain = new IdentityDomain()) {
|
||||
domain.title = new EncString(req.title ?? "");
|
||||
domain.firstName = new EncString(req.firstName ?? "");
|
||||
domain.middleName = new EncString(req.middleName ?? "");
|
||||
domain.lastName = new EncString(req.lastName ?? "");
|
||||
domain.address1 = new EncString(req.address1 ?? "");
|
||||
domain.address2 = new EncString(req.address2 ?? "");
|
||||
domain.address3 = new EncString(req.address3 ?? "");
|
||||
domain.city = new EncString(req.city ?? "");
|
||||
domain.state = new EncString(req.state ?? "");
|
||||
domain.postalCode = new EncString(req.postalCode ?? "");
|
||||
domain.country = new EncString(req.country ?? "");
|
||||
domain.company = new EncString(req.company ?? "");
|
||||
domain.email = new EncString(req.email ?? "");
|
||||
domain.phone = new EncString(req.phone ?? "");
|
||||
domain.ssn = new EncString(req.ssn ?? "");
|
||||
domain.username = new EncString(req.username ?? "");
|
||||
domain.passportNumber = new EncString(req.passportNumber ?? "");
|
||||
domain.licenseNumber = new EncString(req.licenseNumber ?? "");
|
||||
domain.title = req.title ? new EncString(req.title) : undefined;
|
||||
domain.firstName = req.firstName ? new EncString(req.firstName) : undefined;
|
||||
domain.middleName = req.middleName ? new EncString(req.middleName) : undefined;
|
||||
domain.lastName = req.lastName ? new EncString(req.lastName) : undefined;
|
||||
domain.address1 = req.address1 ? new EncString(req.address1) : undefined;
|
||||
domain.address2 = req.address2 ? new EncString(req.address2) : undefined;
|
||||
domain.address3 = req.address3 ? new EncString(req.address3) : undefined;
|
||||
domain.city = req.city ? new EncString(req.city) : undefined;
|
||||
domain.state = req.state ? new EncString(req.state) : undefined;
|
||||
domain.postalCode = req.postalCode ? new EncString(req.postalCode) : undefined;
|
||||
domain.country = req.country ? new EncString(req.country) : undefined;
|
||||
domain.company = req.company ? new EncString(req.company) : undefined;
|
||||
domain.email = req.email ? new EncString(req.email) : undefined;
|
||||
domain.phone = req.phone ? new EncString(req.phone) : undefined;
|
||||
domain.ssn = req.ssn ? new EncString(req.ssn) : undefined;
|
||||
domain.username = req.username ? new EncString(req.username) : undefined;
|
||||
domain.passportNumber = req.passportNumber ? new EncString(req.passportNumber) : undefined;
|
||||
domain.licenseNumber = req.licenseNumber ? new EncString(req.licenseNumber) : undefined;
|
||||
return domain;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,9 +34,9 @@ export class LoginExport {
|
||||
if (req.uris != null) {
|
||||
domain.uris = req.uris.map((u) => LoginUriExport.toDomain(u));
|
||||
}
|
||||
domain.username = new EncString(req.username);
|
||||
domain.password = new EncString(req.password);
|
||||
domain.totp = new EncString(req.totp ?? "");
|
||||
domain.username = req.username ? new EncString(req.username) : undefined;
|
||||
domain.password = req.password ? new EncString(req.password) : undefined;
|
||||
domain.totp = req.totp ? new EncString(req.totp) : undefined;
|
||||
// Fido2credentials are currently not supported for exports.
|
||||
|
||||
return domain;
|
||||
|
||||
@@ -126,19 +126,15 @@ function generateFolder() {
|
||||
}
|
||||
|
||||
function expectEqualCiphers(ciphers: CipherView[] | Cipher[], jsonResult: string) {
|
||||
const parsed = JSON.parse(jsonResult);
|
||||
const actualItems = sanitizeDates(parsed.items);
|
||||
|
||||
const expected: CipherWithIdExport[] = [];
|
||||
const actual = JSON.stringify(JSON.parse(jsonResult).items);
|
||||
const items: CipherWithIdExport[] = [];
|
||||
ciphers.forEach((c: CipherView | Cipher) => {
|
||||
const item = new CipherWithIdExport();
|
||||
item.build(c);
|
||||
expected.push(item);
|
||||
items.push(item);
|
||||
});
|
||||
|
||||
const expectedSanitized = sanitizeDates(expected);
|
||||
|
||||
expect(JSON.stringify(actualItems)).toEqual(JSON.stringify(expectedSanitized));
|
||||
expect(actual).toEqual(JSON.stringify(items));
|
||||
}
|
||||
|
||||
function expectEqualFolderViews(folderViews: FolderView[] | Folder[], jsonResult: string) {
|
||||
@@ -166,18 +162,6 @@ function expectEqualFolders(folders: Folder[], jsonResult: string) {
|
||||
expect(actual).toMatchObject(expected);
|
||||
}
|
||||
|
||||
function sanitizeDates<T>(obj: T): T {
|
||||
const dateKeyRegex = /Date$/i;
|
||||
return JSON.parse(
|
||||
JSON.stringify(obj, (key, value) => {
|
||||
if (key && dateKeyRegex.test(key)) {
|
||||
return undefined; // omit this property
|
||||
}
|
||||
return value;
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
describe("VaultExportService", () => {
|
||||
let exportService: IndividualVaultExportService;
|
||||
let cryptoFunctionService: MockProxy<CryptoFunctionService>;
|
||||
|
||||
Reference in New Issue
Block a user