1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-27 21:53:25 +00:00

Merged with master and fixed conflicts

This commit is contained in:
gbubemismith
2023-05-16 14:05:20 -04:00
238 changed files with 7010 additions and 3008 deletions

View File

@@ -0,0 +1,3 @@
export * from "./utils";
export * from "./intercept-console";
export * from "./matchers";

View File

@@ -0,0 +1 @@
export * from "./to-equal-buffer";

View File

@@ -1,7 +1,7 @@
import { CollectionData } from "@bitwarden/common/admin-console/models/data/collection.data";
import { Collection } from "@bitwarden/common/admin-console/models/domain/collection";
import { mockEnc } from "../../../../spec";
import { CollectionData } from "../data/collection.data";
import { mockEnc } from "../../utils";
import { Collection } from "./collection";
describe("Collection", () => {
let data: CollectionData;

View File

@@ -1,9 +1,10 @@
import { MockProxy, mock, any, mockClear } from "jest-mock-extended";
import { BehaviorSubject, firstValueFrom } from "rxjs";
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { OrganizationData } from "@bitwarden/common/admin-console/models/data/organization.data";
import { OrganizationService } from "@bitwarden/common/admin-console/services/organization/organization.service";
import { StateService } from "../../../abstractions/state.service";
import { OrganizationData } from "../../models/data/organization.data";
import { OrganizationService } from "./organization.service";
describe("Organization Service", () => {
let organizationService: OrganizationService;

View File

@@ -4,6 +4,12 @@ export enum SsoType {
Saml2 = 2,
}
export enum MemberDecryptionType {
MasterPassword = 0,
KeyConnector = 1,
TrustedDeviceEncryption = 2,
}
export enum OpenIdConnectRedirectBehavior {
RedirectGet = 0,
FormPost = 1,

View File

@@ -1,5 +1,6 @@
import { BaseResponse } from "../../../models/response/base.response";
import {
MemberDecryptionType,
OpenIdConnectRedirectBehavior,
Saml2BindingType,
Saml2NameIdFormat,
@@ -11,8 +12,8 @@ import { SsoConfigView } from "../view/sso-config.view";
export class SsoConfigApi extends BaseResponse {
static fromView(view: SsoConfigView, api = new SsoConfigApi()) {
api.configType = view.configType;
api.memberDecryptionType = view.memberDecryptionType;
api.keyConnectorEnabled = view.keyConnectorEnabled;
api.keyConnectorUrl = view.keyConnectorUrl;
if (api.configType === SsoType.OpenIdConnect) {
@@ -52,8 +53,8 @@ export class SsoConfigApi extends BaseResponse {
return api;
}
configType: SsoType;
memberDecryptionType: MemberDecryptionType;
keyConnectorEnabled: boolean;
keyConnectorUrl: string;
// OpenId
@@ -95,8 +96,8 @@ export class SsoConfigApi extends BaseResponse {
}
this.configType = this.getResponseProperty("ConfigType");
this.memberDecryptionType = this.getResponseProperty("MemberDecryptionType");
this.keyConnectorEnabled = this.getResponseProperty("KeyConnectorEnabled");
this.keyConnectorUrl = this.getResponseProperty("KeyConnectorUrl");
this.authority = this.getResponseProperty("Authority");

View File

@@ -1,5 +1,6 @@
import { View } from "../../../models/view/view";
import {
MemberDecryptionType,
OpenIdConnectRedirectBehavior,
Saml2BindingType,
Saml2NameIdFormat,
@@ -14,7 +15,7 @@ export class SsoConfigView extends View {
configType: SsoType;
keyConnectorEnabled: boolean;
memberDecryptionType: MemberDecryptionType;
keyConnectorUrl: string;
openId: {
@@ -66,8 +67,8 @@ export class SsoConfigView extends View {
}
this.configType = orgSsoResponse.data.configType;
this.memberDecryptionType = orgSsoResponse.data.memberDecryptionType;
this.keyConnectorEnabled = orgSsoResponse.data.keyConnectorEnabled;
this.keyConnectorUrl = orgSsoResponse.data.keyConnectorUrl;
if (this.configType === SsoType.OpenIdConnect) {

View File

@@ -11,6 +11,7 @@ export class OrganizationSubscriptionResponse extends OrganizationResponse {
subscription: BillingSubscriptionResponse;
upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;
expiration: string;
expirationWithoutGracePeriod: string;
constructor(response: any) {
super(response);
@@ -24,5 +25,6 @@ export class OrganizationSubscriptionResponse extends OrganizationResponse {
? null
: new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);
this.expiration = this.getResponseProperty("Expiration");
this.expirationWithoutGracePeriod = this.getResponseProperty("ExpirationWithoutGracePeriod");
}
}

View File

@@ -0,0 +1,61 @@
import { View } from "../../../models/view/view";
import { OrganizationSubscriptionResponse } from "../response/organization-subscription.response";
export class SelfHostedOrganizationSubscriptionView implements View {
planName: string;
/**
* Date the subscription expires, including the grace period.
*/
expirationWithGracePeriod?: Date;
/**
* Date the subscription expires, excluding the grace period.
* This will be `null` for older (< v12) license files because they do not include this date.
* In this case, you have to rely on the `expirationWithGracePeriod` instead.
*/
expirationWithoutGracePeriod?: Date;
constructor(response: OrganizationSubscriptionResponse) {
if (response == null) {
return;
}
this.planName = response.plan.name;
this.expirationWithGracePeriod =
response.expiration != null ? new Date(response.expiration) : null;
this.expirationWithoutGracePeriod =
response.expirationWithoutGracePeriod != null
? new Date(response.expirationWithoutGracePeriod)
: null;
}
/**
* The subscription has separate expiration dates for the subscription and the end of grace period.
*/
get hasSeparateGracePeriod() {
return this.expirationWithGracePeriod != null && this.expirationWithoutGracePeriod != null;
}
/**
* True if the subscription has an expiration date.
*/
get hasExpiration() {
return this.expirationWithGracePeriod != null;
}
/**
* True if the subscription has an expiration date that has past, but may still be within the grace period.
* For older licenses (< v12), this will always be false because they do not include the `expirationWithoutGracePeriod`.
*/
get isExpiredWithoutGracePeriod() {
return this.hasSeparateGracePeriod && this.expirationWithoutGracePeriod < new Date();
}
/**
* True if the subscription has an expiration date that has past, including the grace period.
*/
get isExpiredAndOutsideGracePeriod() {
return this.hasExpiration && this.expirationWithGracePeriod < new Date();
}
}

View File

@@ -1,4 +1,5 @@
export enum FeatureFlag {
DisplayEuEnvironmentFlag = "display-eu-environment",
DisplayLowKdfIterationWarningFlag = "display-kdf-iteration-warning",
TrustedDeviceEncryption = "trusted-device-encryption",
}

View File

@@ -1,4 +1,4 @@
import { sequentialize } from "@bitwarden/common/misc/sequentialize";
import { sequentialize } from "./sequentialize";
describe("sequentialize decorator", () => {
it("should call the function once", async () => {

View File

@@ -1,5 +1,5 @@
import { sequentialize } from "@bitwarden/common/misc/sequentialize";
import { throttle } from "@bitwarden/common/misc/throttle";
import { sequentialize } from "./sequentialize";
import { throttle } from "./throttle";
describe("throttle decorator", () => {
it("should call the function once at a time", async () => {

View File

@@ -1,6 +1,6 @@
import * as path from "path";
import { Utils } from "@bitwarden/common/misc/utils";
import { Utils } from "./utils";
describe("Utils Service", () => {
describe("getDomain", () => {

View File

@@ -1,4 +1,4 @@
import { makeStaticByteArray } from "../../../spec/utils";
import { makeStaticByteArray } from "../../../spec";
import { Utils } from "../../misc/utils";
import { AccountKeys, EncryptionPair } from "./account";

View File

@@ -1,7 +1,7 @@
import { EncryptionType } from "@bitwarden/common/enums";
import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer";
import { makeStaticByteArray } from "../../../spec";
import { EncryptionType } from "../../enums";
import { makeStaticByteArray } from "../../utils";
import { EncArrayBuffer } from "./enc-array-buffer";
describe("encArrayBuffer", () => {
describe("parses the buffer", () => {

View File

@@ -2,12 +2,13 @@
import { Substitute, Arg } from "@fluffy-spoon/substitute";
import { mock, MockProxy } from "jest-mock-extended";
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service";
import { EncryptionType } from "@bitwarden/common/enums";
import { EncString } from "@bitwarden/common/models/domain/enc-string";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key";
import { ContainerService } from "@bitwarden/common/services/container.service";
import { CryptoService } from "../../abstractions/crypto.service";
import { EncryptService } from "../../abstractions/encrypt.service";
import { EncryptionType } from "../../enums";
import { ContainerService } from "../../services/container.service";
import { EncString } from "./enc-string";
import { SymmetricCryptoKey } from "./symmetric-crypto-key";
describe("EncString", () => {
afterEach(() => {

View File

@@ -1,7 +1,7 @@
import { EncryptionType } from "@bitwarden/common/enums";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key";
import { makeStaticByteArray } from "../../../spec";
import { EncryptionType } from "../../enums";
import { makeStaticByteArray } from "../../utils";
import { SymmetricCryptoKey } from "./symmetric-crypto-key";
describe("SymmetricCryptoKey", () => {
it("errors if no key", () => {

View File

@@ -1,6 +1,6 @@
import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service";
import { interceptConsole, restoreConsole } from "../../spec";
import { interceptConsole, restoreConsole } from "../shared/interceptConsole";
import { ConsoleLogService } from "./consoleLog.service";
let caughtMessage: any;

View File

@@ -1,11 +1,11 @@
import { mock, mockReset } from "jest-mock-extended";
import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service";
import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service";
import { LogService } from "@bitwarden/common/abstractions/log.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { CryptoService } from "@bitwarden/common/services/crypto.service";
import { CryptoFunctionService } from "../abstractions/cryptoFunction.service";
import { EncryptService } from "../abstractions/encrypt.service";
import { LogService } from "../abstractions/log.service";
import { PlatformUtilsService } from "../abstractions/platformUtils.service";
import { StateService } from "../abstractions/state.service";
import { CryptoService } from "../services/crypto.service";
describe("cryptoService", () => {
let cryptoService: CryptoService;

View File

@@ -1,15 +1,15 @@
import { mockReset, mock } from "jest-mock-extended";
import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service";
import { LogService } from "@bitwarden/common/abstractions/log.service";
import { EncryptionType } from "@bitwarden/common/enums";
import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer";
import { EncString } from "@bitwarden/common/models/domain/enc-string";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key";
import { EncryptServiceImplementation } from "@bitwarden/common/services/cryptography/encrypt.service.implementation";
import { makeStaticByteArray } from "../../spec";
import { CryptoFunctionService } from "../abstractions/cryptoFunction.service";
import { LogService } from "../abstractions/log.service";
import { EncryptionType } from "../enums";
import { EncArrayBuffer } from "../models/domain/enc-array-buffer";
import { EncString } from "../models/domain/enc-string";
import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key";
import { CsprngArray } from "../types/csprng";
import { CsprngArray } from "../../src/types/csprng";
import { makeStaticByteArray } from "../utils";
import { EncryptServiceImplementation } from "./cryptography/encrypt.service.implementation";
describe("EncryptService", () => {
const cryptoFunctionService = mock<CryptoFunctionService>();

View File

@@ -1,14 +1,15 @@
import { mock } from "jest-mock-extended";
import { lastValueFrom } from "rxjs";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { OrganizationDomainSsoDetailsResponse } from "@bitwarden/common/abstractions/organization-domain/responses/organization-domain-sso-details.response";
import { OrganizationDomainResponse } from "@bitwarden/common/abstractions/organization-domain/responses/organization-domain.response";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { OrgDomainApiService } from "@bitwarden/common/services/organization-domain/org-domain-api.service";
import { OrgDomainService } from "@bitwarden/common/services/organization-domain/org-domain.service";
import { OrganizationDomainSsoDetailsRequest } from "@bitwarden/common/services/organization-domain/requests/organization-domain-sso-details.request";
import { ApiService } from "../../abstractions/api.service";
import { I18nService } from "../../abstractions/i18n.service";
import { OrganizationDomainSsoDetailsResponse } from "../../abstractions/organization-domain/responses/organization-domain-sso-details.response";
import { OrganizationDomainResponse } from "../../abstractions/organization-domain/responses/organization-domain.response";
import { PlatformUtilsService } from "../../abstractions/platformUtils.service";
import { OrgDomainApiService } from "./org-domain-api.service";
import { OrgDomainService } from "./org-domain.service";
import { OrganizationDomainSsoDetailsRequest } from "./requests/organization-domain-sso-details.request";
const mockedGetAllByOrgIdResponse: any = {
data: [

View File

@@ -1,10 +1,11 @@
import { mock, mockReset } from "jest-mock-extended";
import { lastValueFrom } from "rxjs";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { OrganizationDomainResponse } from "@bitwarden/common/abstractions/organization-domain/responses/organization-domain.response";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { OrgDomainService } from "@bitwarden/common/services/organization-domain/org-domain.service";
import { I18nService } from "../../abstractions/i18n.service";
import { OrganizationDomainResponse } from "../../abstractions/organization-domain/responses/organization-domain.response";
import { PlatformUtilsService } from "../../abstractions/platformUtils.service";
import { OrgDomainService } from "./org-domain.service";
const mockedUnverifiedDomainServerResponse = {
creationDate: "2022-12-13T23:16:43.7066667Z",

View File

@@ -2,22 +2,23 @@
import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute";
import { BehaviorSubject, firstValueFrom } from "rxjs";
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service";
import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction";
import { OrganizationUserStatusType, PolicyType } from "@bitwarden/common/admin-console/enums";
import { PermissionsApi } from "@bitwarden/common/admin-console/models/api/permissions.api";
import { OrganizationData } from "@bitwarden/common/admin-console/models/data/organization.data";
import { PolicyData } from "@bitwarden/common/admin-console/models/data/policy.data";
import { MasterPasswordPolicyOptions } from "@bitwarden/common/admin-console/models/domain/master-password-policy-options";
import { Organization } from "@bitwarden/common/admin-console/models/domain/organization";
import { Policy } from "@bitwarden/common/admin-console/models/domain/policy";
import { ResetPasswordPolicyOptions } from "@bitwarden/common/admin-console/models/domain/reset-password-policy-options";
import { PolicyResponse } from "@bitwarden/common/admin-console/models/response/policy.response";
import { PolicyService } from "@bitwarden/common/admin-console/services/policy/policy.service";
import { ListResponse } from "@bitwarden/common/models/response/list.response";
import { ContainerService } from "@bitwarden/common/services/container.service";
import { StateService } from "@bitwarden/common/services/state.service";
import { CryptoService } from "../abstractions/crypto.service";
import { EncryptService } from "../abstractions/encrypt.service";
import { OrganizationService } from "../admin-console/abstractions/organization/organization.service.abstraction";
import { OrganizationUserStatusType, PolicyType } from "../admin-console/enums";
import { PermissionsApi } from "../admin-console/models/api/permissions.api";
import { OrganizationData } from "../admin-console/models/data/organization.data";
import { PolicyData } from "../admin-console/models/data/policy.data";
import { MasterPasswordPolicyOptions } from "../admin-console/models/domain/master-password-policy-options";
import { Organization } from "../admin-console/models/domain/organization";
import { Policy } from "../admin-console/models/domain/policy";
import { ResetPasswordPolicyOptions } from "../admin-console/models/domain/reset-password-policy-options";
import { PolicyResponse } from "../admin-console/models/response/policy.response";
import { PolicyService } from "../admin-console/services/policy/policy.service";
import { ListResponse } from "../models/response/list.response";
import { ContainerService } from "./container.service";
import { StateService } from "./state.service";
describe("PolicyService", () => {
let policyService: PolicyService;

View File

@@ -2,11 +2,12 @@
import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute";
import { BehaviorSubject, firstValueFrom } from "rxjs";
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service";
import { ContainerService } from "@bitwarden/common/services/container.service";
import { SettingsService } from "@bitwarden/common/services/settings.service";
import { StateService } from "@bitwarden/common/services/state.service";
import { CryptoService } from "../abstractions/crypto.service";
import { EncryptService } from "../abstractions/encrypt.service";
import { ContainerService } from "./container.service";
import { SettingsService } from "./settings.service";
import { StateService } from "./state.service";
describe("SettingsService", () => {
let settingsService: SettingsService;

View File

@@ -2,12 +2,13 @@
import { Substitute, SubstituteOf } from "@fluffy-spoon/substitute";
import { MockProxy, any, mock } from "jest-mock-extended";
import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service";
import { StateVersion } from "@bitwarden/common/enums";
import { StateFactory } from "@bitwarden/common/factories/stateFactory";
import { Account } from "@bitwarden/common/models/domain/account";
import { GlobalState } from "@bitwarden/common/models/domain/global-state";
import { StateMigrationService } from "@bitwarden/common/services/stateMigration.service";
import { AbstractStorageService } from "../abstractions/storage.service";
import { StateVersion } from "../enums";
import { StateFactory } from "../factories/stateFactory";
import { Account } from "../models/domain/account";
import { GlobalState } from "../models/domain/global-state";
import { StateMigrationService } from "./stateMigration.service";
const userId = "USER_ID";

View File

@@ -1,10 +1,11 @@
// eslint-disable-next-line no-restricted-imports
import { Substitute } from "@fluffy-spoon/substitute";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { Utils } from "@bitwarden/common/misc/utils";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key";
import { WebCryptoFunctionService } from "@bitwarden/common/services/webCryptoFunction.service";
import { PlatformUtilsService } from "../abstractions/platformUtils.service";
import { Utils } from "../misc/utils";
import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key";
import { WebCryptoFunctionService } from "./webCryptoFunction.service";
const RsaPublicKey =
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl0Vawl/toXzkEvB82FEtqHP" +

View File

@@ -1,7 +1,7 @@
// eslint-disable-next-line no-restricted-imports
import { Substitute, Arg } from "@fluffy-spoon/substitute";
import { mockEnc } from "../../../../../spec/utils";
import { mockEnc } from "../../../../../spec";
import { SendType } from "../../enums/send-type";
import { SendAccessResponse } from "../response/send-access.response";

View File

@@ -1,4 +1,4 @@
import { mockEnc } from "../../../../../spec/utils";
import { mockEnc } from "../../../../../spec";
import { SendFileData } from "../data/send-file.data";
import { SendFile } from "./send-file";

View File

@@ -1,4 +1,4 @@
import { mockEnc } from "../../../../../spec/utils";
import { mockEnc } from "../../../../../spec";
import { SendTextData } from "../data/send-text.data";
import { SendText } from "./send-text";

View File

@@ -1,7 +1,7 @@
// eslint-disable-next-line no-restricted-imports
import { Substitute, Arg, SubstituteOf } from "@fluffy-spoon/substitute";
import { makeStaticByteArray, mockEnc } from "../../../../../spec/utils";
import { makeStaticByteArray, mockEnc } from "../../../../../spec";
import { CryptoService } from "../../../../abstractions/crypto.service";
import { EncryptService } from "../../../../abstractions/encrypt.service";
import { EncString } from "../../../../models/domain/enc-string";

View File

@@ -1,6 +1,6 @@
import { mock, MockProxy } from "jest-mock-extended";
import { makeStaticByteArray, mockEnc, mockFromJson } from "../../../../spec/utils";
import { makeStaticByteArray, mockEnc, mockFromJson } from "../../../../spec";
import { CryptoService } from "../../../abstractions/crypto.service";
import { EncryptService } from "../../../abstractions/encrypt.service";
import { EncString } from "../../../models/domain/enc-string";

View File

@@ -1,4 +1,4 @@
import { mockEnc, mockFromJson } from "../../../../spec/utils";
import { mockEnc, mockFromJson } from "../../../../spec";
import { EncString } from "../../../models/domain/enc-string";
import { CardData } from "../../../vault/models/data/card.data";
import { Card } from "../../models/domain/card";

View File

@@ -2,7 +2,7 @@
import { Substitute, Arg } from "@fluffy-spoon/substitute";
import { Jsonify } from "type-fest";
import { mockEnc, mockFromJson } from "../../../../spec/utils";
import { mockEnc, mockFromJson } from "../../../../spec";
import { FieldType, SecureNoteType, UriMatchType } from "../../../enums";
import { EncString } from "../../../models/domain/enc-string";
import { InitializerKey } from "../../../services/cryptography/initializer-key";

View File

@@ -1,4 +1,4 @@
import { mockEnc, mockFromJson } from "../../../../spec/utils";
import { mockEnc, mockFromJson } from "../../../../spec";
import { FieldType } from "../../../enums";
import { EncString } from "../../../models/domain/enc-string";
import { FieldData } from "../../models/data/field.data";

View File

@@ -1,4 +1,4 @@
import { mockEnc, mockFromJson } from "../../../../spec/utils";
import { mockEnc, mockFromJson } from "../../../../spec";
import { EncString } from "../../../models/domain/enc-string";
import { FolderData } from "../../models/data/folder.data";
import { Folder } from "../../models/domain/folder";

View File

@@ -1,4 +1,4 @@
import { mockEnc, mockFromJson } from "../../../../spec/utils";
import { mockEnc, mockFromJson } from "../../../../spec";
import { EncString } from "../../../models/domain/enc-string";
import { IdentityData } from "../../models/data/identity.data";
import { Identity } from "../../models/domain/identity";

View File

@@ -1,6 +1,6 @@
import { Jsonify } from "type-fest";
import { mockEnc, mockFromJson } from "../../../../spec/utils";
import { mockEnc, mockFromJson } from "../../../../spec";
import { UriMatchType } from "../../../enums";
import { EncString } from "../../../models/domain/enc-string";
import { LoginUriData } from "../data/login-uri.data";

View File

@@ -1,7 +1,7 @@
// eslint-disable-next-line no-restricted-imports
import { Substitute, Arg } from "@fluffy-spoon/substitute";
import { mockEnc, mockFromJson } from "../../../../spec/utils";
import { mockEnc, mockFromJson } from "../../../../spec";
import { UriMatchType } from "../../../enums";
import { EncString } from "../../../models/domain/enc-string";
import { LoginData } from "../../models/data/login.data";

View File

@@ -1,4 +1,4 @@
import { mockEnc, mockFromJson } from "../../../../spec/utils";
import { mockEnc, mockFromJson } from "../../../../spec";
import { EncString } from "../../../models/domain/enc-string";
import { PasswordHistoryData } from "../../models/data/password-history.data";
import { Password } from "../../models/domain/password";

View File

@@ -1,4 +1,4 @@
import { mockFromJson } from "../../../../spec/utils";
import { mockFromJson } from "../../../../spec";
import { SymmetricCryptoKey } from "../../../models/domain/symmetric-crypto-key";
import { AttachmentView } from "./attachment.view";

View File

@@ -1,4 +1,4 @@
import { mockFromJson } from "../../../../spec/utils";
import { mockFromJson } from "../../../../spec";
import { CipherType } from "../../enums/cipher-type";
import { AttachmentView } from "./attachment.view";

View File

@@ -1,4 +1,4 @@
import { mockFromJson } from "../../../../spec/utils";
import { mockFromJson } from "../../../../spec";
import { LoginUriView } from "./login-uri.view";
import { LoginView } from "./login.view";

View File

@@ -1,6 +1,6 @@
import { webcrypto } from "crypto";
import { toEqualBuffer } from "./spec/matchers/toEqualBuffer";
import { toEqualBuffer } from "./spec";
Object.defineProperty(window, "crypto", {
value: webcrypto,