passbolt-styleguide 3.8.4 → 3.9.0-alpha2
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/build/css/help.min.css +3 -3
- package/build/css/public.min.css +3 -3
- package/build/css/themes/default/api_authentication.min.css +3 -3
- package/build/css/themes/default/api_cloud.min.css +3 -3
- package/build/css/themes/default/api_main.min.css +3 -3
- package/build/css/themes/default/api_reports.min.css +3 -3
- package/build/css/themes/default/api_webinstaller.min.css +3 -3
- package/build/css/themes/default/ext_app.min.css +3 -3
- package/build/css/themes/default/ext_authentication.min.css +3 -3
- package/build/css/themes/default/ext_external.min.css +2 -2
- package/build/css/themes/default/ext_in_form_cta.min.css +3 -3
- package/build/css/themes/default/ext_in_form_menu.min.css +3 -3
- package/build/css/themes/default/ext_quickaccess.min.css +3 -3
- package/build/css/themes/midgar/api_authentication.min.css +3 -3
- package/build/css/themes/midgar/api_main.min.css +3 -3
- package/build/css/themes/midgar/api_reports.min.css +3 -3
- package/build/css/themes/midgar/ext_app.min.css +3 -3
- package/build/css/themes/midgar/ext_authentication.min.css +3 -3
- package/build/css/themes/midgar/ext_in_form_cta.min.css +3 -3
- package/build/css/themes/midgar/ext_in_form_menu.min.css +3 -3
- package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
- package/build/css/themes/solarized_dark/api_authentication.min.css +1 -1
- package/build/css/themes/solarized_dark/api_main.min.css +1 -1
- package/build/css/themes/solarized_dark/api_reports.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_app.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_authentication.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_in_form_cta.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_in_form_menu.min.css +1 -1
- package/build/css/themes/solarized_dark/ext_quickaccess.min.css +1 -1
- package/build/css/themes/solarized_light/api_authentication.min.css +1 -1
- package/build/css/themes/solarized_light/api_main.min.css +1 -1
- package/build/css/themes/solarized_light/api_reports.min.css +1 -1
- package/build/css/themes/solarized_light/ext_app.min.css +1 -1
- package/build/css/themes/solarized_light/ext_authentication.min.css +1 -1
- package/build/css/themes/solarized_light/ext_in_form_cta.min.css +1 -1
- package/build/css/themes/solarized_light/ext_in_form_menu.min.css +1 -1
- package/build/css/themes/solarized_light/ext_quickaccess.min.css +1 -1
- package/build/js/dist/api-account-recovery.js +1 -1
- package/build/js/dist/api-app.js +1 -1
- package/build/js/dist/api-app.js.LICENSE.txt +75 -5
- package/build/js/dist/api-feedback.js +2 -0
- package/build/js/dist/api-feedback.js.LICENSE.txt +45 -0
- package/build/js/dist/api-recover.js +1 -1
- package/build/js/dist/api-setup.js +1 -1
- package/build/js/dist/api-triage.js +1 -1
- package/build/js/dist/api-vendors.js +1 -1
- package/build/js/dist/api-vendors.js.LICENSE.txt +19 -9
- package/build/js/dist/src/locales/de-DE/common.json +995 -0
- package/build/js/dist/src/locales/en-UK/common.json +1061 -0
- package/build/js/dist/src/locales/es-ES/common.json +995 -0
- package/build/js/dist/src/locales/fr-FR/common.json +995 -0
- package/build/js/dist/src/locales/ja-JP/common.json +980 -0
- package/build/js/dist/src/locales/lt-LT/common.json +1025 -0
- package/build/js/dist/src/locales/nl-NL/common.json +995 -0
- package/build/js/dist/src/locales/pl-PL/common.json +1025 -0
- package/build/js/dist/src/locales/sv-SE/common.json +995 -0
- package/package.json +18 -1
- package/src/img/controls/attention.svg +1 -0
- package/src/locales/en-UK/common.json +80 -16
- package/src/react-extension/ApiApp.js +17 -5
- package/src/react-extension/ApiFeedback.entry.js +24 -0
- package/src/react-extension/ExtApp.js +12 -5
- package/src/react-extension/ExtAuthenticationLogin.js +17 -15
- package/src/react-extension/ExtAuthenticationLogin.test.stories.js +59 -0
- package/src/react-extension/ExtBootstrapApp.js +1 -0
- package/src/react-extension/components/Administration/AdministrationWorkspace.js +24 -0
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.data.js +3 -3
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.js +13 -1
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.page.js +7 -0
- package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.js +101 -0
- package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.test.data.js +23 -0
- package/src/react-extension/components/Administration/ConfirmDeleteSsoSettingsDialog/ConfirmDeleteSsoSettingsDialog.test.stories.js +27 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.js +1 -1
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +78 -2
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.data.js +3 -1
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.js +60 -0
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.page.js +23 -4
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationInternationalisationActions/DisplayAdministrationInternationalisationActions.js +125 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationMfaActions/DisplayAdministrationMfaActions.js +131 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSelfRegistrationActions/DisplayAdministrationSelfRegistrationActions.js +103 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSsoActions/DisplayAdministrationSsoActions.js +91 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationSubscriptionActions/DisplayAdministrationSubscriptionActions.js +85 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationUserDirectoryActions/DisplayAdministrationUserDirectoryActions.js +228 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +4 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +9 -0
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +3 -3
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.data.js +14 -0
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.page.js +0 -17
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.js +18 -115
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.data.js +11 -13
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.js +38 -43
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.page.js +47 -10
- package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.stories.js +10 -43
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.js +82 -367
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.data.js +128 -42
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.js +75 -121
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.page.js +46 -16
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +18 -14
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.js +103 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.js +53 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.page.js +81 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings.test.stories.js +34 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.js +125 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.data.js +63 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.js +54 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.page.js +88 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings.test.stories.js +35 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.js +381 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.data.js +69 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.js +332 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.page.js +247 -0
- package/src/react-extension/components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.stories.js +72 -0
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +19 -19
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.data.js +1717 -1729
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +11 -3
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.page.js +4 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +11 -1784
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +41 -140
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +15 -3
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +22 -49
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.page.js +19 -11
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.stories.js +9 -3
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +5 -6
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.data.js +1717 -1728
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +11 -3
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.page.js +4 -1
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.stories.js +11 -1784
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +362 -835
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.data.js +427 -418
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.js +134 -175
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.page.js +108 -11
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +17 -25
- package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +4 -2
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +3 -3
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.js +1 -1
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.js +32 -7
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.data.js +0 -3
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.js +145 -1
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.page.js +52 -1
- package/src/react-extension/components/Administration/ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings.test.stories.js +15 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.js +340 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.data.js +56 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.js +223 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.page.js +235 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/ManageSsoSettings.test.stories.js +55 -0
- package/src/react-extension/components/Administration/ManageSsoSettings/SsoProviders.data.js +34 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.js +12 -3
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.test.js +27 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.page.js +8 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.js +197 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.data.js +37 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.js +187 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.page.js +120 -0
- package/src/react-extension/components/Administration/TestSsoSettingsDialog/TestSsoSettingsDialog.test.stories.js +31 -0
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +9 -5
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.data.js +4 -0
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.js +11 -42
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.page.js +1 -0
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +9 -5
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.data.js +4 -0
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.js +16 -2
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.page.js +17 -1
- package/src/react-extension/components/AuthenticationLogin/Login/Login.js +159 -61
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.data.js +14 -11
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.js +79 -0
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.page.js +16 -0
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain.js +2 -0
- package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +4 -0
- package/src/react-extension/components/Common/Error/ApiError/ApiError.js +119 -0
- package/src/react-extension/components/Common/Error/ApiError/ApiError.test.js +43 -0
- package/src/react-extension/components/Common/Error/ApiError/ApiError.test.page.js +108 -0
- package/src/react-extension/components/Common/Error/ApiError/ApiError.test.stories.js +39 -0
- package/src/react-extension/components/Common/Inputs/Autocomplete/Autocomplete.test.js +12 -0
- package/src/react-extension/components/Common/Inputs/Autocomplete/AutocompleteItem.js +2 -2
- package/src/react-extension/components/Common/Legacy/HandleLegacyAppjs.js +1 -1
- package/src/react-extension/components/Common/Navigation/Header/Logo.js +13 -1
- package/src/react-extension/components/Resource/CreateResource/CreateResource.js +103 -30
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.js +44 -10
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.page.js +35 -7
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +3 -3
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesListContextualMenu.js +6 -5
- package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.js +5 -4
- package/src/react-extension/components/Resource/EditResource/EditResource.js +95 -23
- package/src/react-extension/components/Resource/EditResource/EditResource.test.js +45 -13
- package/src/react-extension/components/Resource/EditResource/EditResource.test.page.js +35 -2
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetails.js +2 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.js +3 -2
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +23 -2
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.js +8 -0
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.page.js +26 -2
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +22 -1
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.js +8 -0
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.page.js +25 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetails.js +2 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.js +2 -1
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +14 -1
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.js +8 -0
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.page.js +12 -0
- package/src/react-extension/components/User/CreateUser/CreateUser.js +42 -3
- package/src/react-extension/components/User/CreateUser/CreateUser.test.js +16 -0
- package/src/react-extension/components/User/CreateUser/CreateUser.test.page.js +26 -0
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +2 -1
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.js +5 -5
- package/src/react-extension/components/User/EditUser/EditUser.js +29 -2
- package/src/react-extension/components/User/EditUser/EditUser.test.js +12 -0
- package/src/react-extension/components/User/EditUser/EditUser.test.page.js +26 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.js +2 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.test.data.js +1332 -1331
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.js +2 -1
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +19 -1
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.js +9 -0
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.page.js +12 -0
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.js +2 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +16 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.js +8 -0
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.page.js +26 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +6 -4
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +4 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +21 -11
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.page.js +10 -1
- package/src/react-extension/contexts/AdminSmtpSettingsContext.js +2 -0
- package/src/react-extension/contexts/AdminSmtpSettingsContext.test.data.js +13 -0
- package/src/react-extension/contexts/AdminSmtpSettingsContext.test.js +3 -1
- package/src/react-extension/contexts/AdminSsoContext.js +558 -0
- package/src/react-extension/contexts/AdminSsoContext.test.data.js +51 -0
- package/src/react-extension/contexts/Administration/AdministrationInternationalizationContext/AdministrationInternationalizationContext.js +194 -0
- package/src/react-extension/contexts/Administration/AdministrationInternationalizationContext/AdministrationInternationalizationContext.test.js +111 -0
- package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.js +265 -0
- package/src/react-extension/contexts/Administration/AdministrationMfa/AdministrationMfaContext.test.js +178 -0
- package/src/react-extension/contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext.js +453 -0
- package/src/react-extension/contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext.test.js +218 -0
- package/src/react-extension/contexts/Administration/AdministrationSubscription/AdministrationSubscription.js +168 -0
- package/src/react-extension/contexts/Administration/AdministrationSubscription/AdministrationSubscription.test.js +73 -0
- package/src/react-extension/contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext.js +353 -0
- package/src/react-extension/contexts/Administration/AdministrationUserDirectory/AdministrationUserDirectoryContext.test.js +220 -0
- package/src/react-extension/contexts/AdministrationWorkspaceContext.js +17 -178
- package/src/react-extension/contexts/AdministrationWorkspaceContext.test.js +0 -26
- package/src/react-extension/contexts/ApiAppContext.test.data.js +4 -2
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.js +54 -4
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.data.js +10 -1
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.js +92 -14
- package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.js +1 -0
- package/src/react-extension/contexts/NavigationContext.js +34 -0
- package/src/react-extension/contexts/SsoContext.js +151 -0
- package/src/react-extension/contexts/SsoContext.test.data.js +36 -0
- package/src/react-extension/contexts/SsoContext.test.js +104 -0
- package/src/react-extension/lib/Domain/DomainUtil.js +70 -0
- package/src/react-extension/lib/Domain/DomainUtil.test.js +129 -0
- package/src/react-extension/lib/Domain/Domains.js +6113 -0
- package/src/react-extension/lib/Error/InputValidator.js +24 -0
- package/src/react-extension/lib/Map/DynamicRef.js +49 -0
- package/src/react-extension/lib/Map/DynamicRef.test.js +56 -0
- package/src/react-extension/lib/Map/MapObject.js +48 -0
- package/src/react-extension/lib/Map/MapObject.test.js +43 -0
- package/src/react-quickaccess/ExtQuickAccess.js +7 -4
- package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.js +3 -1
- package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.data.js +4 -0
- package/src/react-quickaccess/components/LoginPage/LoginPage.js +115 -4
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.data.js +10 -0
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +30 -3
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +33 -1
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +25 -0
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.js +60 -0
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.page.js +60 -0
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +33 -1
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +36 -7
- package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.js +3 -2
- package/src/react-quickaccess/contexts/SsoContext.js +150 -0
- package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +5 -0
- package/src/shared/constants/inputs.const.js +30 -0
- package/src/shared/lib/Browser/clipBoard.js +45 -0
- package/src/shared/lib/Browser/clipBoard.test.js +59 -0
- package/src/shared/models/Mfa/Duo.js +36 -0
- package/src/shared/models/Mfa/Duo.test.js +59 -0
- package/src/shared/models/Mfa/MfaDTO.js +51 -0
- package/src/shared/models/Mfa/MfaDTO.test.js +48 -0
- package/src/shared/models/Mfa/MfaEnumeration.js +17 -0
- package/src/shared/models/Mfa/MfaModel.js +48 -0
- package/src/shared/models/Mfa/MfaModel.test.js +37 -0
- package/src/shared/models/Mfa/Yubikey.js +35 -0
- package/src/shared/models/Mfa/Yubikey.test.js +47 -0
- package/src/shared/models/selfRegistration/SelfRegistrationDomainsViewModel.js +55 -0
- package/src/shared/models/selfRegistration/SelfRegistrationDomainsViewModel.test.js +37 -0
- package/src/shared/models/selfRegistration/SelfRegistrationDto.js +42 -0
- package/src/shared/models/selfRegistration/SelfRegistrationDto.test.js +48 -0
- package/src/shared/models/selfRegistration/SelfRegistrationEnumeration.js +17 -0
- package/src/shared/models/subscription/SubscriptionDto.js +34 -0
- package/src/shared/models/subscription/SubscriptionDto.test.js +31 -0
- package/src/shared/models/subscription/SubscriptionModel.js +33 -0
- package/src/shared/models/subscription/SubscriptionModel.test.js +48 -0
- package/src/shared/models/user/UserModel.js +37 -0
- package/src/shared/models/userDirectory/UserDirectoryDTO.js +57 -0
- package/src/shared/models/userDirectory/UserDirectoryDTO.test.js +40 -0
- package/src/shared/models/userDirectory/UserDirectoryEnum.js +22 -0
- package/src/shared/models/userDirectory/UserDirectoryModel.js +64 -0
- package/src/shared/models/userDirectory/UserDirectoryModel.test.js +37 -0
- package/src/shared/services/actions/subscription/SubscriptionActionService.js +69 -0
- package/src/shared/services/actions/subscription/SubscriptionActionService.test.js +73 -0
- package/src/shared/services/api/Internationalisation/InternationalisationService.js +46 -0
- package/src/shared/services/api/Mfa/MfaService.js +54 -0
- package/src/shared/services/{accountRecovery → api/accountRecovery}/ApiAppAccountRecoveryUserService.js +2 -2
- package/src/shared/services/{accountRecovery → api/accountRecovery}/ExtAppAccountRecoveryUserService.js +0 -0
- package/src/shared/services/api/secrets/pownedService.js +64 -0
- package/src/shared/services/api/secrets/pownedService.test.js +63 -0
- package/src/shared/services/api/selfRegistration/selfRegistrationService.js +64 -0
- package/src/shared/services/api/user/UserService.js +45 -0
- package/src/shared/services/api/userDirectory/UserDirectoryService.js +108 -0
- package/src/shared/services/forms/Mfa/MfaFormService.js +195 -0
- package/src/shared/services/forms/Mfa/MfaFormService.test.js +341 -0
- package/src/shared/services/forms/selfRegistration/SelfRegistrationFormService.js +92 -0
- package/src/shared/services/forms/selfRegistration/SelfRegistrationFormService.test.js +101 -0
- package/src/shared/services/forms/userDirectory/UserDirectoryFormService.js +118 -0
- package/src/shared/services/forms/userDirectory/UserDirectoryFormService.test.js +128 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.js +0 -205
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.data.js +0 -37
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.js +0 -197
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.test.page.js +0 -133
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) 2022 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) 2022 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 3.8.3
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {mockApiResponse} from '../../../../../test/mocks/mockApiResponse';
|
|
16
|
+
import {defaultProps, mockResult} from '../../../components/Administration/DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration.test.data';
|
|
17
|
+
import {enableFetchMocks} from 'jest-fetch-mock';
|
|
18
|
+
import SelfRegistrationDomainsViewModel from '../../../../shared/models/selfRegistration/SelfRegistrationDomainsViewModel';
|
|
19
|
+
import {AdminSelfRegistrationContextProvider} from "../../../contexts/Administration/AdministrationSelfRegistration/AdministrationSelfRegistrationContext";
|
|
20
|
+
import MapObject from '../../../lib/Map/MapObject';
|
|
21
|
+
import SelfRegistrationDto from '../../../../shared/models/selfRegistration/SelfRegistrationDto';
|
|
22
|
+
import ConfirmSaveSelfRegistrationSettings from '../../../components/Administration/DisplaySelfRegistrationAdministration/ConfirmSaveSelfRegistrationSettings/ConfirmSaveSelfRegistrationSettings';
|
|
23
|
+
import ConfirmDeletionSelfRegistrationSettings from '../../../components/Administration/DisplaySelfRegistrationAdministration/ConfirmDeletionSelfRegistrationSettings/ConfirmDeletionSelfRegistrationSettings';
|
|
24
|
+
import NotifyError from '../../../components/Common/Error/NotifyError/NotifyError';
|
|
25
|
+
import PassboltServiceUnavailableError from '../../../../shared/lib/Error/PassboltServiceUnavailableError';
|
|
26
|
+
|
|
27
|
+
describe("AdministrationSelfRegistrationContext", () => {
|
|
28
|
+
let adminSelfRegistrationContext; // The adminSelfRegistrationContext to test
|
|
29
|
+
const props = defaultProps(); // The props to pass
|
|
30
|
+
|
|
31
|
+
const mockApiCalls = () => {
|
|
32
|
+
fetch.doMockOnceIf(/self-registration\/settings*/, () => mockApiResponse(mockResult()));
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
//Initialize context by default
|
|
36
|
+
const initContext = async() => {
|
|
37
|
+
mockApiCalls();
|
|
38
|
+
await adminSelfRegistrationContext.findSettings();
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
beforeEach(() => {
|
|
42
|
+
jest.resetAllMocks();
|
|
43
|
+
adminSelfRegistrationContext = new AdminSelfRegistrationContextProvider(props);
|
|
44
|
+
mockState(adminSelfRegistrationContext);
|
|
45
|
+
enableFetchMocks();
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
describe("AdministrationSelfRegistrationContext::findSettings", () => {
|
|
49
|
+
it("should get the current settings and store it in its state", async() => {
|
|
50
|
+
expect.assertions(3);
|
|
51
|
+
|
|
52
|
+
// Mock the call to API
|
|
53
|
+
mockApiCalls();
|
|
54
|
+
const expectedResult = new SelfRegistrationDomainsViewModel(mockResult());
|
|
55
|
+
await adminSelfRegistrationContext.findSettings();
|
|
56
|
+
const domains = adminSelfRegistrationContext.getAllowedDomains();
|
|
57
|
+
expect(domains.values()).toEqual(expectedResult.allowedDomains.values());
|
|
58
|
+
expect(adminSelfRegistrationContext.getCurrentSettings()).toEqual(mockResult());
|
|
59
|
+
expect(adminSelfRegistrationContext.isProcessing()).toBeFalsy();
|
|
60
|
+
});
|
|
61
|
+
it("should set processing to true when loading settings", async() => {
|
|
62
|
+
expect.assertions(1);
|
|
63
|
+
|
|
64
|
+
adminSelfRegistrationContext.setProcessing(false);
|
|
65
|
+
try {
|
|
66
|
+
await adminSelfRegistrationContext.findSettings();
|
|
67
|
+
} catch {
|
|
68
|
+
expect(adminSelfRegistrationContext.isProcessing()).toBeTruthy();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
describe("AdministrationSelfRegistrationContext::hasSettingsChanges", () => {
|
|
74
|
+
let keys = null;
|
|
75
|
+
|
|
76
|
+
beforeEach(async() => {
|
|
77
|
+
await initContext();
|
|
78
|
+
keys = MapObject.iterators(adminSelfRegistrationContext.getAllowedDomains());
|
|
79
|
+
});
|
|
80
|
+
it("should return true if settings is different then current setting", () => {
|
|
81
|
+
expect.assertions(1);
|
|
82
|
+
|
|
83
|
+
const domains = MapObject.clone(adminSelfRegistrationContext.getAllowedDomains());
|
|
84
|
+
domains.set(keys[0], "passbot.com");
|
|
85
|
+
adminSelfRegistrationContext.setDomains({allowedDomains: domains});
|
|
86
|
+
|
|
87
|
+
expect(adminSelfRegistrationContext.hasSettingsChanges()).toBeTruthy();
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it("should return false if settings is different then current setting", () => {
|
|
91
|
+
expect.assertions(1);
|
|
92
|
+
const [firstValue] = adminSelfRegistrationContext.getAllowedDomains().values();
|
|
93
|
+
|
|
94
|
+
const domains = MapObject.clone(adminSelfRegistrationContext.getAllowedDomains());
|
|
95
|
+
domains.set(keys[0], "passbot.com");
|
|
96
|
+
adminSelfRegistrationContext.setDomains({allowedDomains: domains});
|
|
97
|
+
domains.set(keys[0], firstValue);
|
|
98
|
+
adminSelfRegistrationContext.setDomains({allowedDomains: domains});
|
|
99
|
+
|
|
100
|
+
expect(adminSelfRegistrationContext.hasSettingsChanges()).toBeFalsy();
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
describe("AdminUserDirectoryContext::clearContext", () => {
|
|
105
|
+
beforeEach(async() => {
|
|
106
|
+
await initContext();
|
|
107
|
+
});
|
|
108
|
+
it("should clear the context and set it by default", () => {
|
|
109
|
+
expect.assertions(3);
|
|
110
|
+
|
|
111
|
+
adminSelfRegistrationContext.setDomains({allowedDomains: {"test": "value"}});
|
|
112
|
+
adminSelfRegistrationContext.clearContext();
|
|
113
|
+
|
|
114
|
+
expect(adminSelfRegistrationContext.isProcessing()).toBeTruthy();
|
|
115
|
+
expect(adminSelfRegistrationContext.getCurrentSettings()).toBe(null);
|
|
116
|
+
expect(adminSelfRegistrationContext.getAllowedDomains()).toEqual(new Map());
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
describe("AdminUserDirectoryContext::save", () => {
|
|
121
|
+
beforeEach(async() => {
|
|
122
|
+
await initContext();
|
|
123
|
+
});
|
|
124
|
+
it("should display ConfirmSaveSelfRegistrationSettings if form is valid", async() => {
|
|
125
|
+
await adminSelfRegistrationContext.save();
|
|
126
|
+
|
|
127
|
+
expect.assertions(2);
|
|
128
|
+
|
|
129
|
+
expect(adminSelfRegistrationContext.isSubmitted).toBeTruthy();
|
|
130
|
+
expect(props.dialogContext.open).toHaveBeenCalledWith(ConfirmSaveSelfRegistrationSettings, expect.objectContaining({"domains": adminSelfRegistrationContext.getAllowedDomains()}));
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
it("should display ConfirmDeletionSelfRegistrationSettings if form is valid and domains are empty", async() => {
|
|
134
|
+
adminSelfRegistrationContext.setDomains({allowedDomains: new Map()});
|
|
135
|
+
await adminSelfRegistrationContext.save();
|
|
136
|
+
|
|
137
|
+
expect.assertions(2);
|
|
138
|
+
|
|
139
|
+
expect(adminSelfRegistrationContext.isSubmitted).toBeTruthy();
|
|
140
|
+
expect(props.dialogContext.open).toHaveBeenCalledWith(ConfirmDeletionSelfRegistrationSettings, expect.objectContaining({onClose: expect.any(Function), onSubmit: expect.any(Function)}));
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
describe("AdminUserDirectoryContext::saveSettings", () => {
|
|
145
|
+
beforeEach(async() => {
|
|
146
|
+
await initContext();
|
|
147
|
+
});
|
|
148
|
+
it("should save settings and display feedback", async() => {
|
|
149
|
+
fetch.doMockOnceIf(/self-registration\/settings*/, () => mockApiResponse({}));
|
|
150
|
+
jest.spyOn(adminSelfRegistrationContext, "findSettings").mockImplementation();
|
|
151
|
+
|
|
152
|
+
await adminSelfRegistrationContext.saveSettings();
|
|
153
|
+
|
|
154
|
+
expect.assertions(4);
|
|
155
|
+
|
|
156
|
+
//Save should set processing to false in any case
|
|
157
|
+
expect(adminSelfRegistrationContext.isProcessing()).toBeFalsy();
|
|
158
|
+
expect(adminSelfRegistrationContext.findSettings).toHaveBeenCalled();
|
|
159
|
+
expect(props.actionFeedbackContext.displaySuccess).toHaveBeenCalledWith("The self registration settings for the organization were updated.");
|
|
160
|
+
expect(JSON.parse(fetch.mock.calls[1][1].body)).toEqual(expect.objectContaining(new SelfRegistrationDto({allowedDomains: adminSelfRegistrationContext.getAllowedDomains()}, adminSelfRegistrationContext.getCurrentSettings())));
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it("should not save settings and display feedback when we have an error", async() => {
|
|
164
|
+
const error = {message: "The service is unavailable"};
|
|
165
|
+
|
|
166
|
+
fetch.doMockOnceIf(/self-registration\/settings*/, () => Promise.reject(error));
|
|
167
|
+
|
|
168
|
+
jest.spyOn(adminSelfRegistrationContext, "findSettings").mockImplementation();
|
|
169
|
+
|
|
170
|
+
await adminSelfRegistrationContext.saveSettings();
|
|
171
|
+
|
|
172
|
+
expect.assertions(4);
|
|
173
|
+
|
|
174
|
+
//Save should set processing to false in any case
|
|
175
|
+
expect(adminSelfRegistrationContext.isProcessing()).toBeFalsy();
|
|
176
|
+
expect(adminSelfRegistrationContext.findSettings).not.toHaveBeenCalled();
|
|
177
|
+
expect(props.dialogContext.open).toHaveBeenCalledWith(NotifyError, {"error": new PassboltServiceUnavailableError(error.message)});
|
|
178
|
+
expect(JSON.parse(fetch.mock.calls[1][1].body)).toEqual(expect.objectContaining(new SelfRegistrationDto({allowedDomains: adminSelfRegistrationContext.getAllowedDomains()}, adminSelfRegistrationContext.getCurrentSettings())));
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe("AdminMfaContext::errors", () => {
|
|
182
|
+
it("should update error object with targeted property", async() => {
|
|
183
|
+
expect.assertions(1);
|
|
184
|
+
await adminSelfRegistrationContext.setError("uuid1", "error");
|
|
185
|
+
|
|
186
|
+
expect(adminSelfRegistrationContext.getErrors().get("uuid1")).toBe("error");
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it("should init errors with default property", async() => {
|
|
190
|
+
expect.assertions(1);
|
|
191
|
+
expect(adminSelfRegistrationContext.getErrors()).toEqual(new Map());
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
describe("AdminMfaContext::setSubmitted", () => {
|
|
196
|
+
it("should set submit and focus", async() => {
|
|
197
|
+
expect.assertions(2);
|
|
198
|
+
await adminSelfRegistrationContext.setSubmitted(true);
|
|
199
|
+
|
|
200
|
+
expect(adminSelfRegistrationContext.isSubmitted()).toBeTruthy();
|
|
201
|
+
expect(adminSelfRegistrationContext.shouldFocus()).toBeTruthy();
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
function mockState(adminSelfRegistrationContext) {
|
|
208
|
+
const setStateMock = state => {
|
|
209
|
+
let newState;
|
|
210
|
+
if (typeof state === 'function') {
|
|
211
|
+
newState = state(adminSelfRegistrationContext.state);
|
|
212
|
+
} else {
|
|
213
|
+
newState = state;
|
|
214
|
+
}
|
|
215
|
+
adminSelfRegistrationContext.state = Object.assign(adminSelfRegistrationContext.state, newState);
|
|
216
|
+
};
|
|
217
|
+
jest.spyOn(adminSelfRegistrationContext, "setState").mockImplementation(setStateMock);
|
|
218
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) 2022 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) 2022 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 3.8.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import React from "react";
|
|
16
|
+
import PropTypes from "prop-types";
|
|
17
|
+
import {withAppContext} from "../../AppContext";
|
|
18
|
+
import SubscriptionModel from '../../../../shared/models/subscription/SubscriptionModel';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The Administration Subscription Context
|
|
22
|
+
* @type {React.Context<Object>}
|
|
23
|
+
*/
|
|
24
|
+
export const AdminSubscriptionContext = React.createContext({
|
|
25
|
+
getSubscription: () => {}, // Returns settings for UI changes
|
|
26
|
+
findSubscriptionKey: () => {}, // Find the subscription key
|
|
27
|
+
isProcessing: () => {}, // returns true if a process is running and the UI must be disabled
|
|
28
|
+
setProcessing: () => {}, // Set processing state
|
|
29
|
+
getActiveUsers: () => {}, //get active users numbers
|
|
30
|
+
clearContext: () => {}, // put the data to its default state value
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The Administration Subscription context provider
|
|
35
|
+
*/
|
|
36
|
+
export class AdminSubscriptionContextProvider extends React.Component {
|
|
37
|
+
/**
|
|
38
|
+
* Default constructor
|
|
39
|
+
* @param props The component props
|
|
40
|
+
*/
|
|
41
|
+
constructor(props) {
|
|
42
|
+
super(props);
|
|
43
|
+
this.state = this.defaultState;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Returns the default component state
|
|
48
|
+
*/
|
|
49
|
+
get defaultState() {
|
|
50
|
+
return {
|
|
51
|
+
subscription: new SubscriptionModel(), // Change done to the subscription object
|
|
52
|
+
processing: true, // Context is processing data
|
|
53
|
+
getSubscription: this.getSubscription.bind(this), // Returns settings for UI changes
|
|
54
|
+
findSubscriptionKey: this.findSubscriptionKey.bind(this), // Find the subscription key
|
|
55
|
+
isProcessing: this.isProcessing.bind(this), // returns true if a process is running and the UI must be disabled
|
|
56
|
+
setProcessing: this.setProcessing.bind(this), // Set processing state
|
|
57
|
+
getActiveUsers: this.getActiveUsers.bind(this), //get active users numbers
|
|
58
|
+
clearContext: this.clearContext.bind(this), // put the data to its default state value
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Find the subscription key
|
|
64
|
+
* @return {Promise<void>}
|
|
65
|
+
*/
|
|
66
|
+
async findSubscriptionKey() {
|
|
67
|
+
this.setProcessing(true);
|
|
68
|
+
let subscription = new SubscriptionModel();
|
|
69
|
+
try {
|
|
70
|
+
const result = await this.props.context.onGetSubscriptionKeyRequested();
|
|
71
|
+
subscription = new SubscriptionModel(result);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
if (error.name === "PassboltSubscriptionError") {
|
|
74
|
+
subscription = new SubscriptionModel(error.subscription);
|
|
75
|
+
}
|
|
76
|
+
} finally {
|
|
77
|
+
//Init subscription which will interact with UI
|
|
78
|
+
this.setState({subscription});
|
|
79
|
+
this.setProcessing(false);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Get active users
|
|
85
|
+
* @returns {*}
|
|
86
|
+
* @constructor
|
|
87
|
+
*/
|
|
88
|
+
async getActiveUsers() {
|
|
89
|
+
const users = await this.props.context.port.request("passbolt.users.get-all");
|
|
90
|
+
const filterActiveUsers = user => user.active;
|
|
91
|
+
return users.filter(filterActiveUsers).length;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Returns the subscription that have been fetch previously.
|
|
96
|
+
* @returns {object}
|
|
97
|
+
*/
|
|
98
|
+
getSubscription() {
|
|
99
|
+
return this.state.subscription;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Returns true when the data is under processing
|
|
104
|
+
* @returns {boolean}
|
|
105
|
+
*
|
|
106
|
+
*/
|
|
107
|
+
isProcessing() {
|
|
108
|
+
return this.state.processing;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Handle processing change.
|
|
113
|
+
* @params {Boolean} processing value
|
|
114
|
+
* @returns {void}
|
|
115
|
+
*/
|
|
116
|
+
setProcessing(processing) {
|
|
117
|
+
this.setState({processing});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Puts the state to its default in order to avoid keeping the data users didn't want to save.
|
|
122
|
+
*/
|
|
123
|
+
clearContext() {
|
|
124
|
+
const {subscription, processing} = this.defaultState;
|
|
125
|
+
this.setState({
|
|
126
|
+
subscription, processing
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Render the component
|
|
132
|
+
* @returns {JSX}
|
|
133
|
+
*/
|
|
134
|
+
render() {
|
|
135
|
+
return (
|
|
136
|
+
<AdminSubscriptionContext.Provider value={this.state}>
|
|
137
|
+
{this.props.children}
|
|
138
|
+
</AdminSubscriptionContext.Provider>
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
AdminSubscriptionContextProvider.propTypes = {
|
|
144
|
+
context: PropTypes.any, // The application context
|
|
145
|
+
children: PropTypes.any, // The children components
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
export default withAppContext(AdminSubscriptionContextProvider);
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Resource Workspace Context Consumer HOC
|
|
153
|
+
* @param WrappedComponent
|
|
154
|
+
*/
|
|
155
|
+
export function withAdminSubscription(WrappedComponent) {
|
|
156
|
+
return class WithAdminSubscription extends React.Component {
|
|
157
|
+
render() {
|
|
158
|
+
return (
|
|
159
|
+
<AdminSubscriptionContext.Consumer>
|
|
160
|
+
{
|
|
161
|
+
adminSubcriptionContext => <WrappedComponent adminSubcriptionContext={adminSubcriptionContext} {...this.props} />
|
|
162
|
+
}
|
|
163
|
+
</AdminSubscriptionContext.Consumer>
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) 2022 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) 2022 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 3.8.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {defaultProps, mockSubscriptionModel} from "../../../../react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data";
|
|
16
|
+
import {AdminSubscriptionContextProvider} from "./AdministrationSubscription";
|
|
17
|
+
import PassboltSubscriptionError from '../../../lib/Error/PassboltSubscriptionError';
|
|
18
|
+
|
|
19
|
+
describe("AdminSubscriptionContext", () => {
|
|
20
|
+
let adminSubscribeContext; // The adminSubscribeContext to test
|
|
21
|
+
const props = defaultProps(); // The props to pass
|
|
22
|
+
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
jest.resetAllMocks();
|
|
25
|
+
adminSubscribeContext = new AdminSubscriptionContextProvider(Object.assign({}, props));
|
|
26
|
+
const setStateMock = state => adminSubscribeContext.state = Object.assign(adminSubscribeContext.state, state);
|
|
27
|
+
jest.spyOn(adminSubscribeContext, "setState").mockImplementation(setStateMock);
|
|
28
|
+
});
|
|
29
|
+
describe("AdminSubscriptionContext::findSubscriptionKey", () => {
|
|
30
|
+
it("should get the current subscription and store it in its state", async() => {
|
|
31
|
+
await adminSubscribeContext.findSubscriptionKey();
|
|
32
|
+
|
|
33
|
+
expect.assertions(2);
|
|
34
|
+
|
|
35
|
+
expect(adminSubscribeContext.getSubscription()).toEqual(mockSubscriptionModel);
|
|
36
|
+
expect(adminSubscribeContext.isProcessing()).toBeFalsy();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("should init subscription with error in case of PassboltSubscriptionError", async() => {
|
|
40
|
+
jest.spyOn(props.context, "onGetSubscriptionKeyRequested").mockImplementation(() => { throw new PassboltSubscriptionError("error", {}); });
|
|
41
|
+
await adminSubscribeContext.findSubscriptionKey();
|
|
42
|
+
|
|
43
|
+
expect.assertions(3);
|
|
44
|
+
const subscription = adminSubscribeContext.getSubscription();
|
|
45
|
+
expect(subscription.email).toEqual('N/A');
|
|
46
|
+
expect(subscription.subscriptionId).toEqual('N/A');
|
|
47
|
+
expect(adminSubscribeContext.isProcessing()).toBeFalsy();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("AdminSubscriptionContext::hasSettingsChanges", () => {
|
|
51
|
+
it("should return the number of active user", async() => {
|
|
52
|
+
const activeUsers = await adminSubscribeContext.getActiveUsers();
|
|
53
|
+
|
|
54
|
+
expect.assertions(1);
|
|
55
|
+
|
|
56
|
+
expect(activeUsers).toEqual(5);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe("AdminSubscriptionContext::clearContext", () => {
|
|
61
|
+
it("should clear the context and set it by default", async() => {
|
|
62
|
+
await adminSubscribeContext.findSubscriptionKey();
|
|
63
|
+
adminSubscribeContext.clearContext();
|
|
64
|
+
|
|
65
|
+
expect.assertions(2);
|
|
66
|
+
|
|
67
|
+
expect(adminSubscribeContext.isProcessing()).toBeTruthy();
|
|
68
|
+
expect(adminSubscribeContext.getSubscription().subscriptionId).toEqual("");
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
|