passbolt-browser-extension 5.3.2 → 5.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -1
- package/README.md +2 -2
- package/RELEASE_NOTES.md +8 -30
- package/crowdin.yml +1 -0
- package/package.json +4 -3
- package/src/all/_locales/cs/messages.json +10 -0
- package/src/all/background_page/controller/InformMenuController/InformMenuController.js +3 -3
- package/src/all/background_page/controller/auth/redirectPostLoginController.js +57 -0
- package/src/all/background_page/controller/auth/redirectPostLoginController.test.js +82 -0
- package/src/all/background_page/controller/auth/redirectToAdminWorkspaceController.js +50 -0
- package/src/all/background_page/controller/auth/redirectToAdminWorkspaceController.test.js +45 -0
- package/src/all/background_page/controller/comment/createCommentController.js +3 -3
- package/src/all/background_page/controller/comment/createCommentController.test.js +5 -5
- package/src/all/background_page/controller/comment/deleteCommentController.js +3 -3
- package/src/all/background_page/controller/comment/deleteCommentController.test.js +3 -3
- package/src/all/background_page/controller/comment/getCommentsByRessourceIdController.js +3 -3
- package/src/all/background_page/controller/comment/getCommentsByRessourceidController.test.js +2 -2
- package/src/all/background_page/controller/import/importResourcesFileController.test.js +23 -23
- package/src/all/background_page/controller/metadata/enableEncryptedMetadataForExistingInstanceController.js +54 -0
- package/src/all/background_page/controller/metadata/enableEncryptedMetadataForExistingInstanceController.test.js +54 -0
- package/src/all/background_page/controller/metadata/enableMetadataSetupSettingsController.js +54 -0
- package/src/all/background_page/controller/metadata/enableMetadataSetupSettingsController.test.js +64 -0
- package/src/all/background_page/controller/metadata/findAllNonDeletedMetadataKeysController.js +2 -3
- package/src/all/background_page/controller/metadata/findMetadataGettingStartedSettingsController.js +50 -0
- package/src/all/background_page/controller/metadata/findMetadataGettingStartedSettingsController.test.js +33 -0
- package/src/all/background_page/controller/metadata/findMetadataSetupSettingsController.js +50 -0
- package/src/all/background_page/controller/metadata/findMetadataSetupSettingsController.test.js +42 -0
- package/src/all/background_page/controller/metadata/keepCleartextMetadataForExistingInstanceController.js +51 -0
- package/src/all/background_page/controller/metadata/keepCleartextMetadataForExistingInstanceController.test.js +47 -0
- package/src/all/background_page/controller/permission/FindAcoPermissionsForDisplayController.js +1 -0
- package/src/all/background_page/controller/quickaccess/consumeInProgressCreationResourceController.js +53 -0
- package/src/all/background_page/controller/quickaccess/consumeInProgressCreationResourceController.test.js +40 -0
- package/src/all/background_page/controller/quickaccess/prepareResourceController.js +64 -0
- package/src/all/background_page/controller/quickaccess/prepareResourceController.test.js +73 -0
- package/src/all/background_page/controller/resource/resourceDeleteController.js +67 -0
- package/src/all/background_page/controller/resource/resourceDeleteController.test.js +114 -0
- package/src/all/background_page/controller/resourceLocalStorage/resourceUpdateLocalStorageController.js +1 -1
- package/src/all/background_page/controller/resourceLocalStorage/resourceUpdateLocalStorageController.test.js +5 -1
- package/src/all/background_page/controller/setup/signInSetupController.js +0 -10
- package/src/all/background_page/controller/setup/signInSetupController.test.js +11 -12
- package/src/all/background_page/controller/sso/saveSsoSettingsAsDraftController.test.data.js +1 -0
- package/src/all/background_page/controller/webIntegration/webIntegrationController.js +1 -1
- package/src/all/background_page/event/appEvents.js +47 -0
- package/src/all/background_page/event/authEvents.js +4 -8
- package/src/all/background_page/event/informMenuEvents.js +31 -0
- package/src/all/background_page/event/quickAccessEvents.js +18 -23
- package/src/all/background_page/event/recoverEvents.js +12 -0
- package/src/all/background_page/event/resourceEvents.js +4 -11
- package/src/all/background_page/event/setupEvents.js +55 -0
- package/src/all/background_page/model/comment/{commentModel.js → commentService.js} +6 -2
- package/src/all/background_page/model/comment/commentService.test.js +98 -0
- package/src/all/background_page/model/entity/actionLog/actionLogsCollection.js +3 -3
- package/src/all/background_page/model/entity/actionLog/permissionsUpdatedActionLogEntity.js +4 -0
- package/src/all/background_page/model/entity/import/importResourcesFileEntity.test.data.js +3 -3
- package/src/all/background_page/model/entity/organizationSettings/organizationSettingsEntity.test.data.js +4 -0
- package/src/all/background_page/model/entity/permission/actionLog/updatedPermissionEntity.test.data.js +23 -0
- package/src/all/background_page/model/entity/permission/actionLog/updatedPermissionEntity.test.js +18 -33
- package/src/all/background_page/model/entity/permission/actionLog/updatedPermissionsCollection.js +71 -2
- package/src/all/background_page/model/entity/permission/actionLog/updatedPermissionsCollection.test.js +204 -0
- package/src/all/background_page/model/entity/permission/permissionsCollection.js +78 -0
- package/src/all/background_page/model/entity/permission/permissionsCollection.test.js +139 -7
- package/src/all/background_page/model/entity/plaintext/plaintextEntity.js +9 -0
- package/src/all/background_page/model/entity/resource/external/externalResourceEntity.js +65 -8
- package/src/all/background_page/model/entity/resource/external/externalResourceEntity.test.data.js +5 -4
- package/src/all/background_page/model/entity/resource/external/externalResourceEntity.test.js +72 -16
- package/src/all/background_page/model/entity/resource/external/externalResourcesCollection.test.js +2 -1
- package/src/all/background_page/model/entity/totp/externalTotpEntity.js +2 -2
- package/src/all/background_page/model/entity/totp/totpEntity.test.js +1 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csv1PasswordRowComposer.test.js +2 -2
- package/src/all/background_page/model/export/resources/csvRowComposer/csv1passwordRowComposer.js +5 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvBitWardenRowComposer.js +9 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvBitWardenRowComposer.test.js +6 -4
- package/src/all/background_page/model/export/resources/csvRowComposer/csvChromiumRowComposer.js +5 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvChromiumRowComposer.test.js +3 -2
- package/src/all/background_page/model/export/resources/csvRowComposer/csvDashlaneRowComposer.js +5 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvDashlaneRowComposer.test.js +2 -3
- package/src/all/background_page/model/export/resources/csvRowComposer/csvKdbxRowComposer.js +3 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvKdbxRowComposer.test.js +6 -4
- package/src/all/background_page/model/export/resources/csvRowComposer/csvLastPassRowComposer.js +5 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvLastPassRowComposer.test.js +2 -3
- package/src/all/background_page/model/export/resources/csvRowComposer/csvLogMeOnceRowComposer.js +5 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvLogMeOnceRowComposer.test.js +2 -3
- package/src/all/background_page/model/export/resources/csvRowComposer/csvMozillaPlatformRowComposer.js +6 -2
- package/src/all/background_page/model/export/resources/csvRowComposer/csvMozillaPlatformRowComposer.test.js +2 -2
- package/src/all/background_page/model/export/resources/csvRowComposer/csvNordpassRowComposer.js +5 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvNordpassRowComposer.test.js +2 -2
- package/src/all/background_page/model/export/resources/csvRowComposer/csvSafariRowComposer.js +5 -1
- package/src/all/background_page/model/export/resources/csvRowComposer/csvSafariRowComposer.test.js +2 -2
- package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +44 -2
- package/src/all/background_page/model/export/resources/resourcesKdbxExporter.test.js +24 -3
- package/src/all/background_page/model/import/resources/csvRowParser/abstractCsvRowParser.js +1 -1
- package/src/all/background_page/model/import/resources/csvRowParser/csv1PasswordRowParser.js +5 -3
- package/src/all/background_page/model/import/resources/csvRowParser/csv1PasswordRowParser.test.js +3 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvBitWardenRowParser.js +22 -3
- package/src/all/background_page/model/import/resources/csvRowParser/csvBitWardenRowParser.test.js +92 -4
- package/src/all/background_page/model/import/resources/csvRowParser/csvChromiumRowParser.js +4 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvChromiumRowParser.test.js +2 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvDashlaneRowParser.js +4 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvDashlaneRowParser.test.js +3 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvKdbxRowParser.js +5 -3
- package/src/all/background_page/model/import/resources/csvRowParser/csvKdbxRowParser.test.js +4 -4
- package/src/all/background_page/model/import/resources/csvRowParser/csvLastPassRowParser.js +4 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvLastPassRowParser.test.js +2 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvLogMeOnceRowParser.js +5 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvLogMeOnceRowParser.test.js +2 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvMozillaPlatformRowParser.js +5 -3
- package/src/all/background_page/model/import/resources/csvRowParser/csvMozillaPlatformRowParser.test.js +2 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvNordpassRowParser.js +4 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvNordpassRowParser.test.js +2 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvSafariRowParser.js +4 -2
- package/src/all/background_page/model/import/resources/csvRowParser/csvSafariRowParser.test.js +2 -2
- package/src/all/background_page/model/import/resources/kdbx/kdbx-custom-fields-with-uris.kdbx +0 -0
- package/src/all/background_page/model/import/resources/kdbx/kdbx-multiple-uris-with-33-entries.kdbx +0 -0
- package/src/all/background_page/model/import/resources/kdbx/kdbx-multiple-uris.kdbx +0 -0
- package/src/all/background_page/model/import/resources/kdbx/kdbx-with-protected-custom-fields.kdbx +0 -0
- package/src/all/background_page/model/import/resources/resourcesCsvImportParser.test.js +1 -1
- package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.js +124 -41
- package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.test.js +133 -1
- package/src/all/background_page/model/import/resourcesImportParser.test.js +0 -1
- package/src/all/background_page/model/resource/resourceModel.js +0 -68
- package/src/all/background_page/service/api/comment/commentApiService.test.js +1 -1
- package/src/all/background_page/service/api/metadata/metadataSetupSettingsApiService.js +40 -0
- package/src/all/background_page/service/api/metadata/metadataSetupSettingsApiService.test.js +54 -0
- package/src/all/background_page/service/api/setup/setupService.js +2 -2
- package/src/all/background_page/service/api/setup/setupService.test.js +132 -0
- package/src/all/background_page/service/local_storage/resourceLocalStorage.js +25 -1
- package/src/all/background_page/service/local_storage/resourceLocalStorage.test.js +54 -0
- package/src/all/background_page/service/metadata/configureMetadataSettingsService.js +100 -0
- package/src/all/background_page/service/metadata/configureMetadataSettingsService.test.js +265 -0
- package/src/all/background_page/service/metadata/createMetadataKeyService.js +1 -1
- package/src/all/background_page/service/metadata/decryptMetadataPrivateKeysService.js +3 -19
- package/src/all/background_page/service/metadata/decryptMetadataService.js +5 -3
- package/src/all/background_page/service/metadata/decryptMetadataService.test.js +31 -24
- package/src/all/background_page/service/metadata/encryptMetadataService.js +2 -18
- package/src/all/background_page/service/metadata/findAndUpdateMetadataKeysSessionStorageService.js +5 -2
- package/src/all/background_page/service/metadata/findAndUpdateMetadataKeysSessionStorageService.test.js +4 -6
- package/src/all/background_page/service/metadata/findMetadataKeysService.js +8 -12
- package/src/all/background_page/service/metadata/findMetadataKeysService.test.js +21 -47
- package/src/all/background_page/service/metadata/findMetadataSetupSettingsService.js +45 -0
- package/src/all/background_page/service/metadata/findMetadataSetupSettingsService.test.js +68 -0
- package/src/all/background_page/service/metadata/generateMetadataKeyService.js +1 -1
- package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.test.js +16 -0
- package/src/all/background_page/service/passphrase/getPassphraseService.js +13 -0
- package/src/all/background_page/service/permission/findPermissionsService.js +3 -1
- package/src/all/background_page/service/resource/delete/deleteResourceService.js +60 -0
- package/src/all/background_page/service/resource/delete/deleteResourceService.test.js +75 -0
- package/src/all/background_page/service/resource/export/exportResourcesService.js +22 -0
- package/src/all/background_page/service/resource/export/exportResourcesService.test.js +48 -1
- package/src/all/background_page/service/resource/import/ImportResourcesService.js +34 -3
- package/src/all/background_page/service/resource/import/ImportResourcesService.test.js +55 -13
- package/src/all/background_page/service/sessionKey/decryptSessionKeysBundlesService.js +2 -18
- package/src/all/background_page/service/sessionKey/encryptSessionKeysBundlesService.js +1 -17
- package/src/all/locales/cs-CZ/common.json +130 -0
- package/src/all/locales/de-DE/common.json +11 -5
- package/src/all/locales/en-UK/common.json +6 -0
- package/src/all/locales/es-ES/common.json +6 -0
- package/src/all/locales/fr-FR/common.json +6 -0
- package/src/all/locales/it-IT/common.json +6 -0
- package/src/all/locales/ja-JP/common.json +6 -0
- package/src/all/locales/ko-KR/common.json +6 -0
- package/src/all/locales/lt-LT/common.json +6 -0
- package/src/all/locales/nl-NL/common.json +6 -0
- package/src/all/locales/pl-PL/common.json +6 -0
- package/src/all/locales/pt-BR/common.json +6 -0
- package/src/all/locales/ro-RO/common.json +6 -0
- package/src/all/locales/ru-RU/common.json +6 -0
- package/src/all/locales/sl-SI/common.json +6 -0
- package/src/all/locales/sv-SE/common.json +6 -0
- package/src/all/locales/uk-UA/common.json +6 -0
- package/src/chrome/manifest.json +1 -1
- package/src/chrome-mv3/manifest.json +1 -1
- package/src/firefox/manifest.json +1 -1
- package/src/safari/manifest.json +1 -1
|
@@ -219,7 +219,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
219
219
|
id: importedResources[0].id,
|
|
220
220
|
name: 'Password 1',
|
|
221
221
|
username: 'username1',
|
|
222
|
-
|
|
222
|
+
uris: ['https://url1.com'],
|
|
223
223
|
resource_type_id: expectedResourceType.id,
|
|
224
224
|
folder_parent_path: importedResources[0].folderParentPath,
|
|
225
225
|
folder_parent_path_expected: "/Root/Folder 1/Folder 2",
|
|
@@ -229,7 +229,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
229
229
|
id: importedResources[1].id,
|
|
230
230
|
name: 'Password 2',
|
|
231
231
|
username: 'username2',
|
|
232
|
-
|
|
232
|
+
uris: ['https://url2.com'],
|
|
233
233
|
resource_type_id: expectedResourceType.id,
|
|
234
234
|
folder_parent_path: importedResources[1].folderParentPath,
|
|
235
235
|
folder_parent_path_expected: "/Root/Folder 1",
|
|
@@ -239,7 +239,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
239
239
|
id: importedResources[2].id,
|
|
240
240
|
name: 'Password 4',
|
|
241
241
|
username: 'username4',
|
|
242
|
-
|
|
242
|
+
uris: ['https://url4.com'],
|
|
243
243
|
resource_type_id: expectedResourceType.id,
|
|
244
244
|
folder_parent_path: importedResources[2].folderParentPath,
|
|
245
245
|
folder_parent_path_expected: "/Root/Folder 2/Folder 1",
|
|
@@ -249,7 +249,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
249
249
|
id: importedResources[3].id,
|
|
250
250
|
name: 'Password 3',
|
|
251
251
|
username: 'username3',
|
|
252
|
-
|
|
252
|
+
uris: ['https://url3.com'],
|
|
253
253
|
resource_type_id: expectedResourceType.id,
|
|
254
254
|
folder_parent_path: importedResources[3].folderParentPath,
|
|
255
255
|
folder_parent_path_expected: "/Root/Folder 3/Folder 4",
|
|
@@ -292,7 +292,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
292
292
|
id: importedResources[0].id,
|
|
293
293
|
name: 'Password 1',
|
|
294
294
|
username: 'username1',
|
|
295
|
-
|
|
295
|
+
uris: ['https://url1.com'],
|
|
296
296
|
resource_type_id: expectedResourceType.id,
|
|
297
297
|
folder_parent_path: importedResources[0].folderParentPath,
|
|
298
298
|
folder_parent_path_expected: "/Root",
|
|
@@ -329,7 +329,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
329
329
|
id: importedResources[0].id,
|
|
330
330
|
name: 'Password 1',
|
|
331
331
|
username: 'username1',
|
|
332
|
-
|
|
332
|
+
uris: ['https://url1.com'],
|
|
333
333
|
resource_type_id: expectedResourceType.id,
|
|
334
334
|
folder_parent_path: importedResources[0].folderParentPath,
|
|
335
335
|
folder_parent_path_expected: "/Root",
|
|
@@ -393,7 +393,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
393
393
|
id: importedResources[0].id,
|
|
394
394
|
name: 'Password 1',
|
|
395
395
|
username: 'Username 1',
|
|
396
|
-
|
|
396
|
+
uris: ['https://url1.com'],
|
|
397
397
|
resource_type_id: expectedResourceType.id,
|
|
398
398
|
folder_parent_path: importedResources[0].folderParentPath,
|
|
399
399
|
folder_parent_path_expected: ""
|
|
@@ -464,7 +464,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
464
464
|
id: importedResources[0].id,
|
|
465
465
|
name: 'Password 1',
|
|
466
466
|
username: 'Username 1',
|
|
467
|
-
|
|
467
|
+
uris: ['https://url1.com'],
|
|
468
468
|
resource_type_id: expectedResourceType.id,
|
|
469
469
|
folder_parent_path: importedResources[0].folderParentPath,
|
|
470
470
|
}));
|
|
@@ -487,18 +487,6 @@ describe("ImportResourcesFileController", () => {
|
|
|
487
487
|
metadataTypesSettings: defaultMetadataTypesSettingsV50FreshDto(),
|
|
488
488
|
resourceType: RESOURCE_TYPE_V5_DEFAULT_SLUG
|
|
489
489
|
},
|
|
490
|
-
{
|
|
491
|
-
scenario: "bitwarden",
|
|
492
|
-
file: bitwardenCsvFile,
|
|
493
|
-
metadataTypesSettings: defaultMetadataTypesSettingsV4Dto(),
|
|
494
|
-
resourceType: RESOURCE_TYPE_PASSWORD_AND_DESCRIPTION_SLUG
|
|
495
|
-
},
|
|
496
|
-
{
|
|
497
|
-
scenario: "bitwarden",
|
|
498
|
-
file: bitwardenCsvFile,
|
|
499
|
-
metadataTypesSettings: defaultMetadataTypesSettingsV50FreshDto(),
|
|
500
|
-
resourceType: RESOURCE_TYPE_V5_DEFAULT_SLUG
|
|
501
|
-
},
|
|
502
490
|
{
|
|
503
491
|
scenario: "lastpass", file: lastpassCsvFile,
|
|
504
492
|
metadataTypesSettings: defaultMetadataTypesSettingsV4Dto(),
|
|
@@ -545,7 +533,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
545
533
|
id: importedResources[0].id,
|
|
546
534
|
name: 'Password 1',
|
|
547
535
|
username: 'Username 1',
|
|
548
|
-
|
|
536
|
+
uris: ['https://url1.com'],
|
|
549
537
|
resource_type_id: expectedResourceType.id,
|
|
550
538
|
folder_parent_path: importedResources[0].folderParentPath,
|
|
551
539
|
folder_parent_path_expected: "/Folder 1"
|
|
@@ -571,6 +559,18 @@ describe("ImportResourcesFileController", () => {
|
|
|
571
559
|
metadataTypesSettings: defaultMetadataTypesSettingsV50FreshDto(),
|
|
572
560
|
resourceType: RESOURCE_TYPE_V5_DEFAULT_TOTP_SLUG
|
|
573
561
|
},
|
|
562
|
+
{
|
|
563
|
+
scenario: "bitwarden",
|
|
564
|
+
file: bitwardenCsvFile,
|
|
565
|
+
metadataTypesSettings: defaultMetadataTypesSettingsV4Dto(),
|
|
566
|
+
resourceType: RESOURCE_TYPE_PASSWORD_DESCRIPTION_TOTP_SLUG
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
scenario: "bitwarden",
|
|
570
|
+
file: bitwardenCsvFile,
|
|
571
|
+
metadataTypesSettings: defaultMetadataTypesSettingsV50FreshDto(),
|
|
572
|
+
resourceType: RESOURCE_TYPE_V5_DEFAULT_TOTP_SLUG
|
|
573
|
+
},
|
|
574
574
|
]).describe("Should parse keypass with description, folder and totp", test => {
|
|
575
575
|
beforeEach(() => {
|
|
576
576
|
jest.spyOn(GetOrFindMetadataSettingsService.prototype, "getOrFindTypesSettings")
|
|
@@ -588,13 +588,13 @@ describe("ImportResourcesFileController", () => {
|
|
|
588
588
|
const expectedResourceType = collection.find(resourceType => resourceType.slug === test.resourceType);
|
|
589
589
|
const secret1 = await decryptSecret(result.importResources.items[0].secrets.items[0].data, pgpKeys.ada.private, pgpKeys.ada.passphrase);
|
|
590
590
|
|
|
591
|
-
expect(secret1).toEqual("{\"password\":\"
|
|
591
|
+
expect(secret1).toEqual("{\"password\":\"Password 1\",\"description\":\"Description 1\",\"totp\":{\"secret_key\":\"THISISASECRET\",\"period\":30,\"digits\":6,\"algorithm\":\"SHA1\"}}");
|
|
592
592
|
|
|
593
593
|
const externalEntity1 = new ExternalResourceEntity(defaultExternalResourceImportMinimalDto({
|
|
594
594
|
id: importedResources[0].id,
|
|
595
595
|
name: 'Password 1',
|
|
596
596
|
username: 'Username 1',
|
|
597
|
-
|
|
597
|
+
uris: ['https://url1.com'],
|
|
598
598
|
resource_type_id: expectedResourceType.id,
|
|
599
599
|
folder_parent_path: importedResources[0].folderParentPath,
|
|
600
600
|
folder_parent_path_expected: "/Folder 1"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import ConfigureMetadataSettingsService from "../../service/metadata/configureMetadataSettingsService";
|
|
15
|
+
import GetPassphraseService from "../../service/passphrase/getPassphraseService";
|
|
16
|
+
|
|
17
|
+
export default class EnableEncryptedMetadataForExistingInstanceController {
|
|
18
|
+
/**
|
|
19
|
+
* @constructor
|
|
20
|
+
* @param {Worker} worker
|
|
21
|
+
* @param {string} requestId
|
|
22
|
+
* @param {ApiClientOptions} apiClientOptions the api client options
|
|
23
|
+
* @param {AccountEntity} account the account associated to the worker
|
|
24
|
+
*/
|
|
25
|
+
constructor(worker, requestId, apiClientOptions, account) {
|
|
26
|
+
this.worker = worker;
|
|
27
|
+
this.requestId = requestId;
|
|
28
|
+
this.configureMetadataSettingsService = new ConfigureMetadataSettingsService(account, apiClientOptions);
|
|
29
|
+
this.getPassphraseService = new GetPassphraseService(account);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Controller executor.
|
|
34
|
+
* @returns {Promise<void>}
|
|
35
|
+
*/
|
|
36
|
+
async _exec() {
|
|
37
|
+
try {
|
|
38
|
+
const result = await this.exec();
|
|
39
|
+
this.worker.port.emit(this.requestId, 'SUCCESS', result);
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.error(error);
|
|
42
|
+
this.worker.port.emit(this.requestId, 'ERROR', error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Run the process to enable metadata encryption
|
|
48
|
+
* @returns {Promise<void>}
|
|
49
|
+
*/
|
|
50
|
+
async exec() {
|
|
51
|
+
const passphrase = await this.getPassphraseService.getPassphrase(this.worker);
|
|
52
|
+
return await this.configureMetadataSettingsService.enableEncryptedMetadataForExistingInstance(passphrase);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import AccountEntity from "../../model/entity/account/accountEntity";
|
|
15
|
+
import {defaultAccountDto} from "../../model/entity/account/accountEntity.test.data";
|
|
16
|
+
import BuildApiClientOptionsService from "../../service/account/buildApiClientOptionsService";
|
|
17
|
+
import PassphraseStorageService from "../../service/session_storage/passphraseStorageService";
|
|
18
|
+
import EnableEncryptedMetadataForExistingInstanceController from "./enableEncryptedMetadataForExistingInstanceController";
|
|
19
|
+
|
|
20
|
+
describe("EnableEncryptedMetadataForExistingInstanceController", () => {
|
|
21
|
+
describe("::exec", () => {
|
|
22
|
+
it("should call for the orchestrator to enable metadata", async() => {
|
|
23
|
+
expect.assertions(3);
|
|
24
|
+
|
|
25
|
+
const passphrase = "ada@passbolt.com";
|
|
26
|
+
await PassphraseStorageService.set(passphrase);
|
|
27
|
+
|
|
28
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
29
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
30
|
+
const controller = new EnableEncryptedMetadataForExistingInstanceController(null, null, apiClientOptions, account);
|
|
31
|
+
jest.spyOn(controller.getPassphraseService, "getPassphrase");
|
|
32
|
+
jest.spyOn(controller.configureMetadataSettingsService, "enableEncryptedMetadataForExistingInstance").mockImplementation(() => {});
|
|
33
|
+
|
|
34
|
+
await controller.exec();
|
|
35
|
+
|
|
36
|
+
expect(controller.getPassphraseService.getPassphrase).toHaveBeenCalledTimes(1);
|
|
37
|
+
expect(controller.configureMetadataSettingsService.enableEncryptedMetadataForExistingInstance).toHaveBeenCalledTimes(1);
|
|
38
|
+
expect(controller.configureMetadataSettingsService.enableEncryptedMetadataForExistingInstance).toHaveBeenCalledWith(passphrase);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("should not intercept unexpected error if something goes wrong when enabling the metadata encryption", async() => {
|
|
42
|
+
expect.assertions(1);
|
|
43
|
+
|
|
44
|
+
const passphrase = "ada@passbolt.com";
|
|
45
|
+
await PassphraseStorageService.set(passphrase);
|
|
46
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
47
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
48
|
+
const controller = new EnableEncryptedMetadataForExistingInstanceController(null, null, apiClientOptions, account);
|
|
49
|
+
jest.spyOn(controller.configureMetadataSettingsService, "enableEncryptedMetadataForExistingInstance").mockImplementation(() => { throw new Error("Something went wrong!"); });
|
|
50
|
+
|
|
51
|
+
await expect(() => controller.exec()).rejects.toThrowError("Something went wrong!");
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import ConfigureMetadataSettingsService from "../../service/metadata/configureMetadataSettingsService";
|
|
15
|
+
import GetPassphraseService from "../../service/passphrase/getPassphraseService";
|
|
16
|
+
|
|
17
|
+
export default class EnableMetadataSetupSettingsController {
|
|
18
|
+
/**
|
|
19
|
+
* @constructor
|
|
20
|
+
* @param {Worker} worker
|
|
21
|
+
* @param {string} requestId
|
|
22
|
+
* @param {ApiClientOptions} apiClientOptions the api client options
|
|
23
|
+
* @param {AccountEntity} account the account associated to the worker
|
|
24
|
+
*/
|
|
25
|
+
constructor(worker, requestId, apiClientOptions, account) {
|
|
26
|
+
this.worker = worker;
|
|
27
|
+
this.requestId = requestId;
|
|
28
|
+
this.configureMetadataSettingsService = new ConfigureMetadataSettingsService(account, apiClientOptions);
|
|
29
|
+
this.getPassphraseService = new GetPassphraseService(account);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Controller executor.
|
|
34
|
+
* @returns {Promise<void>}
|
|
35
|
+
*/
|
|
36
|
+
async _exec() {
|
|
37
|
+
try {
|
|
38
|
+
const result = await this.exec();
|
|
39
|
+
this.worker.port.emit(this.requestId, 'SUCCESS', result);
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.error(error);
|
|
42
|
+
this.worker.port.emit(this.requestId, 'ERROR', error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Run the process to enable metadata encryption
|
|
48
|
+
* @returns {Promise<void>}
|
|
49
|
+
*/
|
|
50
|
+
async exec() {
|
|
51
|
+
const passphrase = await this.getPassphraseService.getFromStorageOrFail();
|
|
52
|
+
return await this.configureMetadataSettingsService.enableEncryptedMetadataForNewInstance(passphrase);
|
|
53
|
+
}
|
|
54
|
+
}
|
package/src/all/background_page/controller/metadata/enableMetadataSetupSettingsController.test.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import AccountEntity from "../../model/entity/account/accountEntity";
|
|
15
|
+
import {defaultAccountDto} from "../../model/entity/account/accountEntity.test.data";
|
|
16
|
+
import BuildApiClientOptionsService from "../../service/account/buildApiClientOptionsService";
|
|
17
|
+
import PassphraseStorageService from "../../service/session_storage/passphraseStorageService";
|
|
18
|
+
import EnableMetadataSetupSettingsController from "./enableMetadataSetupSettingsController";
|
|
19
|
+
|
|
20
|
+
describe("EnableMetadataSetupSettingsController", () => {
|
|
21
|
+
describe("::exec", () => {
|
|
22
|
+
it("should call for the orchestrator to enable metadata", async() => {
|
|
23
|
+
expect.assertions(3);
|
|
24
|
+
|
|
25
|
+
const passphrase = "ada@passbolt.com";
|
|
26
|
+
await PassphraseStorageService.set(passphrase);
|
|
27
|
+
|
|
28
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
29
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
30
|
+
const controller = new EnableMetadataSetupSettingsController(null, null, apiClientOptions, account);
|
|
31
|
+
jest.spyOn(controller.getPassphraseService, "getFromStorageOrFail");
|
|
32
|
+
jest.spyOn(controller.configureMetadataSettingsService, "enableEncryptedMetadataForNewInstance").mockImplementation(() => {});
|
|
33
|
+
|
|
34
|
+
await controller.exec();
|
|
35
|
+
|
|
36
|
+
expect(controller.getPassphraseService.getFromStorageOrFail).toHaveBeenCalledTimes(1);
|
|
37
|
+
expect(controller.configureMetadataSettingsService.enableEncryptedMetadataForNewInstance).toHaveBeenCalledTimes(1);
|
|
38
|
+
expect(controller.configureMetadataSettingsService.enableEncryptedMetadataForNewInstance).toHaveBeenCalledWith(passphrase);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("should throw an error if the passphrase is not available in the session storage", async() => {
|
|
42
|
+
expect.assertions(1);
|
|
43
|
+
|
|
44
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
45
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
46
|
+
const controller = new EnableMetadataSetupSettingsController(null, null, apiClientOptions, account);
|
|
47
|
+
|
|
48
|
+
await expect(() => controller.exec()).rejects.toThrowError("No passphrase found in the session storage.");
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("should not intercept unexpected error if something goes wrong when enabling the metadata encryption", async() => {
|
|
52
|
+
expect.assertions(1);
|
|
53
|
+
|
|
54
|
+
const passphrase = "ada@passbolt.com";
|
|
55
|
+
await PassphraseStorageService.set(passphrase);
|
|
56
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
57
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
58
|
+
const controller = new EnableMetadataSetupSettingsController(null, null, apiClientOptions, account);
|
|
59
|
+
jest.spyOn(controller.configureMetadataSettingsService, "enableEncryptedMetadataForNewInstance").mockImplementation(() => { throw new Error("Something went wrong!"); });
|
|
60
|
+
|
|
61
|
+
await expect(() => controller.exec()).rejects.toThrowError("Something went wrong!");
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
package/src/all/background_page/controller/metadata/findAllNonDeletedMetadataKeysController.js
CHANGED
|
@@ -20,12 +20,11 @@ class FindAllNonDeletedMetadataKeysController {
|
|
|
20
20
|
* @param {Worker} worker
|
|
21
21
|
* @param {string} requestId
|
|
22
22
|
* @param {ApiClientOptions} apiClientOptions the api client options
|
|
23
|
-
* @param {AccountEntity} account the user account
|
|
24
23
|
*/
|
|
25
|
-
constructor(worker, requestId, apiClientOptions
|
|
24
|
+
constructor(worker, requestId, apiClientOptions) {
|
|
26
25
|
this.worker = worker;
|
|
27
26
|
this.requestId = requestId;
|
|
28
|
-
this.findMetadataKeysService = new FindMetadataKeysService(apiClientOptions
|
|
27
|
+
this.findMetadataKeysService = new FindMetadataKeysService(apiClientOptions);
|
|
29
28
|
}
|
|
30
29
|
|
|
31
30
|
/**
|
package/src/all/background_page/controller/metadata/findMetadataGettingStartedSettingsController.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import FindMetadataGettingStartedSettingsService from "passbolt-styleguide/src/shared/services/metadata/findMetadataGettingStartedSettingsService";
|
|
15
|
+
|
|
16
|
+
export default class FindMetadataGettingStartedSettingsController {
|
|
17
|
+
/**
|
|
18
|
+
* @constructor
|
|
19
|
+
* @param {Worker} worker
|
|
20
|
+
* @param {string} requestId
|
|
21
|
+
* @param {ApiClientOptions} apiClientOptions the api client options
|
|
22
|
+
*/
|
|
23
|
+
constructor(worker, requestId, apiClientOptions) {
|
|
24
|
+
this.worker = worker;
|
|
25
|
+
this.requestId = requestId;
|
|
26
|
+
this.findMetadataGettingStartedSettingsService = new FindMetadataGettingStartedSettingsService(apiClientOptions);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Controller executor.
|
|
31
|
+
* @returns {Promise<void>}
|
|
32
|
+
*/
|
|
33
|
+
async _exec() {
|
|
34
|
+
try {
|
|
35
|
+
const result = await this.exec();
|
|
36
|
+
this.worker.port.emit(this.requestId, 'SUCCESS', result);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
console.error(error);
|
|
39
|
+
this.worker.port.emit(this.requestId, 'ERROR', error);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Find the metadata getting started settings.
|
|
45
|
+
* @returns {Promise<MetadataGettingStartedSettingsEntity>}
|
|
46
|
+
*/
|
|
47
|
+
async exec() {
|
|
48
|
+
return await this.findMetadataGettingStartedSettingsService.findGettingStartedSettings();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import FindMetadataGettingStartedSettingsController from "./findMetadataGettingStartedSettingsController";
|
|
15
|
+
import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
|
|
16
|
+
import MetadataGettingStartedSettingsEntity from "passbolt-styleguide/src/shared/models/entity/metadata/metadataGettingStartedSettingsEntity";
|
|
17
|
+
import {enableMetadataGettingStartedSettingsDto} from "passbolt-styleguide/src/shared/models/entity/metadata/metadataGettingStartedSettingsEntity.test.data";
|
|
18
|
+
|
|
19
|
+
describe("FindMetadataGettingStartedSettingsController", () => {
|
|
20
|
+
describe("::exec", () => {
|
|
21
|
+
it("find metadata keys settings and update session storage.", async() => {
|
|
22
|
+
expect.assertions(1);
|
|
23
|
+
|
|
24
|
+
const expectedResult = new MetadataGettingStartedSettingsEntity(enableMetadataGettingStartedSettingsDto());
|
|
25
|
+
const controller = new FindMetadataGettingStartedSettingsController(null, null, defaultApiClientOptions());
|
|
26
|
+
jest.spyOn(controller.findMetadataGettingStartedSettingsService, "findGettingStartedSettings").mockImplementation(() => expectedResult);
|
|
27
|
+
|
|
28
|
+
const result = await controller.exec();
|
|
29
|
+
|
|
30
|
+
expect(result).toStrictEqual(expectedResult);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import FindMetadataSetupSettingsService from "../../service/metadata/findMetadataSetupSettingsService";
|
|
15
|
+
|
|
16
|
+
export default class FindMetadataSetupSettingsController {
|
|
17
|
+
/**
|
|
18
|
+
* @constructor
|
|
19
|
+
* @param {Worker} worker
|
|
20
|
+
* @param {string} requestId
|
|
21
|
+
* @param {ApiClientOptions} apiClientOptions the api client options
|
|
22
|
+
*/
|
|
23
|
+
constructor(worker, requestId, apiClientOptions) {
|
|
24
|
+
this.worker = worker;
|
|
25
|
+
this.requestId = requestId;
|
|
26
|
+
this.findMetadataSetupSettingsService = new FindMetadataSetupSettingsService(apiClientOptions);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Controller executor.
|
|
31
|
+
* @returns {Promise<void>}
|
|
32
|
+
*/
|
|
33
|
+
async _exec() {
|
|
34
|
+
try {
|
|
35
|
+
const result = await this.exec();
|
|
36
|
+
this.worker.port.emit(this.requestId, 'SUCCESS', result);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
console.error(error);
|
|
39
|
+
this.worker.port.emit(this.requestId, 'ERROR', error);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Find the metadata keys settings entity and update the session storage.
|
|
45
|
+
* @returns {Promise<MetadataSetupSettingsEntity>}
|
|
46
|
+
*/
|
|
47
|
+
async exec() {
|
|
48
|
+
return await this.findMetadataSetupSettingsService.findSetupSettings();
|
|
49
|
+
}
|
|
50
|
+
}
|
package/src/all/background_page/controller/metadata/findMetadataSetupSettingsController.test.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import FindMetadataSetupSettingsController from "./findMetadataSetupSettingsController";
|
|
15
|
+
import {defaultApiClientOptions} from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
|
|
16
|
+
import MetadataSetupSettingsEntity from "passbolt-styleguide/src/shared/models/entity/metadata/metadataSetupSettingsEntity";
|
|
17
|
+
import {enableMetadataSetupSettingsDto} from "passbolt-styleguide/src/shared/models/entity/metadata/metadataSetupSettingsEntity.test.data";
|
|
18
|
+
|
|
19
|
+
describe("FindMetadataSetupSettingsController", () => {
|
|
20
|
+
describe("::exec", () => {
|
|
21
|
+
it("find metadata keys settings and update session storage.", async() => {
|
|
22
|
+
expect.assertions(1);
|
|
23
|
+
|
|
24
|
+
const expectedResult = new MetadataSetupSettingsEntity(enableMetadataSetupSettingsDto());
|
|
25
|
+
const controller = new FindMetadataSetupSettingsController(null, null, defaultApiClientOptions());
|
|
26
|
+
jest.spyOn(controller.findMetadataSetupSettingsService, "findSetupSettings").mockImplementation(() => expectedResult);
|
|
27
|
+
|
|
28
|
+
const result = await controller.exec();
|
|
29
|
+
|
|
30
|
+
expect(result).toStrictEqual(expectedResult);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("should not intercept unexpected error.", async() => {
|
|
34
|
+
expect.assertions(1);
|
|
35
|
+
|
|
36
|
+
const controller = new FindMetadataSetupSettingsController(null, null, defaultApiClientOptions());
|
|
37
|
+
jest.spyOn(controller.findMetadataSetupSettingsService, "findSetupSettings").mockImplementation(() => { throw new Error("Something went wrong!"); });
|
|
38
|
+
|
|
39
|
+
await expect(() => controller.exec()).rejects.toThrowError();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import ConfigureMetadataSettingsService from "../../service/metadata/configureMetadataSettingsService";
|
|
15
|
+
|
|
16
|
+
export default class KeepCleartextMetadataForExistingInstanceController {
|
|
17
|
+
/**
|
|
18
|
+
* @constructor
|
|
19
|
+
* @param {Worker} worker
|
|
20
|
+
* @param {string} requestId
|
|
21
|
+
* @param {ApiClientOptions} apiClientOptions the api client options
|
|
22
|
+
* @param {AccountEntity} account the account associated to the worker
|
|
23
|
+
*/
|
|
24
|
+
constructor(worker, requestId, apiClientOptions, account) {
|
|
25
|
+
this.worker = worker;
|
|
26
|
+
this.requestId = requestId;
|
|
27
|
+
this.configureMetadataSettingsService = new ConfigureMetadataSettingsService(account, apiClientOptions);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Controller executor.
|
|
32
|
+
* @returns {Promise<void>}
|
|
33
|
+
*/
|
|
34
|
+
async _exec() {
|
|
35
|
+
try {
|
|
36
|
+
const result = await this.exec();
|
|
37
|
+
this.worker.port.emit(this.requestId, 'SUCCESS', result);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error(error);
|
|
40
|
+
this.worker.port.emit(this.requestId, 'ERROR', error);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Run the process to keep legacy metadata in cleartext
|
|
46
|
+
* @returns {Promise<void>}
|
|
47
|
+
*/
|
|
48
|
+
async exec() {
|
|
49
|
+
return await this.configureMetadataSettingsService.keepCleartextMetadataForExistingInstance();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
4
|
+
*
|
|
5
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
6
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
7
|
+
* Redistributions of files must retain the above copyright notice.
|
|
8
|
+
*
|
|
9
|
+
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
+
* @since 5.4.0
|
|
13
|
+
*/
|
|
14
|
+
import AccountEntity from "../../model/entity/account/accountEntity";
|
|
15
|
+
import {defaultAccountDto} from "../../model/entity/account/accountEntity.test.data";
|
|
16
|
+
import BuildApiClientOptionsService from "../../service/account/buildApiClientOptionsService";
|
|
17
|
+
import KeepCleartextMetadataForExistingInstanceController from "./keepCleartextMetadataForExistingInstanceController";
|
|
18
|
+
|
|
19
|
+
describe("KeepCleartextMetadataForExistingInstanceController", () => {
|
|
20
|
+
describe("::exec", () => {
|
|
21
|
+
it("should call for the orchestrator not to enable metadata encryption", async() => {
|
|
22
|
+
expect.assertions(2);
|
|
23
|
+
|
|
24
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
25
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
26
|
+
const controller = new KeepCleartextMetadataForExistingInstanceController(null, null, apiClientOptions, account);
|
|
27
|
+
|
|
28
|
+
jest.spyOn(controller.configureMetadataSettingsService, "keepCleartextMetadataForExistingInstance").mockImplementation(() => {});
|
|
29
|
+
|
|
30
|
+
await controller.exec();
|
|
31
|
+
|
|
32
|
+
expect(controller.configureMetadataSettingsService.keepCleartextMetadataForExistingInstance).toHaveBeenCalledTimes(1);
|
|
33
|
+
expect(controller.configureMetadataSettingsService.keepCleartextMetadataForExistingInstance).toHaveBeenCalledWith();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it("should not intercept unexpected error if something goes wrong when enabling the metadata encryption", async() => {
|
|
37
|
+
expect.assertions(1);
|
|
38
|
+
|
|
39
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
40
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
41
|
+
const controller = new KeepCleartextMetadataForExistingInstanceController(null, null, apiClientOptions, account);
|
|
42
|
+
jest.spyOn(controller.configureMetadataSettingsService, "keepCleartextMetadataForExistingInstance").mockImplementation(() => { throw new Error("Something went wrong!"); });
|
|
43
|
+
|
|
44
|
+
await expect(() => controller.exec()).rejects.toThrowError("Something went wrong!");
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|