passbolt-browser-extension 5.13.0 → 5.14.2
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/.devcontainer/Dockerfile +33 -3
- package/.devcontainer/devcontainer-lock.json +9 -0
- package/.devcontainer/post-start.sh +1 -2
- package/.github/workflows/codeql-analysis.yml +2 -1
- package/.github/workflows/release_candidate.yaml +3 -1
- package/.gitlab-ci.yml +1 -0
- package/CHANGELOG.md +202 -70
- package/CODEOWNERS +2 -0
- package/RELEASE_NOTES.md +4 -2
- package/package.json +9 -7
- package/renovate.json +6 -0
- package/src/all/background_page/controller/InformMenuController/InformMenuController.js +2 -5
- package/src/all/background_page/controller/InformMenuController/InformMenuController.test.js +31 -1
- package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.js +1 -1
- package/src/all/background_page/controller/account/getAndInitializeAccountLocaleController.test.js +6 -14
- package/src/all/background_page/controller/account/updatePrivateKeyController.js +7 -5
- package/src/all/background_page/controller/account/updatePrivateKeyController.test.js +18 -13
- package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.js +4 -2
- package/src/all/background_page/controller/accountRecovery/accountRecoveryGenerateOrganizationKeyController.test.js +25 -2
- package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.js +1 -1
- package/src/all/background_page/controller/accountRecovery/accountRecoveryLoginController.test.js +10 -5
- package/src/all/background_page/controller/accountRecovery/recoverAccountController.js +6 -2
- package/src/all/background_page/controller/accountRecovery/recoverAccountController.test.js +11 -4
- package/src/all/background_page/controller/auth/authCheckStatus.test.data.js +6 -6
- package/src/all/background_page/controller/auth/authCheckStatusController.js +11 -3
- package/src/all/background_page/controller/auth/authCheckStatusController.test.js +74 -44
- package/src/all/background_page/controller/auth/authIsMfaRequiredController.js +11 -3
- package/src/all/background_page/controller/auth/authIsMfaRequiredController.test.js +18 -9
- package/src/all/background_page/controller/auth/authLoginController.js +1 -1
- package/src/all/background_page/controller/auth/authLoginController.test.js +10 -5
- package/src/all/background_page/controller/autofill/AutofillController.js +3 -3
- package/src/all/background_page/controller/autofill/AutofillController.test.js +20 -12
- package/src/all/background_page/controller/export/exportResourcesFileController.js +6 -3
- package/src/all/background_page/controller/export/exportResourcesFileController.test.js +34 -4
- package/src/all/background_page/controller/extension/onExtensionInstalledController.js +8 -2
- package/src/all/background_page/controller/extension/onExtensionInstalledController.test.js +5 -1
- package/src/all/background_page/controller/group/{getOrFindGroupsController.js → findGroupsByIdsForShareController.js} +9 -10
- package/src/all/background_page/controller/group/{getOrFindGroupsController.test.js → findGroupsByIdsForShareController.test.js} +8 -8
- package/src/all/background_page/controller/group/groupUpdateController.test.js +1 -0
- package/src/all/background_page/controller/import/importResourcesFileController.test.js +8 -1
- package/src/all/background_page/controller/informCallToActionController/informCallToActionController.js +2 -2
- package/src/all/background_page/controller/informCallToActionController/informCallToActionController.test.js +7 -4
- package/src/all/background_page/controller/locale/getLocaleController.js +3 -2
- package/src/all/background_page/controller/metadata/findMetadataTypesSettingsController.test.js +9 -15
- package/src/all/background_page/controller/metadata/getMetadataTypesSettingsController.test.js +9 -15
- package/src/all/background_page/controller/metadata/getOrFindMetadataKeysSettingsController.test.js +12 -22
- package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.test.js +14 -2
- package/src/all/background_page/controller/move/moveFolderController.test.js +8 -0
- package/src/all/background_page/controller/move/moveResourcesController.test.js +8 -0
- package/src/all/background_page/controller/passwordExpiry/getOrFindPasswordExpirySettingsController.test.js +13 -8
- package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.js +4 -4
- package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.test.js +8 -10
- package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.js +62 -0
- package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.test.js +71 -0
- package/src/all/background_page/controller/recover/generateRecoverAccountRecoveryRequestKeyController.js +1 -1
- package/src/all/background_page/controller/resource/resourceCreateController.js +11 -4
- package/src/all/background_page/controller/resource/resourceCreateController.test.js +12 -1
- package/src/all/background_page/controller/resource/resourceUpdateController.js +11 -4
- package/src/all/background_page/controller/resource/resourceUpdateController.test.js +35 -2
- package/src/all/background_page/controller/resourceType/getResourceTypesController.js +5 -4
- package/src/all/background_page/controller/resourceType/getResourceTypesController.test.js +5 -2
- package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.js +3 -2
- package/src/all/background_page/controller/resourceType/updateAllResourceTypesDeletedStatusController.test.js +16 -3
- package/src/all/background_page/controller/secret/findSecretByResourceIdController.js +3 -3
- package/src/all/background_page/controller/secret/findSecretByResourceIdController.test.js +24 -0
- package/src/all/background_page/controller/secretRevision/findResourceSecretRevisionsForDisplayController.js +2 -1
- package/src/all/background_page/controller/setup/generateSetupKeyPairController.js +6 -3
- package/src/all/background_page/controller/setup/generateSetupKeyPairController.test.js +11 -1
- package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.js +1 -1
- package/src/all/background_page/controller/setup/getAndInitSetupLocaleController.test.js +14 -18
- package/src/all/background_page/controller/setup/setSetupLocaleController.js +1 -1
- package/src/all/background_page/controller/setup/setSetupLocaleController.test.js +6 -10
- package/src/all/background_page/controller/setup/signInSetupController.js +6 -2
- package/src/all/background_page/controller/setup/signInSetupController.test.js +10 -5
- package/src/all/background_page/controller/share/shareOneFolderController.test.js +8 -0
- package/src/all/background_page/controller/share/shareResourcesController.test.js +9 -1
- package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.js +59 -0
- package/src/all/background_page/controller/siteSettings/getOrFindSiteSettingsController.test.js +150 -0
- package/src/all/background_page/controller/{group/getOrFindGroupsUsersController.js → user/getOrFindAllUsersController.js} +12 -17
- package/src/all/background_page/controller/user/getOrFindAllUsersController.test.js +55 -0
- package/src/all/background_page/controller/user/getOrFindLoggedInUserController.js +3 -3
- package/src/all/background_page/controller/user/getOrFindLoggedInUserController.test.js +19 -15
- package/src/all/background_page/controller/user/updateUserLocalStorageController.test.js +8 -5
- package/src/all/background_page/event/accountRecoveryEvents.js +4 -4
- package/src/all/background_page/event/appEvents.js +7 -2
- package/src/all/background_page/event/authEvents.js +2 -2
- package/src/all/background_page/event/groupEvents.js +4 -17
- package/src/all/background_page/event/informCallToActionEvents.js +1 -1
- package/src/all/background_page/event/informMenuEvents.js +1 -1
- package/src/all/background_page/event/localeEvents.js +4 -3
- package/src/all/background_page/event/permissionEvents.js +13 -0
- package/src/all/background_page/event/recoverEvents.js +4 -4
- package/src/all/background_page/event/resourceEvents.js +6 -15
- package/src/all/background_page/event/resourceTypeEvents.js +4 -3
- package/src/all/background_page/event/setupEvents.js +4 -4
- package/src/all/background_page/event/siteSettingsEvents.js +29 -0
- package/src/all/background_page/event/userEvents.js +4 -8
- package/src/all/background_page/index.js +0 -37
- package/src/all/background_page/model/entity/account/abstractAccountEntity.js +2 -2
- package/src/all/background_page/model/entity/account/accountAccountRecoveryEntity.js +7 -17
- package/src/all/background_page/model/entity/account/accountEntity.js +7 -14
- package/src/all/background_page/model/entity/account/accountKitEntity.js +1 -2
- package/src/all/background_page/model/entity/account/accountRecoverEntity.js +4 -14
- package/src/all/background_page/model/entity/account/accountSetupEntity.js +4 -14
- package/src/all/background_page/model/entity/account/accountTemporaryEntity.js +2 -5
- package/src/all/background_page/model/entity/gpgkey/generate/generateGpgKeyPairOptionsEntity.test.js +5 -5
- package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.js +49 -0
- package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.data.js +23 -0
- package/src/all/background_page/model/entity/localStorage/localStorageMetadataEntity.test.js +51 -0
- package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.js → siteSettings/siteSettingsEntity.js} +17 -24
- package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.data.js → siteSettings/siteSettingsEntity.test.data.js} +9 -9
- package/src/all/background_page/model/entity/{organizationSettings/organizationSettingsEntity.test.js → siteSettings/siteSettingsEntity.test.js} +30 -39
- package/src/all/background_page/model/entity/user/userEntity.test.js +6 -6
- package/src/all/background_page/model/export/resources/resourcesKdbxExporter.js +40 -3
- package/src/all/background_page/model/export/resources/resourcesKdbxExporter.test.js +122 -0
- package/src/all/background_page/model/import/resources/resourcesKdbxImportParser.js +1 -1
- package/src/all/background_page/model/locale/localeModel.js +13 -8
- package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.js +6 -6
- package/src/all/background_page/model/passwordExpiry/passwordExpirySettingsModel.test.js +3 -2
- package/src/all/background_page/model/resource/resourceModel.js +4 -4
- package/src/all/background_page/model/user/userModel.js +7 -28
- package/src/all/background_page/model/user/userModel.test.js +51 -99
- package/src/all/background_page/pagemod/appBootstrapPagemod.js +4 -1
- package/src/all/background_page/pagemod/appBootstrapPagemod.test.js +5 -2
- package/src/all/background_page/pagemod/appPagemod.js +32 -6
- package/src/all/background_page/pagemod/appPagemod.test.js +22 -10
- package/src/all/background_page/pagemod/authPagemod.js +2 -10
- package/src/all/background_page/pagemod/authPagemod.test.js +4 -4
- package/src/all/background_page/pagemod/pagemodManager.test.js +5 -2
- package/src/all/background_page/pagemod/quickAccessPagemod.js +2 -2
- package/src/all/background_page/pagemod/quickAccessPagemod.test.js +4 -4
- package/src/all/background_page/pagemod/recoverPagemod.js +2 -2
- package/src/all/background_page/pagemod/recoverPagemod.test.js +6 -0
- package/src/all/background_page/pagemod/setupPagemod.js +2 -2
- package/src/all/background_page/pagemod/setupPagemod.test.js +6 -0
- package/src/all/background_page/pagemod/webIntegrationPagemod.js +21 -2
- package/src/all/background_page/pagemod/webIntegrationPagemod.test.js +16 -25
- package/src/all/background_page/service/account/getActiveAccountService.js +2 -3
- package/src/all/background_page/service/account/getLegacyAccountService.js +3 -14
- package/src/all/background_page/service/account/updateSsoCredentialsService.js +9 -5
- package/src/all/background_page/service/api/group/groupApiService.js +9 -16
- package/src/all/background_page/service/api/group/groupApiService.test.js +59 -26
- package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.js +46 -0
- package/src/all/background_page/service/api/siteSettings/siteSettingsApiService.test.js +63 -0
- package/src/all/background_page/service/auth/checkAuthStatusService.js +27 -14
- package/src/all/background_page/service/auth/checkAuthStatusService.test.js +80 -62
- package/src/all/background_page/service/auth/postLoginService.js +3 -3
- package/src/all/background_page/service/auth/postLoginService.test.js +4 -4
- package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.js +5 -1
- package/src/all/background_page/service/auth/startLoopAuthSessionCheckService.test.js +14 -8
- package/src/all/background_page/service/authenticationStatusService.js +13 -18
- package/src/all/background_page/service/authenticationStatusService.test.js +9 -6
- package/src/all/background_page/service/crypto/generateGpgKeyPairService.test.js +5 -5
- package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.js +7 -6
- package/src/all/background_page/service/crypto/getGpgKeyCreationDateService.test.js +10 -7
- package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.js +7 -2
- package/src/all/background_page/service/extension/onExtensionUpdateAvailableService.test.js +5 -5
- package/src/all/background_page/service/group/findGroupsService.js +42 -1
- package/src/all/background_page/service/group/findGroupsService.test.js +82 -0
- package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.js +82 -0
- package/src/all/background_page/service/group/groupUpdateSecretsCryptoService.test.js +102 -0
- package/src/all/background_page/service/group/groupUpdateService.js +49 -78
- package/src/all/background_page/service/group/groupUpdateService.test.js +136 -0
- package/src/all/background_page/service/localStorage/localStorageService.js +8 -6
- package/src/all/background_page/service/localStorage/localStorageService.test.js +33 -15
- package/src/all/background_page/service/local_storage/abstractLocalStorage.js +193 -0
- package/src/all/background_page/service/local_storage/abstractLocalStorage.test.data.js +45 -0
- package/src/all/background_page/service/local_storage/abstractLocalStorage.test.js +271 -0
- package/src/all/background_page/service/local_storage/activeSessionLocalStorage.js +105 -0
- package/src/all/background_page/service/local_storage/activeSessionLocalStorage.test.js +153 -0
- package/src/all/background_page/service/local_storage/rbacLocalStorage.js +10 -82
- package/src/all/background_page/service/local_storage/rbacLocalStorage.test.js +8 -8
- package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.js +10 -43
- package/src/all/background_page/service/local_storage/resourceTypeLocalStorage.test.js +68 -0
- package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.js +104 -0
- package/src/all/background_page/service/local_storage/siteSettingsLocalStorage.test.js +114 -0
- package/src/all/background_page/service/local_storage/userMeLocalStorage.js +50 -0
- package/src/all/background_page/service/{sessionStorage/userMeSessionStorageService.test.js → local_storage/userMeLocalStorage.test.js} +55 -36
- package/src/all/background_page/service/metadata/encryptMetadataService.js +3 -3
- package/src/all/background_page/service/metadata/encryptMetadataService.test.js +11 -11
- package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.js +4 -4
- package/src/all/background_page/service/metadata/findAndUpdateMetadataSettingsLocalStorageService.test.js +18 -16
- package/src/all/background_page/service/metadata/getOrFindMetadataSettingsService.test.js +6 -8
- package/src/all/background_page/service/metadata/rotateMetadata/rotateResourcesMetadataKeyService.test.js +4 -4
- package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.js +3 -3
- package/src/all/background_page/service/metadata/shareMetadataKeyPrivateService.test.js +1 -1
- package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.js +4 -4
- package/src/all/background_page/service/metadata/verifyOrTrustMetadataKeyService.test.js +9 -7
- package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.js +4 -4
- package/src/all/background_page/service/migrateMetadata/migrateMetadataResourcesService.test.js +6 -6
- package/src/all/background_page/service/rbac/findAndUpdateRbacsLocalStorageService.js +2 -2
- package/src/all/background_page/service/rbac/getOrFindRbacService.js +1 -1
- package/src/all/background_page/service/resource/create/resourceCreateService.js +41 -51
- package/src/all/background_page/service/resource/create/resourceCreateService.test.js +100 -98
- package/src/all/background_page/service/resource/export/exportResourcesService.js +7 -7
- package/src/all/background_page/service/resource/findAndUpdateResourcesLocalStorageService.js +4 -4
- package/src/all/background_page/service/resource/findResourcesService.js +13 -16
- package/src/all/background_page/service/resource/findResourcesService.test.js +12 -11
- package/src/all/background_page/service/resource/getOrFindResourcesService.js +3 -3
- package/src/all/background_page/service/resource/import/ImportResourcesService.js +9 -9
- package/src/all/background_page/service/resource/import/ImportResourcesService.test.js +30 -15
- package/src/all/background_page/service/resource/update/resourceUpdateService.js +38 -19
- package/src/all/background_page/service/resource/update/resourceUpdateService.test.js +64 -31
- package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.js +49 -0
- package/src/all/background_page/service/resourceType/getOrFindResourceTypesService.test.js +61 -0
- package/src/all/background_page/service/resourceType/getSecretSchemaResourceTypeService.js +44 -0
- package/src/all/background_page/service/resourceType/updateResourceTypesService.js +6 -4
- package/src/all/background_page/service/resourceType/updateResourceTypesService.test.js +19 -14
- package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.js +5 -4
- package/src/all/background_page/service/secretRevisions/findAndDecryptSecretRevisionsService.test.js +16 -9
- package/src/all/background_page/service/share/shareResourceService.js +4 -4
- package/src/all/background_page/service/share/shareResourceService.test.js +6 -6
- package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.js +77 -0
- package/src/all/background_page/service/siteSettings/findAndUpdateSiteSettingsLocalStorageService.test.js +130 -0
- package/src/all/background_page/service/siteSettings/findSiteSettingsService.js +47 -0
- package/src/all/background_page/service/siteSettings/findSiteSettingsService.test.js +68 -0
- package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.js +84 -0
- package/src/all/background_page/service/siteSettings/getOrFindSiteSettingsService.test.js +175 -0
- package/src/all/background_page/service/siteSettings/siteSettingsRuntimeCache.js +70 -0
- package/src/all/background_page/service/sso/generateSsoKitService.test.js +2 -2
- package/src/all/background_page/service/toolbar/toolbarService.js +6 -4
- package/src/all/background_page/service/toolbar/toolbarService.test.js +14 -13
- package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.js +4 -4
- package/src/all/background_page/service/user/findAndUpdateUsersLocalStorageService.test.js +3 -3
- package/src/all/background_page/service/user/getOrFindMeService.js +64 -0
- package/src/all/background_page/service/user/getOrFindMeService.test.js +65 -0
- package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.js +5 -4
- package/src/all/background_page/service/userKeyPolicies/findUserKeyPoliciesSettingsService.test.js +12 -11
- package/src/all/background_page/service/validator/appEmailValidatorService.js +11 -6
- package/src/all/background_page/service/validator/appEmailValidatorService.test.js +11 -11
- package/src/all/common/polyfill/browserPolyfill.js +8 -8
- package/src/all/locales/cs-CZ/common.json +1 -4
- package/src/all/locales/de-DE/common.json +1 -4
- package/src/all/locales/en-UK/common.json +0 -3
- package/src/all/locales/es-ES/common.json +1 -4
- package/src/all/locales/fr-FR/common.json +1 -4
- package/src/all/locales/it-IT/common.json +1 -4
- package/src/all/locales/ja-JP/common.json +1 -4
- package/src/all/locales/ko-KR/common.json +0 -3
- package/src/all/locales/lt-LT/common.json +1 -4
- package/src/all/locales/nl-NL/common.json +1 -4
- package/src/all/locales/pl-PL/common.json +1 -4
- package/src/all/locales/pt-BR/common.json +1 -4
- package/src/all/locales/ro-RO/common.json +1 -4
- package/src/all/locales/ru-RU/common.json +1 -4
- package/src/all/locales/sl-SI/common.json +1 -4
- package/src/all/locales/sv-SE/common.json +1 -4
- package/src/all/locales/uk-UA/common.json +1 -4
- package/src/all/webAccessibleResources/js/app/QuickAccess.js +7 -0
- package/src/chrome/manifest.json +1 -1
- package/src/chrome-mv3/manifest.json +1 -1
- package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.js +132 -0
- package/src/chrome-mv3/offscreens/service/group/addUsersToGroupOffscreenService.test.js +125 -0
- package/src/chrome-mv3/offscreens/service/offscreen/handleOffscreenRequestService.js +4 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.js +83 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/requestAddUsersToGroupOffscreenService.test.js +116 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.js +99 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.data.js +45 -0
- package/src/chrome-mv3/serviceWorker/service/addUsersToGroup/responseAddUsersToGroupOffscreenService.test.js +87 -0
- package/src/chrome-mv3/serviceWorker/service/network/requestFetchOffscreenService.js +0 -1
- package/src/chrome-mv3/serviceWorker/service/offscreen/handleOffscreenResponseService.js +15 -0
- package/src/firefox/manifest.json +1 -1
- package/src/safari/background_page/index.js +0 -37
- package/src/safari/common/polyfill/safariBrowserPolyfill.js +10 -10
- package/src/safari/manifest.json +1 -1
- package/test/jest.setup.js +4 -2
- package/src/all/background_page/controller/group/getOrFindGroupsUsersController.test.js +0 -69
- package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.js +0 -55
- package/src/all/background_page/controller/organizationSettings/getOrganizationSettingsController.test.js +0 -45
- package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.js +0 -76
- package/src/all/background_page/controller/resource/findAllByIdsForDisplayPermissionsController.test.js +0 -102
- package/src/all/background_page/event/organizationSettingsEvents.js +0 -37
- package/src/all/background_page/model/organizationSettings/organizationSettingsModel.js +0 -93
- package/src/all/background_page/model/resourceType/resourceTypeModel.js +0 -72
- package/src/all/background_page/model/resourceType/resourceTypeModel.test.js +0 -101
- package/src/all/background_page/service/api/organizationSettings/organizationSettingsService.js +0 -58
- package/src/all/background_page/service/group/getOrFindGroupsService.js +0 -65
- package/src/all/background_page/service/group/getOrFindGroupsService.test.js +0 -168
- package/src/all/background_page/service/group/getOrFindGroupsUsersService.js +0 -51
- package/src/all/background_page/service/group/getOrFindGroupsUsersService.test.js +0 -94
- package/src/all/background_page/service/local_storage/authStatusLocalStorage.js +0 -70
- package/src/all/background_page/service/sessionStorage/userMeSessionStorageService.js +0 -94
package/src/all/background_page/controller/metadata/getOrFindMetadataKeysSettingsController.test.js
CHANGED
|
@@ -19,7 +19,9 @@ import GetOrFindMetadataKeysController from "./getOrFindMetadataKeysSettingsCont
|
|
|
19
19
|
import { defaultMetadataKeysSettingsDto } from "passbolt-styleguide/src/shared/models/entity/metadata/metadataKeysSettingsEntity.test.data";
|
|
20
20
|
import MetadataKeysSettingsEntity from "passbolt-styleguide/src/shared/models/entity/metadata/metadataKeysSettingsEntity";
|
|
21
21
|
import { enableFetchMocks } from "jest-fetch-mock";
|
|
22
|
-
import {
|
|
22
|
+
import { defaultCeSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
23
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
24
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
23
25
|
|
|
24
26
|
beforeEach(() => {
|
|
25
27
|
enableFetchMocks();
|
|
@@ -43,7 +45,7 @@ describe("GetOrFindMetadataKeysSettingsController", () => {
|
|
|
43
45
|
expect.assertions(3);
|
|
44
46
|
|
|
45
47
|
const metadataKeysSettingsDto = defaultMetadataKeysSettingsDto();
|
|
46
|
-
const siteSettingsDto =
|
|
48
|
+
const siteSettingsDto = defaultCeSiteSettings();
|
|
47
49
|
jest
|
|
48
50
|
.spyOn(
|
|
49
51
|
controller.getOrFindMetadaSettingsService.findAndUpdateMetadataSettingsLocalStorageService
|
|
@@ -52,12 +54,8 @@ describe("GetOrFindMetadataKeysSettingsController", () => {
|
|
|
52
54
|
)
|
|
53
55
|
.mockImplementationOnce(() => new MetadataKeysSettingsEntity(metadataKeysSettingsDto));
|
|
54
56
|
jest
|
|
55
|
-
.spyOn(
|
|
56
|
-
|
|
57
|
-
.organisationSettingsModel.organizationSettingsService,
|
|
58
|
-
"find",
|
|
59
|
-
)
|
|
60
|
-
.mockImplementation(() => siteSettingsDto);
|
|
57
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
58
|
+
.mockImplementation(() => new SiteSettingsEntity(siteSettingsDto));
|
|
61
59
|
|
|
62
60
|
const metadataKeysSettings = await controller.exec();
|
|
63
61
|
|
|
@@ -74,7 +72,7 @@ describe("GetOrFindMetadataKeysSettingsController", () => {
|
|
|
74
72
|
allow_usage_of_personal_keys: false,
|
|
75
73
|
zero_knowledge_key_share: true,
|
|
76
74
|
});
|
|
77
|
-
const siteSettingsDto =
|
|
75
|
+
const siteSettingsDto = defaultCeSiteSettings();
|
|
78
76
|
jest
|
|
79
77
|
.spyOn(
|
|
80
78
|
controller.getOrFindMetadaSettingsService.findAndUpdateMetadataSettingsLocalStorageService
|
|
@@ -83,12 +81,8 @@ describe("GetOrFindMetadataKeysSettingsController", () => {
|
|
|
83
81
|
)
|
|
84
82
|
.mockImplementationOnce(() => new MetadataKeysSettingsEntity(metadataKeysSettingsDto));
|
|
85
83
|
jest
|
|
86
|
-
.spyOn(
|
|
87
|
-
|
|
88
|
-
.organisationSettingsModel.organizationSettingsService,
|
|
89
|
-
"find",
|
|
90
|
-
)
|
|
91
|
-
.mockImplementation(() => siteSettingsDto);
|
|
84
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
85
|
+
.mockImplementation(() => new SiteSettingsEntity(siteSettingsDto));
|
|
92
86
|
|
|
93
87
|
const metadataKeysSettings = await controller.exec();
|
|
94
88
|
|
|
@@ -101,16 +95,12 @@ describe("GetOrFindMetadataKeysSettingsController", () => {
|
|
|
101
95
|
it("get or find metadata keys settings for a v4 should have the default.", async () => {
|
|
102
96
|
expect.assertions(3);
|
|
103
97
|
|
|
104
|
-
const siteSettingsDto =
|
|
98
|
+
const siteSettingsDto = defaultCeSiteSettings();
|
|
105
99
|
// disable the plugin metadata.
|
|
106
100
|
delete siteSettingsDto.passbolt.plugins.metadata;
|
|
107
101
|
jest
|
|
108
|
-
.spyOn(
|
|
109
|
-
|
|
110
|
-
.organisationSettingsModel.organizationSettingsService,
|
|
111
|
-
"find",
|
|
112
|
-
)
|
|
113
|
-
.mockImplementation(() => siteSettingsDto);
|
|
102
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
103
|
+
.mockImplementation(() => new SiteSettingsEntity(siteSettingsDto));
|
|
114
104
|
jest
|
|
115
105
|
.spyOn(
|
|
116
106
|
controller.getOrFindMetadaSettingsService.findAndUpdateMetadataSettingsLocalStorageService
|
package/src/all/background_page/controller/metadata/shareMetadataKeyPrivateController.test.js
CHANGED
|
@@ -32,10 +32,18 @@ import { OpenpgpAssertion } from "../../utils/openpgp/openpgpAssertions";
|
|
|
32
32
|
import DecryptMessageService from "../../service/crypto/decryptMessageService";
|
|
33
33
|
import FindSignatureService from "../../service/crypto/findSignatureService";
|
|
34
34
|
import MetadataPrivateKeyApiService from "../../service/api/metadata/metadataPrivateKeyApiService";
|
|
35
|
+
import { anonymousSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
36
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
37
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
35
38
|
|
|
36
39
|
jest.mock("../../service/passphrase/getPassphraseService");
|
|
37
40
|
|
|
38
41
|
describe("ShareMetadataKeyPrivateController", () => {
|
|
42
|
+
beforeEach(() => {
|
|
43
|
+
jest
|
|
44
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
45
|
+
.mockImplementation(() => new SiteSettingsEntity(anonymousSiteSettings()));
|
|
46
|
+
});
|
|
39
47
|
describe("::exec", () => {
|
|
40
48
|
let controller, account, apiClientOptions, keyring;
|
|
41
49
|
|
|
@@ -73,7 +81,9 @@ describe("ShareMetadataKeyPrivateController", () => {
|
|
|
73
81
|
|
|
74
82
|
jest.spyOn(controller.verifyOrTrustMetadataKeyService, "verifyTrustedOrTrustNewMetadataKey");
|
|
75
83
|
jest.spyOn(controller.getPassphraseService, "getPassphrase");
|
|
76
|
-
jest
|
|
84
|
+
jest
|
|
85
|
+
.spyOn(controller.shareMetadataKeyPrivateService.getOrFindUsersService, "getOrFindAll")
|
|
86
|
+
.mockImplementation(() => users);
|
|
77
87
|
jest.spyOn(GetOrFindMetadataKeysService.prototype, "getOrFindAll").mockImplementation(() => metadataKeys);
|
|
78
88
|
|
|
79
89
|
await controller.exec(pgpKeys.betty.userId);
|
|
@@ -97,7 +107,9 @@ describe("ShareMetadataKeyPrivateController", () => {
|
|
|
97
107
|
|
|
98
108
|
jest.spyOn(controller.verifyOrTrustMetadataKeyService, "verifyTrustedOrTrustNewMetadataKey");
|
|
99
109
|
jest.spyOn(controller.getPassphraseService, "getPassphrase");
|
|
100
|
-
jest
|
|
110
|
+
jest
|
|
111
|
+
.spyOn(controller.shareMetadataKeyPrivateService.getOrFindUsersService, "getOrFindAll")
|
|
112
|
+
.mockImplementation(() => users);
|
|
101
113
|
jest
|
|
102
114
|
.spyOn(controller.shareMetadataKeyPrivateService.getOrFindMetadataKeysService, "getOrFindAll")
|
|
103
115
|
.mockImplementation(() => metadataKeys);
|
|
@@ -19,8 +19,16 @@ import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiC
|
|
|
19
19
|
import { v4 as uuidv4 } from "uuid";
|
|
20
20
|
import { pgpKeys } from "passbolt-styleguide/test/fixture/pgpKeys/keys";
|
|
21
21
|
import MockPort from "passbolt-styleguide/src/react-extension/test/mock/MockPort";
|
|
22
|
+
import { anonymousSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
23
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
24
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
22
25
|
|
|
23
26
|
describe("MoveFolderController", () => {
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
jest
|
|
29
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
30
|
+
.mockImplementation(() => new SiteSettingsEntity(anonymousSiteSettings()));
|
|
31
|
+
});
|
|
24
32
|
describe("::exec", () => {
|
|
25
33
|
let worker, account, controller;
|
|
26
34
|
|
|
@@ -18,8 +18,16 @@ import AccountEntity from "../../model/entity/account/accountEntity";
|
|
|
18
18
|
import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
|
|
19
19
|
import { v4 as uuidv4 } from "uuid";
|
|
20
20
|
import MockPort from "passbolt-styleguide/src/react-extension/test/mock/MockPort";
|
|
21
|
+
import { anonymousSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
22
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
23
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
21
24
|
|
|
22
25
|
describe("MoveResourcesController", () => {
|
|
26
|
+
beforeEach(() => {
|
|
27
|
+
jest
|
|
28
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
29
|
+
.mockImplementation(() => new SiteSettingsEntity(anonymousSiteSettings()));
|
|
30
|
+
});
|
|
23
31
|
it("Should ask the user's passphrase and call the move service", async () => {
|
|
24
32
|
expect.assertions(3);
|
|
25
33
|
|
|
@@ -21,10 +21,11 @@ import GetOrFindPasswordExpirySettingsController from "./getOrFindPasswordExpiry
|
|
|
21
21
|
import { defaultPasswordExpirySettingsDtoFromApi } from "passbolt-styleguide/src/shared/models/entity/passwordExpiry/passwordExpirySettingsEntity.test.data";
|
|
22
22
|
import PasswordExpirySettingsEntity from "passbolt-styleguide/src/shared/models/entity/passwordExpiry/passwordExpirySettingsEntity";
|
|
23
23
|
import {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} from "
|
|
27
|
-
import
|
|
24
|
+
defaultCeSiteSettings,
|
|
25
|
+
defaultProSiteSettings,
|
|
26
|
+
} from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
27
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
28
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
28
29
|
import PasswordExpiryProSettingsEntity from "passbolt-styleguide/src/shared/models/entity/passwordExpiryPro/passwordExpiryProSettingsEntity";
|
|
29
30
|
|
|
30
31
|
describe("GetOrFindPasswordExpirySettingsController", () => {
|
|
@@ -40,8 +41,10 @@ describe("GetOrFindPasswordExpirySettingsController", () => {
|
|
|
40
41
|
|
|
41
42
|
describe("CE version", () => {
|
|
42
43
|
beforeEach(() => {
|
|
43
|
-
const organizationSettings =
|
|
44
|
-
jest
|
|
44
|
+
const organizationSettings = defaultCeSiteSettings();
|
|
45
|
+
jest
|
|
46
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
47
|
+
.mockImplementation(() => new SiteSettingsEntity(organizationSettings));
|
|
45
48
|
});
|
|
46
49
|
it("Should return the value from the API", async () => {
|
|
47
50
|
expect.assertions(1);
|
|
@@ -122,8 +125,10 @@ describe("GetOrFindPasswordExpirySettingsController", () => {
|
|
|
122
125
|
|
|
123
126
|
describe("PRO version", () => {
|
|
124
127
|
beforeEach(() => {
|
|
125
|
-
const organizationSettings =
|
|
126
|
-
jest
|
|
128
|
+
const organizationSettings = defaultProSiteSettings();
|
|
129
|
+
jest
|
|
130
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
131
|
+
.mockImplementation(() => new SiteSettingsEntity(organizationSettings));
|
|
127
132
|
});
|
|
128
133
|
it("Should return the value from the API", async () => {
|
|
129
134
|
expect.assertions(1);
|
package/src/all/background_page/controller/passwordExpiry/savePasswordExpirySettingsController.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import PasswordExpirySettingsEntity from "passbolt-styleguide/src/shared/models/entity/passwordExpiry/passwordExpirySettingsEntity";
|
|
15
15
|
import PasswordExpirySettingsModel from "../../model/passwordExpiry/passwordExpirySettingsModel";
|
|
16
|
-
import
|
|
16
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
17
17
|
import PasswordExpiryProSettingsEntity from "passbolt-styleguide/src/shared/models/entity/passwordExpiryPro/passwordExpiryProSettingsEntity";
|
|
18
18
|
|
|
19
19
|
class SavePasswordExpirySettingsController {
|
|
@@ -28,7 +28,7 @@ class SavePasswordExpirySettingsController {
|
|
|
28
28
|
this.worker = worker;
|
|
29
29
|
this.requestId = requestId;
|
|
30
30
|
this.passwordExpirySettingsModel = new PasswordExpirySettingsModel(account, apiClientOptions);
|
|
31
|
-
this.
|
|
31
|
+
this.getOrFindSiteSettingsService = new GetOrFindSiteSettingsService(account, apiClientOptions);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/**
|
|
@@ -52,8 +52,8 @@ class SavePasswordExpirySettingsController {
|
|
|
52
52
|
* @returns {Promise<PasswordExpirySettingsEntity>}
|
|
53
53
|
*/
|
|
54
54
|
async exec(passwordExpirySettingsDto) {
|
|
55
|
-
const
|
|
56
|
-
const isAdvancedSettingsEnabled =
|
|
55
|
+
const siteSettings = await this.getOrFindSiteSettingsService.getOrFind(false);
|
|
56
|
+
const isAdvancedSettingsEnabled = siteSettings.isPluginEnabled("passwordExpiryPolicies");
|
|
57
57
|
const entity = isAdvancedSettingsEnabled
|
|
58
58
|
? new PasswordExpiryProSettingsEntity(passwordExpirySettingsDto)
|
|
59
59
|
: new PasswordExpirySettingsEntity(passwordExpirySettingsDto);
|
|
@@ -27,8 +27,9 @@ import {
|
|
|
27
27
|
defaultPasswordExpirySettingsDtoFromApi,
|
|
28
28
|
} from "passbolt-styleguide/src/shared/models/entity/passwordExpiry/passwordExpirySettingsEntity.test.data";
|
|
29
29
|
import PasswordExpiryProSettingsEntity from "passbolt-styleguide/src/shared/models/entity/passwordExpiryPro/passwordExpiryProSettingsEntity";
|
|
30
|
-
import {
|
|
31
|
-
import
|
|
30
|
+
import { defaultCeSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
31
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
32
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
32
33
|
|
|
33
34
|
describe("SavePasswordExpirySettingsController", () => {
|
|
34
35
|
let account, apiClientOptions;
|
|
@@ -47,9 +48,11 @@ describe("SavePasswordExpirySettingsController", () => {
|
|
|
47
48
|
const dtoToSave = defaultPasswordExpirySettingsDto();
|
|
48
49
|
const expectedDto = defaultPasswordExpirySettingsDtoFromApi(dtoToSave);
|
|
49
50
|
const expectedEntity = new PasswordExpirySettingsEntity(expectedDto);
|
|
50
|
-
const organizationSettings =
|
|
51
|
+
const organizationSettings = defaultCeSiteSettings();
|
|
51
52
|
|
|
52
|
-
jest
|
|
53
|
+
jest
|
|
54
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
55
|
+
.mockImplementation(() => new SiteSettingsEntity(organizationSettings));
|
|
53
56
|
fetch.doMockOnceIf(/password-expiry\/settings\.json/, async (request) => {
|
|
54
57
|
const body = JSON.parse(await request.text());
|
|
55
58
|
expect(body).toStrictEqual(dtoToSave);
|
|
@@ -75,12 +78,7 @@ describe("SavePasswordExpirySettingsController", () => {
|
|
|
75
78
|
});
|
|
76
79
|
|
|
77
80
|
const controller = new SavePasswordExpirySettingsController(null, null, account, apiClientOptions);
|
|
78
|
-
jest.spyOn(
|
|
79
|
-
Promise.resolve({
|
|
80
|
-
isPluginEnabled: () => true,
|
|
81
|
-
}),
|
|
82
|
-
);
|
|
83
|
-
jest.spyOn(controller.passwordExpirySettingsModel.organisationSettingsModel, "getOrFind").mockImplementation(() =>
|
|
81
|
+
jest.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind").mockImplementation(() =>
|
|
84
82
|
Promise.resolve({
|
|
85
83
|
isPluginEnabled: () => true,
|
|
86
84
|
}),
|
package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
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.14.0
|
|
13
|
+
*/
|
|
14
|
+
import FindResourcesService from "../../service/resource/findResourcesService";
|
|
15
|
+
import { assertArrayUUID } from "../../utils/assertions";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Controller for the `passbolt.permissions.find-by-ids-for-share` event.
|
|
19
|
+
* Returns the given resources with the permissions data tailored for the share process, fetched
|
|
20
|
+
* from the API in a single batched query (no metadata decryption, no passphrase prompt).
|
|
21
|
+
*/
|
|
22
|
+
class FindPermissionsByIdsForShareController {
|
|
23
|
+
/**
|
|
24
|
+
* Constructor.
|
|
25
|
+
* @param {Worker} worker The associated worker.
|
|
26
|
+
* @param {string} requestId The associated request id.
|
|
27
|
+
* @param {ApiClientOptions} apiClientOptions The api client options.
|
|
28
|
+
* @param {AccountEntity} account The user account.
|
|
29
|
+
*/
|
|
30
|
+
constructor(worker, requestId, apiClientOptions, account) {
|
|
31
|
+
this.worker = worker;
|
|
32
|
+
this.requestId = requestId;
|
|
33
|
+
this.findResourcesService = new FindResourcesService(account, apiClientOptions);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Controller executor.
|
|
38
|
+
* @param {Array<string>} resourcesIds The ids of the resources to retrieve.
|
|
39
|
+
* @returns {Promise<void>}
|
|
40
|
+
*/
|
|
41
|
+
async _exec(resourcesIds) {
|
|
42
|
+
try {
|
|
43
|
+
const result = await this.exec(resourcesIds);
|
|
44
|
+
this.worker.port.emit(this.requestId, "SUCCESS", result);
|
|
45
|
+
} catch (error) {
|
|
46
|
+
console.error(error);
|
|
47
|
+
this.worker.port.emit(this.requestId, "ERROR", error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Find the permissions of the given resources for the share process.
|
|
53
|
+
* @param {Array<string>} resourcesIds The ids of the resources to retrieve.
|
|
54
|
+
* @returns {Promise<ResourcesCollection>}
|
|
55
|
+
*/
|
|
56
|
+
async exec(resourcesIds) {
|
|
57
|
+
assertArrayUUID(resourcesIds);
|
|
58
|
+
return this.findResourcesService.findAllPermissionsByIdsForShare(resourcesIds);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export default FindPermissionsByIdsForShareController;
|
package/src/all/background_page/controller/permission/findPermissionsByIdsForShareController.test.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
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.14.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import AccountEntity from "../../model/entity/account/accountEntity";
|
|
16
|
+
import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
|
|
17
|
+
import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
|
|
18
|
+
import FindPermissionsByIdsForShareController from "./findPermissionsByIdsForShareController";
|
|
19
|
+
import ResourcesCollection from "../../model/entity/resource/resourcesCollection";
|
|
20
|
+
import { defaultResourceDto } from "passbolt-styleguide/src/shared/models/entity/resource/resourceEntity.test.data";
|
|
21
|
+
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
jest.clearAllMocks();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
describe("FindPermissionsByIdsForShareController", () => {
|
|
27
|
+
describe("::exec", () => {
|
|
28
|
+
it("Should retrieve the permissions of the resources matching the given ids.", async () => {
|
|
29
|
+
expect.assertions(3);
|
|
30
|
+
|
|
31
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
32
|
+
const resourcesDto = [defaultResourceDto(), defaultResourceDto()];
|
|
33
|
+
const resourcesCollection = new ResourcesCollection(resourcesDto);
|
|
34
|
+
const requestedIds = resourcesDto.map((resource) => resource.id);
|
|
35
|
+
const controller = new FindPermissionsByIdsForShareController(null, null, defaultApiClientOptions(), account);
|
|
36
|
+
jest
|
|
37
|
+
.spyOn(controller.findResourcesService, "findAllPermissionsByIdsForShare")
|
|
38
|
+
.mockImplementation(() => resourcesCollection);
|
|
39
|
+
|
|
40
|
+
const result = await controller.exec(requestedIds);
|
|
41
|
+
|
|
42
|
+
expect(result).toBeInstanceOf(ResourcesCollection);
|
|
43
|
+
expect(result).toStrictEqual(resourcesCollection);
|
|
44
|
+
expect(controller.findResourcesService.findAllPermissionsByIdsForShare).toHaveBeenCalledWith(requestedIds);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it("Should let error been thrown from the service if any.", async () => {
|
|
48
|
+
expect.assertions(1);
|
|
49
|
+
|
|
50
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
51
|
+
const controller = new FindPermissionsByIdsForShareController(null, null, defaultApiClientOptions(), account);
|
|
52
|
+
const requestedIds = [defaultResourceDto().id];
|
|
53
|
+
jest.spyOn(controller.findResourcesService, "findAllPermissionsByIdsForShare").mockImplementation(() => {
|
|
54
|
+
throw new Error("Something went wrong!");
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
await expect(() => controller.exec(requestedIds)).rejects.toThrow();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("Should assert its parameter.", async () => {
|
|
61
|
+
expect.assertions(1);
|
|
62
|
+
|
|
63
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
64
|
+
const controller = new FindPermissionsByIdsForShareController(null, null, defaultApiClientOptions(), account);
|
|
65
|
+
|
|
66
|
+
await expect(() => controller.exec(["not-a-uuid"])).rejects.toThrow(
|
|
67
|
+
"The given parameter is not a valid array of uuid",
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
@@ -61,7 +61,7 @@ class GenerateRecoverAccountRecoveryRequestKeyController {
|
|
|
61
61
|
email: temporaryAccount.account?.username,
|
|
62
62
|
passphrase: generateGpgKeyPairDto?.passphrase,
|
|
63
63
|
keySize: ACCOUNT_RECOVERY_REQUEST_KEY_SIZE,
|
|
64
|
-
date: await GetGpgKeyCreationDateService.getDate(this.apiClientOptions),
|
|
64
|
+
date: await GetGpgKeyCreationDateService.getDate(temporaryAccount.account, this.apiClientOptions),
|
|
65
65
|
};
|
|
66
66
|
const generateGpgKeyPairOptionsEntity = new GenerateGpgKeyPairOptionsEntity(dto);
|
|
67
67
|
const externalGpgKeyPair = await GenerateGpgKeyPairService.generateKeyPair(generateGpgKeyPairOptionsEntity);
|
|
@@ -40,11 +40,12 @@ class ResourceCreateController {
|
|
|
40
40
|
* Controller executor.
|
|
41
41
|
* @param {object} resourceDto The resource data
|
|
42
42
|
* @param {string|object} plaintextDto The secret to encrypt
|
|
43
|
+
* @param {Array<object>} [permissionChanges] Optional permission changes applied after create.
|
|
43
44
|
* @returns {Promise<void>}
|
|
44
45
|
*/
|
|
45
|
-
async _exec(resourceDto, plaintextDto) {
|
|
46
|
+
async _exec(resourceDto, plaintextDto, permissionChanges) {
|
|
46
47
|
try {
|
|
47
|
-
const resource = await this.exec(resourceDto, plaintextDto);
|
|
48
|
+
const resource = await this.exec(resourceDto, plaintextDto, permissionChanges);
|
|
48
49
|
this.worker.port.emit(this.requestId, "SUCCESS", resource);
|
|
49
50
|
} catch (error) {
|
|
50
51
|
console.error(error);
|
|
@@ -55,16 +56,22 @@ class ResourceCreateController {
|
|
|
55
56
|
/**
|
|
56
57
|
* @param {object} resourceDto The resource data
|
|
57
58
|
* @param {string|object} plaintextDto The secret to encrypt
|
|
59
|
+
* @param {Array<object>} [permissionChanges] Optional permission changes applied after create.
|
|
58
60
|
* @returns {Promise<void>}
|
|
59
61
|
*/
|
|
60
|
-
async exec(resourceDto, plaintextDto) {
|
|
62
|
+
async exec(resourceDto, plaintextDto, permissionChanges) {
|
|
61
63
|
const goals = resourceDto.folder_parent_id ? 10 : 3;
|
|
62
64
|
const passphrase = await this.getPassphraseService.getPassphrase(this.worker);
|
|
63
65
|
await this.verifyOrTrustMetadataKeyService.verifyTrustedOrTrustNewMetadataKey(passphrase);
|
|
64
66
|
this.progressService.start(goals, i18n.t("Initializing"));
|
|
65
67
|
|
|
66
68
|
try {
|
|
67
|
-
const resourceCreated = await this.resourceCreateService.create(
|
|
69
|
+
const resourceCreated = await this.resourceCreateService.create(
|
|
70
|
+
resourceDto,
|
|
71
|
+
plaintextDto,
|
|
72
|
+
passphrase,
|
|
73
|
+
permissionChanges,
|
|
74
|
+
);
|
|
68
75
|
await this.progressService.finishStep(i18n.t("Done!"), true);
|
|
69
76
|
return resourceCreated;
|
|
70
77
|
} finally {
|
|
@@ -27,12 +27,18 @@ import { v4 as uuidv4 } from "uuid";
|
|
|
27
27
|
import EncryptMessageService from "../../service/crypto/encryptMessageService";
|
|
28
28
|
import ResourceTypeService from "../../service/api/resourceType/resourceTypeService";
|
|
29
29
|
import { resourceTypesCollectionDto } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypesCollection.test.data";
|
|
30
|
+
import { anonymousSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
31
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
32
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
30
33
|
|
|
31
34
|
jest.mock("../../service/passphrase/getPassphraseService");
|
|
32
35
|
jest.mock("../../service/progress/progressService");
|
|
33
36
|
|
|
34
37
|
beforeEach(() => {
|
|
35
38
|
enableFetchMocks();
|
|
39
|
+
jest
|
|
40
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
41
|
+
.mockImplementation(() => new SiteSettingsEntity(anonymousSiteSettings()));
|
|
36
42
|
});
|
|
37
43
|
|
|
38
44
|
describe("ResourceCreateController", () => {
|
|
@@ -61,7 +67,12 @@ describe("ResourceCreateController", () => {
|
|
|
61
67
|
await controller._exec(resourceDTO, secret);
|
|
62
68
|
|
|
63
69
|
expect(controller.resourceCreateService.create).toHaveBeenCalledTimes(1);
|
|
64
|
-
expect(controller.resourceCreateService.create).toHaveBeenCalledWith(
|
|
70
|
+
expect(controller.resourceCreateService.create).toHaveBeenCalledWith(
|
|
71
|
+
resourceDTO,
|
|
72
|
+
secret,
|
|
73
|
+
pgpKeys.ada.passphrase,
|
|
74
|
+
undefined,
|
|
75
|
+
);
|
|
65
76
|
expect(controller.worker.port.emit).toHaveBeenCalledWith(null, "SUCCESS", resourceDTO);
|
|
66
77
|
});
|
|
67
78
|
|
|
@@ -43,11 +43,12 @@ class ResourceUpdateController {
|
|
|
43
43
|
* Controller executor.
|
|
44
44
|
* @param {object} resourceDto The resource data
|
|
45
45
|
* @param {string|object} plaintextDto The secret to encrypt
|
|
46
|
+
* @param {Array<object>} [permissionChanges] Optional permission changes applied after the update.
|
|
46
47
|
* @returns {Promise<void>}
|
|
47
48
|
*/
|
|
48
|
-
async _exec(resourceDto, plaintextDto) {
|
|
49
|
+
async _exec(resourceDto, plaintextDto, permissionChanges) {
|
|
49
50
|
try {
|
|
50
|
-
const resource = await this.exec(resourceDto, plaintextDto);
|
|
51
|
+
const resource = await this.exec(resourceDto, plaintextDto, permissionChanges);
|
|
51
52
|
this.worker.port.emit(this.requestId, "SUCCESS", resource);
|
|
52
53
|
} catch (error) {
|
|
53
54
|
console.error(error);
|
|
@@ -60,15 +61,21 @@ class ResourceUpdateController {
|
|
|
60
61
|
*
|
|
61
62
|
* @param {object} resourceDto The resource data
|
|
62
63
|
* @param {null|string|object} plaintextDto The secret to encrypt
|
|
64
|
+
* @param {Array<object>} [permissionChanges] Optional permission changes applied after the update.
|
|
63
65
|
* @returns {Promise<Object>} updated resource
|
|
64
66
|
*/
|
|
65
|
-
async exec(resourceDto, plaintextDto) {
|
|
67
|
+
async exec(resourceDto, plaintextDto, permissionChanges) {
|
|
66
68
|
const passphrase = await this.getPassphraseService.getPassphrase(this.worker);
|
|
67
69
|
await this.verifyOrTrustMetadataKeyService.verifyTrustedOrTrustNewMetadataKey(passphrase);
|
|
68
70
|
this.progressService.start(1, i18n.t("Updating resource"));
|
|
69
71
|
|
|
70
72
|
try {
|
|
71
|
-
const resourceUpdated = await this.resourceUpdateService.exec(
|
|
73
|
+
const resourceUpdated = await this.resourceUpdateService.exec(
|
|
74
|
+
resourceDto,
|
|
75
|
+
plaintextDto,
|
|
76
|
+
passphrase,
|
|
77
|
+
permissionChanges,
|
|
78
|
+
);
|
|
72
79
|
await this.progressService.finishStep(i18n.t("Done!"), true);
|
|
73
80
|
return resourceUpdated;
|
|
74
81
|
} finally {
|
|
@@ -27,12 +27,18 @@ import EncryptMessageService from "../../service/crypto/encryptMessageService";
|
|
|
27
27
|
import ResourceTypeService from "../../service/api/resourceType/resourceTypeService";
|
|
28
28
|
import { resourceTypesCollectionDto } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypesCollection.test.data";
|
|
29
29
|
import PermissionService from "../../service/api/permission/permissionService";
|
|
30
|
+
import { anonymousSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
31
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
32
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
30
33
|
|
|
31
34
|
jest.mock("../../service/passphrase/getPassphraseService");
|
|
32
35
|
jest.mock("../../service/progress/progressService");
|
|
33
36
|
|
|
34
37
|
beforeEach(() => {
|
|
35
38
|
enableFetchMocks();
|
|
39
|
+
jest
|
|
40
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
41
|
+
.mockImplementation(() => new SiteSettingsEntity(anonymousSiteSettings()));
|
|
36
42
|
});
|
|
37
43
|
|
|
38
44
|
describe("ResourceUpdateController", () => {
|
|
@@ -62,7 +68,12 @@ describe("ResourceUpdateController", () => {
|
|
|
62
68
|
await controller._exec(resourceDTO, null);
|
|
63
69
|
|
|
64
70
|
expect(controller.resourceUpdateService.exec).toHaveBeenCalledTimes(1);
|
|
65
|
-
expect(controller.resourceUpdateService.exec).toHaveBeenCalledWith(
|
|
71
|
+
expect(controller.resourceUpdateService.exec).toHaveBeenCalledWith(
|
|
72
|
+
resourceDTO,
|
|
73
|
+
null,
|
|
74
|
+
pgpKeys.ada.passphrase,
|
|
75
|
+
undefined,
|
|
76
|
+
);
|
|
66
77
|
expect(controller.worker.port.emit).toHaveBeenCalledWith(null, "SUCCESS", resourceDTO);
|
|
67
78
|
});
|
|
68
79
|
|
|
@@ -74,7 +85,29 @@ describe("ResourceUpdateController", () => {
|
|
|
74
85
|
await controller._exec(resourceDTO, secret);
|
|
75
86
|
|
|
76
87
|
expect(controller.resourceUpdateService.exec).toHaveBeenCalledTimes(1);
|
|
77
|
-
expect(controller.resourceUpdateService.exec).toHaveBeenCalledWith(
|
|
88
|
+
expect(controller.resourceUpdateService.exec).toHaveBeenCalledWith(
|
|
89
|
+
resourceDTO,
|
|
90
|
+
secret,
|
|
91
|
+
pgpKeys.ada.passphrase,
|
|
92
|
+
undefined,
|
|
93
|
+
);
|
|
94
|
+
expect(controller.worker.port.emit).toHaveBeenCalledWith(null, "SUCCESS", resourceDTO);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it("Should forward the permission changes to the resourceUpdateService", async () => {
|
|
98
|
+
expect.assertions(2);
|
|
99
|
+
|
|
100
|
+
const resourceDTO = defaultResourceDto();
|
|
101
|
+
const permissionChanges = [{ aro_foreign_key: "aro-id", aco_foreign_key: null, type: 1, is_new: true }];
|
|
102
|
+
jest.spyOn(controller.resourceUpdateService, "exec").mockImplementationOnce(() => resourceDTO);
|
|
103
|
+
await controller._exec(resourceDTO, secret, permissionChanges);
|
|
104
|
+
|
|
105
|
+
expect(controller.resourceUpdateService.exec).toHaveBeenCalledWith(
|
|
106
|
+
resourceDTO,
|
|
107
|
+
secret,
|
|
108
|
+
pgpKeys.ada.passphrase,
|
|
109
|
+
permissionChanges,
|
|
110
|
+
);
|
|
78
111
|
expect(controller.worker.port.emit).toHaveBeenCalledWith(null, "SUCCESS", resourceDTO);
|
|
79
112
|
});
|
|
80
113
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @since 4.9.4
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import
|
|
15
|
+
import GetOrFindResourceTypesService from "../../service/resourceType/getOrFindResourceTypesService";
|
|
16
16
|
|
|
17
17
|
class GetResourceTypesController {
|
|
18
18
|
/**
|
|
@@ -21,11 +21,12 @@ class GetResourceTypesController {
|
|
|
21
21
|
* @param {Worker} worker
|
|
22
22
|
* @param {string} requestId
|
|
23
23
|
* @param {ApiClientOptions} apiClientOptions the api client options
|
|
24
|
+
* @param {AccountEntity} account the account
|
|
24
25
|
*/
|
|
25
|
-
constructor(worker, requestId, apiClientOptions) {
|
|
26
|
+
constructor(worker, requestId, apiClientOptions, account) {
|
|
26
27
|
this.worker = worker;
|
|
27
28
|
this.requestId = requestId;
|
|
28
|
-
this.
|
|
29
|
+
this.getOrFindResourceTypesService = new GetOrFindResourceTypesService(account, apiClientOptions);
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
/**
|
|
@@ -47,7 +48,7 @@ class GetResourceTypesController {
|
|
|
47
48
|
* @returns {Promise<ResourceTypesCollection>}
|
|
48
49
|
*/
|
|
49
50
|
async exec() {
|
|
50
|
-
return this.
|
|
51
|
+
return this.getOrFindResourceTypesService.getOrFindAll();
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
54
|
|
|
@@ -17,6 +17,8 @@ import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiC
|
|
|
17
17
|
import { resourceTypesCollectionDto } from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypesCollection.test.data";
|
|
18
18
|
import GetResourceTypesController from "./getResourceTypesController";
|
|
19
19
|
import ResourceTypesCollection from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypesCollection";
|
|
20
|
+
import AccountEntity from "../../model/entity/account/accountEntity";
|
|
21
|
+
import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
|
|
20
22
|
|
|
21
23
|
beforeEach(() => {
|
|
22
24
|
enableFetchMocks();
|
|
@@ -30,9 +32,10 @@ describe("GetResourceTypesController", () => {
|
|
|
30
32
|
expect.assertions(2);
|
|
31
33
|
|
|
32
34
|
const resourceTypesDto = resourceTypesCollectionDto();
|
|
33
|
-
const
|
|
35
|
+
const account = new AccountEntity(defaultAccountDto());
|
|
36
|
+
const controller = new GetResourceTypesController(null, null, defaultApiClientOptions(), account);
|
|
34
37
|
jest
|
|
35
|
-
.spyOn(controller.
|
|
38
|
+
.spyOn(controller.getOrFindResourceTypesService, "getOrFindAll")
|
|
36
39
|
.mockImplementationOnce(() => new ResourceTypesCollection(resourceTypesDto));
|
|
37
40
|
|
|
38
41
|
const resourceTypesCollection = await controller.exec();
|