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
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
import ResourceModel from "../../model/resource/resourceModel";
|
|
16
|
-
import ResourceTypeModel from "../../model/resourceType/resourceTypeModel";
|
|
17
16
|
import GetPassphraseService from "../../service/passphrase/getPassphraseService";
|
|
18
17
|
import WorkerService from "../../service/worker/workerService";
|
|
19
18
|
import GetDecryptedUserPrivateKeyService from "../../service/account/getDecryptedUserPrivateKeyService";
|
|
@@ -21,6 +20,7 @@ import DecryptAndParseResourceSecretService from "../../service/secret/decryptAn
|
|
|
21
20
|
import InformMenuPagemod from "../../pagemod/informMenuPagemod";
|
|
22
21
|
import QuickAccessPagemod from "../../pagemod/quickAccessPagemod";
|
|
23
22
|
import FindSecretService from "../../service/secret/findSecretService";
|
|
23
|
+
import GetSecretSchemaResourceTypeService from "../../service/resourceType/getSecretSchemaResourceTypeService";
|
|
24
24
|
|
|
25
25
|
class AutofillController {
|
|
26
26
|
/**
|
|
@@ -35,7 +35,7 @@ class AutofillController {
|
|
|
35
35
|
this.requestId = requestId;
|
|
36
36
|
this.resourceModel = new ResourceModel(apiClientOptions, account);
|
|
37
37
|
this.findSecretService = new FindSecretService(account, apiClientOptions);
|
|
38
|
-
this.
|
|
38
|
+
this.getSecretSchemaResourceTypeService = new GetSecretSchemaResourceTypeService(account, apiClientOptions);
|
|
39
39
|
this.getPassphraseService = new GetPassphraseService(account);
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -71,7 +71,7 @@ class AutofillController {
|
|
|
71
71
|
// Get the resource, decrypt the resources password and requests to fill the credentials
|
|
72
72
|
const resource = await this.resourceModel.getById(resourceId);
|
|
73
73
|
const secret = await this.findSecretService.findByResourceId(resourceId);
|
|
74
|
-
const secretSchema = await this.
|
|
74
|
+
const secretSchema = await this.getSecretSchemaResourceTypeService.getByResourceTypeId(resource.resourceTypeId);
|
|
75
75
|
const privateKey = await GetDecryptedUserPrivateKeyService.getKey(passphrase);
|
|
76
76
|
const plaintextSecret = await DecryptAndParseResourceSecretService.decryptAndParse(
|
|
77
77
|
secret,
|
|
@@ -76,7 +76,7 @@ describe("AutofillController", () => {
|
|
|
76
76
|
jest.spyOn(controller.getPassphraseService, "getPassphrase").mockResolvedValue(pgpKeys.ada.passphrase);
|
|
77
77
|
jest.spyOn(controller.resourceModel, "getById").mockResolvedValue(resource);
|
|
78
78
|
jest.spyOn(controller.findSecretService, "findByResourceId").mockResolvedValue(new SecretEntity(secretDto));
|
|
79
|
-
jest.spyOn(controller.
|
|
79
|
+
jest.spyOn(controller.getSecretSchemaResourceTypeService, "getByResourceTypeId").mockResolvedValue(schema);
|
|
80
80
|
|
|
81
81
|
await controller.exec(resource.id, worker.tabId);
|
|
82
82
|
|
|
@@ -88,8 +88,10 @@ describe("AutofillController", () => {
|
|
|
88
88
|
expect(controller.findSecretService.findByResourceId).toHaveBeenCalledTimes(1);
|
|
89
89
|
expect(controller.findSecretService.findByResourceId).toHaveBeenCalledWith(resource.id);
|
|
90
90
|
|
|
91
|
-
expect(controller.
|
|
92
|
-
expect(controller.
|
|
91
|
+
expect(controller.getSecretSchemaResourceTypeService.getByResourceTypeId).toHaveBeenCalledTimes(1);
|
|
92
|
+
expect(controller.getSecretSchemaResourceTypeService.getByResourceTypeId).toHaveBeenCalledWith(
|
|
93
|
+
resource.resourceTypeId,
|
|
94
|
+
);
|
|
93
95
|
|
|
94
96
|
expect(portWrapper.emit).toHaveBeenCalledTimes(2);
|
|
95
97
|
expect(portWrapper.emit).toHaveBeenCalledWith("passbolt.web-integration.fill-credentials", {
|
|
@@ -119,7 +121,7 @@ describe("AutofillController", () => {
|
|
|
119
121
|
jest.spyOn(controller.getPassphraseService, "getPassphrase").mockResolvedValue(pgpKeys.ada.passphrase);
|
|
120
122
|
jest.spyOn(controller.resourceModel, "getById").mockResolvedValue(resource);
|
|
121
123
|
jest.spyOn(controller.findSecretService, "findByResourceId").mockResolvedValue(new SecretEntity(secretDto));
|
|
122
|
-
jest.spyOn(controller.
|
|
124
|
+
jest.spyOn(controller.getSecretSchemaResourceTypeService, "getByResourceTypeId").mockResolvedValue(schema);
|
|
123
125
|
|
|
124
126
|
await controller.exec(resource.id, worker.tabId);
|
|
125
127
|
|
|
@@ -133,8 +135,10 @@ describe("AutofillController", () => {
|
|
|
133
135
|
expect(controller.findSecretService.findByResourceId).toHaveBeenCalledTimes(1);
|
|
134
136
|
expect(controller.findSecretService.findByResourceId).toHaveBeenCalledWith(resource.id);
|
|
135
137
|
|
|
136
|
-
expect(controller.
|
|
137
|
-
expect(controller.
|
|
138
|
+
expect(controller.getSecretSchemaResourceTypeService.getByResourceTypeId).toHaveBeenCalledTimes(1);
|
|
139
|
+
expect(controller.getSecretSchemaResourceTypeService.getByResourceTypeId).toHaveBeenCalledWith(
|
|
140
|
+
resource.resourceTypeId,
|
|
141
|
+
);
|
|
138
142
|
|
|
139
143
|
expect(portWrapper.emit).toHaveBeenCalledTimes(1);
|
|
140
144
|
expect(portWrapper.request).toHaveBeenCalledTimes(1);
|
|
@@ -165,7 +169,7 @@ describe("AutofillController", () => {
|
|
|
165
169
|
jest.spyOn(controller.getPassphraseService, "getPassphrase").mockResolvedValue(pgpKeys.ada.passphrase);
|
|
166
170
|
jest.spyOn(controller.resourceModel, "getById").mockResolvedValue(resource);
|
|
167
171
|
jest.spyOn(controller.findSecretService, "findByResourceId").mockResolvedValue(new SecretEntity(secretDto));
|
|
168
|
-
jest.spyOn(controller.
|
|
172
|
+
jest.spyOn(controller.getSecretSchemaResourceTypeService, "getByResourceTypeId").mockResolvedValue(schema);
|
|
169
173
|
|
|
170
174
|
await controller.exec(resource.id, worker.tabId);
|
|
171
175
|
|
|
@@ -180,8 +184,10 @@ describe("AutofillController", () => {
|
|
|
180
184
|
expect(controller.findSecretService.findByResourceId).toHaveBeenCalledTimes(1);
|
|
181
185
|
expect(controller.findSecretService.findByResourceId).toHaveBeenCalledWith(resource.id);
|
|
182
186
|
|
|
183
|
-
expect(controller.
|
|
184
|
-
expect(controller.
|
|
187
|
+
expect(controller.getSecretSchemaResourceTypeService.getByResourceTypeId).toHaveBeenCalledTimes(1);
|
|
188
|
+
expect(controller.getSecretSchemaResourceTypeService.getByResourceTypeId).toHaveBeenCalledWith(
|
|
189
|
+
resource.resourceTypeId,
|
|
190
|
+
);
|
|
185
191
|
|
|
186
192
|
expect(portWrapper.emit).not.toHaveBeenCalledWith("passbolt.web-integration.fill-credentials", {
|
|
187
193
|
username: resource.username,
|
|
@@ -215,7 +221,7 @@ describe("AutofillController", () => {
|
|
|
215
221
|
jest.spyOn(controller.getPassphraseService, "getPassphrase").mockResolvedValue(pgpKeys.ada.passphrase);
|
|
216
222
|
jest.spyOn(controller.resourceModel, "getById").mockResolvedValue(resource);
|
|
217
223
|
jest.spyOn(controller.findSecretService, "findByResourceId").mockResolvedValue(new SecretEntity(secretDto));
|
|
218
|
-
jest.spyOn(controller.
|
|
224
|
+
jest.spyOn(controller.getSecretSchemaResourceTypeService, "getByResourceTypeId").mockResolvedValue(schema);
|
|
219
225
|
|
|
220
226
|
await controller.exec(resource.id, worker.tabId);
|
|
221
227
|
|
|
@@ -229,8 +235,10 @@ describe("AutofillController", () => {
|
|
|
229
235
|
expect(controller.findSecretService.findByResourceId).toHaveBeenCalledTimes(1);
|
|
230
236
|
expect(controller.findSecretService.findByResourceId).toHaveBeenCalledWith(resource.id);
|
|
231
237
|
|
|
232
|
-
expect(controller.
|
|
233
|
-
expect(controller.
|
|
238
|
+
expect(controller.getSecretSchemaResourceTypeService.getByResourceTypeId).toHaveBeenCalledTimes(1);
|
|
239
|
+
expect(controller.getSecretSchemaResourceTypeService.getByResourceTypeId).toHaveBeenCalledWith(
|
|
240
|
+
resource.resourceTypeId,
|
|
241
|
+
);
|
|
234
242
|
|
|
235
243
|
expect(portWrapper.emit).not.toHaveBeenCalledWith("passbolt.web-integration.fill-credentials", {
|
|
236
244
|
username: "",
|
|
@@ -52,7 +52,7 @@ class ExportResourcesFileController {
|
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* Main execution function.
|
|
55
|
-
* @return {Promise<
|
|
55
|
+
* @return {Promise<{customFieldsConflicts: Array}>} The custom fields renamed to avoid conflicting with reserved field names
|
|
56
56
|
*/
|
|
57
57
|
async exec(exportResourcesFileDto) {
|
|
58
58
|
//Assert the param through the entity
|
|
@@ -61,7 +61,10 @@ class ExportResourcesFileController {
|
|
|
61
61
|
try {
|
|
62
62
|
const passphrase = await this.getPassphraseService.getPassphrase(this.worker);
|
|
63
63
|
await this.exportResourcesService.prepareExportContent(exportResourcesFileEntity, passphrase);
|
|
64
|
-
await this.exportResourcesService.exportToFile(
|
|
64
|
+
const customFieldsConflicts = await this.exportResourcesService.exportToFile(
|
|
65
|
+
exportResourcesFileEntity,
|
|
66
|
+
passphrase,
|
|
67
|
+
);
|
|
65
68
|
const date = new Date().toISOString().slice(0, 10);
|
|
66
69
|
const filename = `passbolt-export-${date}.${exportResourcesFileEntity.fileType}`;
|
|
67
70
|
const mimeType =
|
|
@@ -69,7 +72,7 @@ class ExportResourcesFileController {
|
|
|
69
72
|
const blobFile = exportResourcesFileEntity.toBlob(mimeType);
|
|
70
73
|
await FileService.saveFile(filename, blobFile, mimeType, this.worker.tab.id);
|
|
71
74
|
this.progressService.finishStep(i18n.t("Done"), true);
|
|
72
|
-
return
|
|
75
|
+
return { customFieldsConflicts: customFieldsConflicts || [] };
|
|
73
76
|
} finally {
|
|
74
77
|
this.progressService.close();
|
|
75
78
|
}
|
|
@@ -51,6 +51,7 @@ import { defaultDecryptedSharedMetadataKeysDtos } from "passbolt-styleguide/src/
|
|
|
51
51
|
import MetadataKeysCollection from "passbolt-styleguide/src/shared/models/entity/metadata/metadataKeysCollection";
|
|
52
52
|
import GetOrFindMetadataKeysService from "../../service/metadata/getOrFindMetadataKeysService";
|
|
53
53
|
import { mockPassboltResponse } from "passbolt-styleguide/test/mocks/mockApiResponse";
|
|
54
|
+
import GetOrFindResourceTypesService from "../../service/resourceType/getOrFindResourceTypesService";
|
|
54
55
|
|
|
55
56
|
beforeEach(async () => {
|
|
56
57
|
await MockExtension.withConfiguredAccount();
|
|
@@ -118,10 +119,10 @@ describe("ExportResourcesFileController", () => {
|
|
|
118
119
|
.mockImplementation(() => mockPassboltResponse(resourceCollectionV4));
|
|
119
120
|
const result = await controller.exec(file);
|
|
120
121
|
|
|
121
|
-
const blobFile = new Blob([
|
|
122
|
+
const blobFile = new Blob([KdbxCsvFile], { type: "text/csv" });
|
|
122
123
|
|
|
123
124
|
expect(FileService.saveFile).toHaveBeenCalledWith(filename, blobFile, "text/csv", 1);
|
|
124
|
-
expect(result
|
|
125
|
+
expect(result).toEqual({ customFieldsConflicts: [] });
|
|
125
126
|
});
|
|
126
127
|
});
|
|
127
128
|
});
|
|
@@ -179,11 +180,40 @@ describe("ExportResourcesFileController", () => {
|
|
|
179
180
|
|
|
180
181
|
const result = await controller.exec(file);
|
|
181
182
|
|
|
182
|
-
expect(result
|
|
183
|
+
expect(result).toEqual({ customFieldsConflicts: [] });
|
|
183
184
|
});
|
|
184
185
|
});
|
|
185
186
|
});
|
|
186
187
|
|
|
188
|
+
it("should return the custom fields renamed to avoid conflicting with reserved field names", async () => {
|
|
189
|
+
expect.assertions(1);
|
|
190
|
+
const conflicts = [{ resourceName: "GitHub", originalKey: "Password", newKey: "Password (1)" }];
|
|
191
|
+
jest.spyOn(ResourcesKdbxExporter.prototype, "export").mockImplementation(async function () {
|
|
192
|
+
this.exportEntity.file = new ArrayBuffer(0);
|
|
193
|
+
return conflicts;
|
|
194
|
+
});
|
|
195
|
+
const resourceType = resourceTypeCollection.find(
|
|
196
|
+
(resourceType) => resourceType.slug === RESOURCE_TYPE_V5_DEFAULT_TOTP_SLUG,
|
|
197
|
+
);
|
|
198
|
+
const file = {
|
|
199
|
+
format: FORMAT_KDBX,
|
|
200
|
+
resources_ids: [uuidv4()],
|
|
201
|
+
folders_ids: [foldersDto[0].id],
|
|
202
|
+
};
|
|
203
|
+
const resourceCollectionV4 = await resourceCollectionV4ToExport({
|
|
204
|
+
resourceType: resourceType,
|
|
205
|
+
folder_parent_id: foldersDto[0].id,
|
|
206
|
+
totp: defaultTotpDto({ secret_key: "THISISASECRET" }),
|
|
207
|
+
});
|
|
208
|
+
jest
|
|
209
|
+
.spyOn(ResourceService.prototype, "findAll")
|
|
210
|
+
.mockImplementation(() => mockPassboltResponse(resourceCollectionV4));
|
|
211
|
+
|
|
212
|
+
const result = await controller.exec(file);
|
|
213
|
+
|
|
214
|
+
expect(result).toEqual({ customFieldsConflicts: conflicts });
|
|
215
|
+
});
|
|
216
|
+
|
|
187
217
|
describe.each([
|
|
188
218
|
{ scenario: "xls", format: "xls" },
|
|
189
219
|
{ scenario: "xlsx", format: "xlsx" },
|
|
@@ -243,7 +273,7 @@ describe("ExportResourcesFileController", () => {
|
|
|
243
273
|
expect.assertions(1);
|
|
244
274
|
|
|
245
275
|
jest.spyOn(controller.progressService, "close");
|
|
246
|
-
jest.spyOn(
|
|
276
|
+
jest.spyOn(GetOrFindResourceTypesService.prototype, "getOrFindAll").mockImplementation(() => {
|
|
247
277
|
throw new Error("API error");
|
|
248
278
|
});
|
|
249
279
|
const file = {
|
|
@@ -25,6 +25,8 @@ import storage from "../../sdk/storage";
|
|
|
25
25
|
import { Config } from "../../model/config";
|
|
26
26
|
import AuthModel from "../../model/auth/authModel";
|
|
27
27
|
import AppBootstrapPagemod from "../../pagemod/appBootstrapPagemod";
|
|
28
|
+
import GetActiveAccountService from "../../service/account/getActiveAccountService";
|
|
29
|
+
import BuildApiClientOptionsService from "../../service/account/buildApiClientOptionsService";
|
|
28
30
|
|
|
29
31
|
class OnExtensionInstalledController {
|
|
30
32
|
/**
|
|
@@ -87,7 +89,9 @@ class OnExtensionInstalledController {
|
|
|
87
89
|
}
|
|
88
90
|
let authStatus;
|
|
89
91
|
try {
|
|
90
|
-
const
|
|
92
|
+
const account = await GetActiveAccountService.get();
|
|
93
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
94
|
+
const checkAuthStatusService = new CheckAuthStatusService(account, apiClientOptions);
|
|
91
95
|
// use the cached data as the worker could wake up every 30 secondes.
|
|
92
96
|
authStatus = await checkAuthStatusService.checkAuthStatus(false);
|
|
93
97
|
} catch (error) {
|
|
@@ -130,7 +134,9 @@ class OnExtensionInstalledController {
|
|
|
130
134
|
|
|
131
135
|
let authStatus;
|
|
132
136
|
try {
|
|
133
|
-
const
|
|
137
|
+
const account = await GetActiveAccountService.get();
|
|
138
|
+
const apiClientOptions = BuildApiClientOptionsService.buildFromAccount(account);
|
|
139
|
+
const checkAuthStatusService = new CheckAuthStatusService(account, apiClientOptions);
|
|
134
140
|
// use the cached data as the worker could wake up every 30 secondes.
|
|
135
141
|
authStatus = await checkAuthStatusService.checkAuthStatus(false);
|
|
136
142
|
} catch (error) {
|
|
@@ -19,6 +19,9 @@ import AuthModel from "../../model/auth/authModel";
|
|
|
19
19
|
import CheckAuthStatusService from "../../service/auth/checkAuthStatusService";
|
|
20
20
|
import GetActiveAccountService from "../../service/account/getActiveAccountService";
|
|
21
21
|
import User from "../../model/user";
|
|
22
|
+
import OnlineSessionEntity from "passbolt-styleguide/src/shared/models/entity/session/onlineSessionEntity";
|
|
23
|
+
import AccountEntity from "../../model/entity/account/accountEntity";
|
|
24
|
+
import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
|
|
22
25
|
|
|
23
26
|
// Reset the modules before each test.
|
|
24
27
|
beforeEach(() => {
|
|
@@ -149,12 +152,13 @@ describe("OnExtensionInstalledController", () => {
|
|
|
149
152
|
jest.spyOn(OnExtensionInstalledController, "onBrowserUpdate");
|
|
150
153
|
jest.spyOn(User.getInstance(), "isValid").mockImplementation(() => true);
|
|
151
154
|
jest.spyOn(UserSettings.prototype, "getDomain").mockImplementation(() => "https://passbolt.dev");
|
|
155
|
+
jest.spyOn(GetActiveAccountService, "get").mockImplementation(() => new AccountEntity(defaultAccountDto()));
|
|
152
156
|
jest.spyOn(AuthModel.prototype, "logout").mockImplementation(() => {});
|
|
153
157
|
jest.spyOn(browser.tabs, "query").mockImplementation(() => Promise.resolve(tabs));
|
|
154
158
|
jest.spyOn(browser.tabs, "reload");
|
|
155
159
|
jest
|
|
156
160
|
.spyOn(CheckAuthStatusService.prototype, "checkAuthStatus")
|
|
157
|
-
.mockImplementation(() => ({
|
|
161
|
+
.mockImplementation(() => new OnlineSessionEntity({ is_authenticated: true }));
|
|
158
162
|
// process
|
|
159
163
|
await OnExtensionInstalledController.exec(details);
|
|
160
164
|
// expectation
|
|
@@ -9,27 +9,26 @@
|
|
|
9
9
|
* @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
|
|
10
10
|
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
11
11
|
* @link https://www.passbolt.com Passbolt(tm)
|
|
12
|
-
* @since 5.
|
|
12
|
+
* @since 5.14.0
|
|
13
13
|
*/
|
|
14
|
-
import
|
|
14
|
+
import FindGroupsService from "../../service/group/findGroupsService";
|
|
15
15
|
import { assertArrayUUID } from "../../utils/assertions";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* Controller for the `passbolt.groups.
|
|
19
|
-
*
|
|
18
|
+
* Controller for the `passbolt.groups.find-by-ids-for-share` event.
|
|
19
|
+
* Returns the groups matching the given ids fetched from the API.
|
|
20
20
|
*/
|
|
21
|
-
class
|
|
21
|
+
class FindGroupsByIdsForShareController {
|
|
22
22
|
/**
|
|
23
23
|
* Constructor.
|
|
24
24
|
* @param {Worker} worker The associated worker.
|
|
25
25
|
* @param {string} requestId The associated request id.
|
|
26
26
|
* @param {ApiClientOptions} apiClientOptions The api client options.
|
|
27
|
-
* @param {AccountEntity} account The user account.
|
|
28
27
|
*/
|
|
29
|
-
constructor(worker, requestId, apiClientOptions
|
|
28
|
+
constructor(worker, requestId, apiClientOptions) {
|
|
30
29
|
this.worker = worker;
|
|
31
30
|
this.requestId = requestId;
|
|
32
|
-
this.
|
|
31
|
+
this.findGroupsService = new FindGroupsService(apiClientOptions);
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
/**
|
|
@@ -54,8 +53,8 @@ class GetOrFindGroupsController {
|
|
|
54
53
|
*/
|
|
55
54
|
async exec(groupIds) {
|
|
56
55
|
assertArrayUUID(groupIds);
|
|
57
|
-
return this.
|
|
56
|
+
return this.findGroupsService.findAllByIdsForShare(groupIds);
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
59
|
|
|
61
|
-
export default
|
|
60
|
+
export default FindGroupsByIdsForShareController;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import AccountEntity from "../../model/entity/account/accountEntity";
|
|
16
16
|
import { defaultAccountDto } from "../../model/entity/account/accountEntity.test.data";
|
|
17
17
|
import { defaultApiClientOptions } from "passbolt-styleguide/src/shared/lib/apiClient/apiClientOptions.test.data";
|
|
18
|
-
import
|
|
18
|
+
import FindGroupsByIdsForShareController from "./findGroupsByIdsForShareController";
|
|
19
19
|
import GroupsCollection from "passbolt-styleguide/src/shared/models/entity/group/groupsCollection";
|
|
20
20
|
import { defaultGroupsDtos } from "passbolt-styleguide/src/shared/models/entity/group/groupsCollection.test.data";
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ beforeEach(() => {
|
|
|
23
23
|
jest.clearAllMocks();
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
-
describe("
|
|
26
|
+
describe("FindGroupsByIdsForShareController", () => {
|
|
27
27
|
describe("::exec", () => {
|
|
28
28
|
it("Should retrieve the groups matching the given ids.", async () => {
|
|
29
29
|
expect.assertions(3);
|
|
@@ -32,23 +32,23 @@ describe("GetOrFindGroupsController", () => {
|
|
|
32
32
|
const groupsDto = defaultGroupsDtos();
|
|
33
33
|
const groupsCollection = new GroupsCollection(groupsDto);
|
|
34
34
|
const requestedIds = [groupsDto[1].id, groupsDto[3].id];
|
|
35
|
-
const controller = new
|
|
36
|
-
jest.spyOn(controller.
|
|
35
|
+
const controller = new FindGroupsByIdsForShareController(null, null, defaultApiClientOptions(), account);
|
|
36
|
+
jest.spyOn(controller.findGroupsService, "findAllByIdsForShare").mockImplementation(() => groupsCollection);
|
|
37
37
|
|
|
38
38
|
const result = await controller.exec(requestedIds);
|
|
39
39
|
|
|
40
40
|
expect(result).toBeInstanceOf(GroupsCollection);
|
|
41
41
|
expect(result).toStrictEqual(groupsCollection);
|
|
42
|
-
expect(controller.
|
|
42
|
+
expect(controller.findGroupsService.findAllByIdsForShare).toHaveBeenCalledWith(requestedIds);
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
it("Should let error been thrown from the service if any.", async () => {
|
|
46
46
|
expect.assertions(1);
|
|
47
47
|
|
|
48
48
|
const account = new AccountEntity(defaultAccountDto());
|
|
49
|
-
const controller = new
|
|
49
|
+
const controller = new FindGroupsByIdsForShareController(null, null, defaultApiClientOptions(), account);
|
|
50
50
|
const requestedIds = [defaultGroupsDtos()[0].id];
|
|
51
|
-
jest.spyOn(controller.
|
|
51
|
+
jest.spyOn(controller.findGroupsService, "findAllByIdsForShare").mockImplementation(() => {
|
|
52
52
|
throw new Error("Something went wrong!");
|
|
53
53
|
});
|
|
54
54
|
|
|
@@ -59,7 +59,7 @@ describe("GetOrFindGroupsController", () => {
|
|
|
59
59
|
expect.assertions(1);
|
|
60
60
|
|
|
61
61
|
const account = new AccountEntity(defaultAccountDto());
|
|
62
|
-
const controller = new
|
|
62
|
+
const controller = new FindGroupsByIdsForShareController(null, null, defaultApiClientOptions(), account);
|
|
63
63
|
|
|
64
64
|
await expect(() => controller.exec(["not-a-uuid"])).rejects.toThrow(
|
|
65
65
|
"The given parameter is not a valid array of uuid",
|
|
@@ -96,6 +96,7 @@ describe("GroupsUpdateController", () => {
|
|
|
96
96
|
it("Add 2 users in a group with 1 secret being unknown for both users and 2 other secrets known by only one user each", async () => {
|
|
97
97
|
expect.assertions(20);
|
|
98
98
|
|
|
99
|
+
chrome.runtime.getManifest.mockImplementation(() => ({ manifest_version: 2 }));
|
|
99
100
|
const getResourceId = (data, index) => data["dry-run"].Secrets[index].Secret[0].resource_id;
|
|
100
101
|
const findSecret = (secrets, userId, resource1Id) => {
|
|
101
102
|
for (const i in secrets) {
|
|
@@ -68,10 +68,17 @@ import {
|
|
|
68
68
|
RESOURCE_TYPE_V5_DEFAULT_TOTP_SLUG,
|
|
69
69
|
} from "passbolt-styleguide/src/shared/models/entity/resourceType/resourceTypeSchemasDefinition";
|
|
70
70
|
import GetOrFindMetadataSettingsService from "../../service/metadata/getOrFindMetadataSettingsService";
|
|
71
|
+
import GetOrFindResourceTypesService from "../../service/resourceType/getOrFindResourceTypesService";
|
|
72
|
+
import { anonymousSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
73
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
74
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
71
75
|
|
|
72
76
|
beforeEach(async () => {
|
|
73
77
|
await MockExtension.withConfiguredAccount();
|
|
74
78
|
jest.clearAllMocks();
|
|
79
|
+
jest
|
|
80
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
81
|
+
.mockImplementation(() => new SiteSettingsEntity(anonymousSiteSettings()));
|
|
75
82
|
});
|
|
76
83
|
|
|
77
84
|
describe("ImportResourcesFileController", () => {
|
|
@@ -808,7 +815,7 @@ describe("ImportResourcesFileController", () => {
|
|
|
808
815
|
expect.assertions(1);
|
|
809
816
|
|
|
810
817
|
jest.spyOn(controller.progressService, "close");
|
|
811
|
-
jest.spyOn(
|
|
818
|
+
jest.spyOn(GetOrFindResourceTypesService.prototype, "getOrFindAll").mockImplementationOnce(() => {
|
|
812
819
|
throw new Error("API error");
|
|
813
820
|
});
|
|
814
821
|
const file = btoa(BinaryConvert.toBinary(defaultCsvData));
|
|
@@ -31,7 +31,7 @@ class InformCallToActionController {
|
|
|
31
31
|
constructor(worker, apiClientOptions, account) {
|
|
32
32
|
this.worker = worker;
|
|
33
33
|
this.resourceModel = new ResourceModel(apiClientOptions, account);
|
|
34
|
-
this.checkAuthStatusService = new CheckAuthStatusService();
|
|
34
|
+
this.checkAuthStatusService = new CheckAuthStatusService(account, apiClientOptions);
|
|
35
35
|
this.getOrFindResourcesService = new GetOrFindResourcesService(account, apiClientOptions);
|
|
36
36
|
this.openTrustedDomainTabService = new OpenTrustedDomainTabService();
|
|
37
37
|
}
|
|
@@ -65,7 +65,7 @@ class InformCallToActionController {
|
|
|
65
65
|
const queryParameters = [{ name: "feature", value: "login" }];
|
|
66
66
|
await QuickAccessService.open(queryParameters);
|
|
67
67
|
this.worker.port.emit(requestId, "SUCCESS");
|
|
68
|
-
} else if (status.
|
|
68
|
+
} else if (!status.isMfaAuthenticated) {
|
|
69
69
|
await this.openTrustedDomainTabService.openTab();
|
|
70
70
|
this.worker.port.emit(requestId, "SUCCESS");
|
|
71
71
|
} else {
|
|
@@ -22,6 +22,7 @@ import WorkerService from "../../service/worker/workerService";
|
|
|
22
22
|
import { readWorker } from "../../model/entity/worker/workerEntity.test.data";
|
|
23
23
|
import MockPort from "passbolt-styleguide/src/react-extension/test/mock/MockPort";
|
|
24
24
|
import { defaultResourceDtosCollection } from "passbolt-styleguide/src/shared/models/entity/resource/resourcesCollection.test.data";
|
|
25
|
+
import OnlineSessionEntity from "passbolt-styleguide/src/shared/models/entity/session/onlineSessionEntity";
|
|
25
26
|
|
|
26
27
|
describe("InformCallToActionController", () => {
|
|
27
28
|
let requestId, worker, port, controller, suggestedResources;
|
|
@@ -123,7 +124,7 @@ describe("InformCallToActionController", () => {
|
|
|
123
124
|
|
|
124
125
|
jest
|
|
125
126
|
.spyOn(controller.checkAuthStatusService, "checkAuthStatus")
|
|
126
|
-
.mockResolvedValue({
|
|
127
|
+
.mockResolvedValue(new OnlineSessionEntity({ is_authenticated: true, is_mfa_authenticated: true }));
|
|
127
128
|
jest.spyOn(WorkerService, "get").mockResolvedValue({ port });
|
|
128
129
|
|
|
129
130
|
await controller.execute(requestId);
|
|
@@ -150,7 +151,9 @@ describe("InformCallToActionController", () => {
|
|
|
150
151
|
expect.assertions(1);
|
|
151
152
|
|
|
152
153
|
const error = new Error();
|
|
153
|
-
jest
|
|
154
|
+
jest
|
|
155
|
+
.spyOn(controller.checkAuthStatusService, "checkAuthStatus")
|
|
156
|
+
.mockResolvedValue(new OnlineSessionEntity({ is_authenticated: false }));
|
|
154
157
|
jest.spyOn(QuickAccessService, "open").mockRejectedValue(error);
|
|
155
158
|
|
|
156
159
|
await controller.execute();
|
|
@@ -164,7 +167,7 @@ describe("InformCallToActionController", () => {
|
|
|
164
167
|
const error = new Error();
|
|
165
168
|
jest
|
|
166
169
|
.spyOn(controller.checkAuthStatusService, "checkAuthStatus")
|
|
167
|
-
.mockResolvedValue({
|
|
170
|
+
.mockResolvedValue(new OnlineSessionEntity({ is_authenticated: true, is_mfa_authenticated: false }));
|
|
168
171
|
jest.spyOn(controller.openTrustedDomainTabService, "openTab").mockRejectedValue(error);
|
|
169
172
|
|
|
170
173
|
await controller.execute();
|
|
@@ -178,7 +181,7 @@ describe("InformCallToActionController", () => {
|
|
|
178
181
|
const error = new Error();
|
|
179
182
|
jest
|
|
180
183
|
.spyOn(controller.checkAuthStatusService, "checkAuthStatus")
|
|
181
|
-
.mockResolvedValue({
|
|
184
|
+
.mockResolvedValue(new OnlineSessionEntity({ is_authenticated: true, is_mfa_authenticated: true }));
|
|
182
185
|
jest.spyOn(WorkerService, "get").mockRejectedValue(error);
|
|
183
186
|
|
|
184
187
|
await controller.execute();
|
|
@@ -23,10 +23,11 @@ class GetLocaleController {
|
|
|
23
23
|
* GetLocaleController constructor.
|
|
24
24
|
* @param {Worker} worker
|
|
25
25
|
* @param {ApiClientOptions} apiClientOptions The api client options.
|
|
26
|
+
* @param {AccountEntity} [account] The account, used to read the organization locale from the site settings.
|
|
26
27
|
*/
|
|
27
|
-
constructor(worker, apiClientOptions) {
|
|
28
|
+
constructor(worker, apiClientOptions, account) {
|
|
28
29
|
this.worker = worker;
|
|
29
|
-
this.localeModel = new LocaleModel(apiClientOptions);
|
|
30
|
+
this.localeModel = new LocaleModel(apiClientOptions, account);
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
/**
|
package/src/all/background_page/controller/metadata/findMetadataTypesSettingsController.test.js
CHANGED
|
@@ -22,7 +22,9 @@ import {
|
|
|
22
22
|
} from "passbolt-styleguide/src/shared/models/entity/metadata/metadataTypesSettingsEntity.test.data";
|
|
23
23
|
import MetadataTypesSettingsEntity from "passbolt-styleguide/src/shared/models/entity/metadata/metadataTypesSettingsEntity";
|
|
24
24
|
import { enableFetchMocks } from "jest-fetch-mock";
|
|
25
|
-
import {
|
|
25
|
+
import { defaultCeSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
26
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
27
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
26
28
|
|
|
27
29
|
beforeEach(() => {
|
|
28
30
|
enableFetchMocks();
|
|
@@ -46,7 +48,7 @@ describe("FindMetadataTypesSettingsController", () => {
|
|
|
46
48
|
expect.assertions(3);
|
|
47
49
|
|
|
48
50
|
const metadataTypesSettingsDto = defaultMetadataTypesSettingsV50FreshDto();
|
|
49
|
-
const siteSettingsDto =
|
|
51
|
+
const siteSettingsDto = defaultCeSiteSettings();
|
|
50
52
|
jest
|
|
51
53
|
.spyOn(
|
|
52
54
|
controller.findAndUpdateMetadataSettingsLocalStorageService.findMetadataSettingsService,
|
|
@@ -54,12 +56,8 @@ describe("FindMetadataTypesSettingsController", () => {
|
|
|
54
56
|
)
|
|
55
57
|
.mockImplementationOnce(() => new MetadataTypesSettingsEntity(metadataTypesSettingsDto));
|
|
56
58
|
jest
|
|
57
|
-
.spyOn(
|
|
58
|
-
|
|
59
|
-
.organizationSettingsService,
|
|
60
|
-
"find",
|
|
61
|
-
)
|
|
62
|
-
.mockImplementation(() => siteSettingsDto);
|
|
59
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
60
|
+
.mockImplementation(() => new SiteSettingsEntity(siteSettingsDto));
|
|
63
61
|
|
|
64
62
|
const metadataTypesSettings = await controller.exec();
|
|
65
63
|
|
|
@@ -73,16 +71,12 @@ describe("FindMetadataTypesSettingsController", () => {
|
|
|
73
71
|
it("get or find metadata types settings for a v4.", async () => {
|
|
74
72
|
expect.assertions(3);
|
|
75
73
|
|
|
76
|
-
const siteSettingsDto =
|
|
74
|
+
const siteSettingsDto = defaultCeSiteSettings();
|
|
77
75
|
// disable the plugin metadata.
|
|
78
76
|
delete siteSettingsDto.passbolt.plugins.metadata;
|
|
79
77
|
jest
|
|
80
|
-
.spyOn(
|
|
81
|
-
|
|
82
|
-
.organizationSettingsService,
|
|
83
|
-
"find",
|
|
84
|
-
)
|
|
85
|
-
.mockImplementation(() => siteSettingsDto);
|
|
78
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
79
|
+
.mockImplementation(() => new SiteSettingsEntity(siteSettingsDto));
|
|
86
80
|
|
|
87
81
|
const metadataTypesSettings = await controller.exec();
|
|
88
82
|
|
package/src/all/background_page/controller/metadata/getMetadataTypesSettingsController.test.js
CHANGED
|
@@ -22,7 +22,9 @@ import {
|
|
|
22
22
|
} from "passbolt-styleguide/src/shared/models/entity/metadata/metadataTypesSettingsEntity.test.data";
|
|
23
23
|
import MetadataTypesSettingsEntity from "passbolt-styleguide/src/shared/models/entity/metadata/metadataTypesSettingsEntity";
|
|
24
24
|
import { enableFetchMocks } from "jest-fetch-mock";
|
|
25
|
-
import {
|
|
25
|
+
import { defaultCeSiteSettings } from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity.test.data";
|
|
26
|
+
import GetOrFindSiteSettingsService from "../../service/siteSettings/getOrFindSiteSettingsService";
|
|
27
|
+
import SiteSettingsEntity from "passbolt-styleguide/src/shared/models/entity/siteSettings/siteSettingsEntity";
|
|
26
28
|
|
|
27
29
|
beforeEach(() => {
|
|
28
30
|
enableFetchMocks();
|
|
@@ -46,7 +48,7 @@ describe("GetResourceTypesController", () => {
|
|
|
46
48
|
expect.assertions(3);
|
|
47
49
|
|
|
48
50
|
const metadataTypesSettingsDto = defaultMetadataTypesSettingsV50FreshDto();
|
|
49
|
-
const siteSettingsDto =
|
|
51
|
+
const siteSettingsDto = defaultCeSiteSettings();
|
|
50
52
|
jest
|
|
51
53
|
.spyOn(
|
|
52
54
|
controller.getOrFindMetadaSettingsService.findAndUpdateMetadataSettingsLocalStorageService
|
|
@@ -55,12 +57,8 @@ describe("GetResourceTypesController", () => {
|
|
|
55
57
|
)
|
|
56
58
|
.mockImplementationOnce(() => new MetadataTypesSettingsEntity(metadataTypesSettingsDto));
|
|
57
59
|
jest
|
|
58
|
-
.spyOn(
|
|
59
|
-
|
|
60
|
-
.organisationSettingsModel.organizationSettingsService,
|
|
61
|
-
"find",
|
|
62
|
-
)
|
|
63
|
-
.mockImplementation(() => siteSettingsDto);
|
|
60
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
61
|
+
.mockImplementation(() => new SiteSettingsEntity(siteSettingsDto));
|
|
64
62
|
|
|
65
63
|
const metadataTypesSettings = await controller.exec();
|
|
66
64
|
|
|
@@ -73,16 +71,12 @@ describe("GetResourceTypesController", () => {
|
|
|
73
71
|
it("get or find metadata types settings for a v4.", async () => {
|
|
74
72
|
expect.assertions(3);
|
|
75
73
|
|
|
76
|
-
const siteSettingsDto =
|
|
74
|
+
const siteSettingsDto = defaultCeSiteSettings();
|
|
77
75
|
// disable the plugin metadata.
|
|
78
76
|
delete siteSettingsDto.passbolt.plugins.metadata;
|
|
79
77
|
jest
|
|
80
|
-
.spyOn(
|
|
81
|
-
|
|
82
|
-
.organisationSettingsModel.organizationSettingsService,
|
|
83
|
-
"find",
|
|
84
|
-
)
|
|
85
|
-
.mockImplementation(() => siteSettingsDto);
|
|
78
|
+
.spyOn(GetOrFindSiteSettingsService.prototype, "getOrFind")
|
|
79
|
+
.mockImplementation(() => new SiteSettingsEntity(siteSettingsDto));
|
|
86
80
|
|
|
87
81
|
const metadataTypesSettings = await controller.exec();
|
|
88
82
|
|