passbolt-styleguide 3.5.2 → 3.6.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 +4 -4
- 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 +4 -4
- package/build/css/themes/default/api_reports.min.css +4 -4
- package/build/css/themes/default/api_webinstaller.min.css +3 -3
- package/build/css/themes/default/ext_app.min.css +4 -4
- 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 +4 -4
- package/build/css/themes/midgar/api_reports.min.css +4 -4
- package/build/css/themes/midgar/ext_app.min.css +4 -4
- 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/js/dist/api-account-recovery.js +2 -0
- package/build/js/dist/api-account-recovery.js.LICENSE.txt +107 -0
- package/build/js/dist/api-app.js +1 -1
- package/build/js/dist/api-app.js.LICENSE.txt +73 -1
- 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 +159 -15
- package/jest.config.json +13 -0
- package/package.json +26 -21
- package/src/locales/en-UK/common.json +140 -4
- package/src/react-extension/ApiAccountRecovery.entry.js +25 -0
- package/src/react-extension/ApiAccountRecovery.js +233 -0
- package/src/react-extension/ApiApp.js +50 -43
- package/src/react-extension/ExtApp.js +129 -105
- package/src/react-extension/ExtAuthenticationAccountRecovery.js +173 -0
- package/src/react-extension/ExtAuthenticationLogin.js +35 -33
- package/src/react-extension/ExtAuthenticationRecover.js +23 -35
- package/src/react-extension/ExtAuthenticationSetup.js +24 -46
- package/src/react-extension/ExtBootstrapAccountRecovery.js +75 -0
- package/src/react-extension/ExtBootstrapApp.js +4 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.js +114 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.data.js +27 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.js +72 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.page.js +74 -0
- package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.stories.js +51 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.js +80 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.test.data.js +60 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.test.js +110 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryStatusCheck/HandleAccountRecoveryStatusCheck.test.page.js +40 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.js +96 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.test.data.js +63 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.test.js +88 -0
- package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.test.page.js +37 -0
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.js +214 -0
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.test.data.js +49 -0
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.test.js +98 -0
- package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.test.page.js +37 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.js +316 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.data.js +55 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.js +132 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.page.js +70 -0
- package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.stories.js +104 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.js +286 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.data.js +51 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.js +77 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.page.js +119 -0
- package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.stories.js +36 -0
- package/src/react-extension/components/Administration/AdministrationWorkspace.js +15 -2
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.data.js +5 -1
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.js +45 -0
- package/src/react-extension/components/Administration/AdministrationWorkspace.test.page.js +23 -3
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.js +254 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.data.js +153 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.js +109 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.page.js +174 -0
- package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.stories.js +43 -0
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +36 -0
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.data.js +2 -1
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.js +9 -0
- package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.page.js +12 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.js +138 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.test.data.js +46 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.test.js +51 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.test.page.js +93 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +2 -0
- package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +9 -0
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +105 -2
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.stories.js +104 -0
- package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +2 -4
- package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.test.js +10 -3
- package/src/react-extension/components/Administration/HandleSaveAccountRecoveryOrganizationPolicyWorkflow/HandleSaveAccountRecoveryOrganizationPolicyWorkflow.js +180 -0
- package/src/react-extension/components/Administration/HandleSaveAccountRecoveryOrganizationPolicyWorkflow/HandleSaveAccountRecoveryOrganizationPolicyWorkflow.test.data.js +47 -0
- package/src/react-extension/components/Administration/HandleSaveAccountRecoveryOrganizationPolicyWorkflow/HandleSaveAccountRecoveryOrganizationPolicyWorkflow.test.js +64 -0
- package/src/react-extension/components/Administration/HandleSaveAccountRecoveryOrganizationPolicyWorkflow/HandleSaveAccountRecoveryOrganizationPolicyWorkflow.test.page.js +35 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +435 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.data.js +186 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.js +100 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.page.js +159 -0
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.stories.js +64 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.js +535 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.data.js +31 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.js +155 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.page.js +124 -0
- package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.stories.js +41 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.js +108 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.test.js +48 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.test.page.js +82 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.test.stories.js +51 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.js +471 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.test.js +181 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/ImportOrganizationKey.js +289 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/ImportOrganizationKey.test.js +188 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.js +121 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.page.js +262 -0
- package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.stories.js +50 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.js +73 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.data.js +41 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.js +48 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.page.js +64 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.stories.js +40 -0
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.js +36 -0
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.test.js +37 -0
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.test.page.js +55 -0
- package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.test.stories.js +39 -0
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.js +3 -3
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.page.js +0 -1
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +33 -23
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.data.js +18 -30
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.js +110 -47
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.page.js +33 -10
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +36 -19
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.js +191 -0
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.data.js +90 -0
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.js +92 -0
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.page.js +109 -0
- package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.stories.js +60 -0
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.js +5 -29
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.data.js +17 -18
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.js +48 -25
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.page.js +16 -9
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +20 -16
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +40 -36
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.data.js +18 -14
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.js +189 -103
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.page.js +50 -11
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +31 -19
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.js +0 -9
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.js +1 -1
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/{DisplayBrowserNotSupportedPage.js → DisplayBrowserNotSupported.test.page.js} +2 -5
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.js +0 -9
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.data.js +36 -0
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.js +34 -0
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.page.js +49 -0
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +23 -15
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.js +0 -9
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.js +1 -1
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/{DisplayRequireInvitationErrorPage.js → DisplayRequireInvitationError.test.page.js} +0 -3
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.js +91 -10
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.data.js +56 -0
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.js +46 -0
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.page.js +79 -0
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +48 -15
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +12 -53
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.data.js +16 -16
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.js +10 -13
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.page.js +16 -6
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.data.js +17 -3
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.page.js +0 -1
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +21 -15
- package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.data.js +28 -11
- package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +21 -16
- package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.data.js +17 -3
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.js +56 -19
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.data.js +25 -17
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.js +204 -58
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.page.js +43 -7
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +31 -19
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +0 -9
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.data.js +17 -3
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +62 -18
- package/src/react-extension/components/Authentication/{IntroduceSetupExtension/IntroduceSetupExtension.js → IntroduceExtension/IntroduceExtension.js} +8 -19
- package/src/react-extension/components/Authentication/IntroduceExtension/IntroduceExtension.test.data.js +24 -0
- package/src/react-extension/components/Authentication/{IntroduceSetupExtension/IntroduceSetupExtension.test.js → IntroduceExtension/IntroduceExtension.test.js} +16 -6
- package/src/react-extension/components/Authentication/{IntroduceSetupExtension/IntroduceSetupExtension.test.page.js → IntroduceExtension/IntroduceExtension.test.page.js} +3 -4
- package/src/react-extension/components/Authentication/IntroduceExtension/IntroduceExtension.test.stories.js +39 -0
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.data.js +27 -9
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.js +2 -8
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.page.js +4 -9
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +23 -14
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.js +70 -0
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.data.js +25 -0
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.js +49 -0
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.page.js +74 -0
- package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.stories.js +40 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.js +41 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.data.js +36 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.js +35 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.page.js +50 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +41 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.js +42 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.test.js +43 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.test.page.js +62 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.test.stories.js +40 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/OrchestrateAccountRecovery/InsertAccountRecoveryIframe.js +64 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/OrchestrateAccountRecovery/OrchestrateAccountRecovery.js +84 -0
- package/src/react-extension/components/AuthenticationAccountRecovery/OrchestrateApiAccountRecovery/OrchestrateApiAccountRecovery.js +66 -0
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.js +8 -22
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.data.js +25 -0
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.js +52 -0
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.page.js +82 -0
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +23 -16
- package/src/react-extension/components/AuthenticationLogin/Login/Login.js +156 -145
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.data.js +67 -0
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.js +157 -0
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.page.js +155 -0
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +32 -27
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxFooter.js +48 -0
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain.js +90 -0
- package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.js +12 -3
- package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +1 -1
- package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +90 -82
- package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +80 -87
- package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.js +8 -3
- package/src/react-extension/components/Common/Avatar/UserAvatar.js +6 -1
- package/src/react-extension/components/Common/Avatar/UserAvatar.test.data.js +27 -0
- package/src/react-extension/components/Common/Avatar/UserAvatar.test.stories.js +47 -0
- package/src/react-extension/components/Common/Dialog/ManageDialogs/ManageDialogs.js +7 -2
- package/src/react-extension/components/Common/Error/HandleErrorEvents/HandleErrorEvents.js +2 -3
- package/src/react-extension/components/Common/Error/NotifyError/NotifyError.js +78 -15
- package/src/react-extension/components/Common/Icons/Icon.js +7 -0
- package/src/react-extension/components/Common/Internationalisation/TranslationProvider.js +1 -0
- package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.js +15 -2
- package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.test.stories.js +49 -0
- package/src/react-extension/components/Common/Route/HandleApplicationFirstLoadRoute.js +77 -0
- package/src/react-extension/components/Common/Route/HandleRouteFallback.js +14 -46
- package/src/react-extension/components/Common/Tab/Tabs.js +3 -1
- package/src/react-extension/components/Common/Workflow/ManageWorkflows/ManageWorkflows.js +72 -0
- package/src/react-extension/components/InsertAppIframe.js +12 -6
- package/src/react-extension/components/Resource/CreateResource/CreateResource.js +2 -4
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.data.js +2 -2
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.js +17 -2
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +19 -3
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.js +2 -4
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.test.js +20 -6
- package/src/react-extension/components/Resource/DeleteResource/DeleteResource.test.stories.js +12 -0
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.stories.js +107 -6
- package/src/react-extension/components/Resource/EditResource/EditResource.js +2 -4
- package/src/react-extension/components/Resource/EditResource/EditResource.test.data.js +2 -2
- package/src/react-extension/components/Resource/EditResource/EditResource.test.js +3 -0
- package/src/react-extension/components/Resource/EditResource/EditResource.test.stories.js +18 -4
- package/src/react-extension/components/Resource/ExportResources/ExportResources.js +5 -7
- package/src/react-extension/components/Resource/ExportResources/ExportResources.test.js +9 -2
- package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +4 -2
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +5 -7
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.js +8 -2
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +4 -2
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +24 -8
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +2 -4
- package/src/react-extension/components/Resource/ImportResources/ImportResources.js +2 -4
- package/src/react-extension/components/Resource/ImportResources/ImportResources.test.js +10 -2
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +4 -6
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.js +9 -2
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +9 -1
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.js +4 -2
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +19 -1
- package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +15 -3
- package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +8 -3
- package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +9 -8
- package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +6 -3
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.test.data.js +11 -0
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.test.js +11 -4
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +11 -10
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +2 -4
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.js +16 -5
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +13 -0
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.js +8 -10
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.js +12 -5
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +4 -1
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.js +2 -4
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.js +2 -5
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +6 -2
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +2 -4
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.js +15 -4
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +10 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +4 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.js +2 -3
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +3 -1
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +3 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +2 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.js +1 -1
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.test.stories.js +2 -3
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.test.stories.js +7 -3
- package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.js +2 -4
- package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +6 -2
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +2 -4
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +6 -2
- package/src/react-extension/components/Share/ShareDialog.js +2 -4
- package/src/react-extension/components/Share/ShareDialog.test.js +14 -3
- package/src/react-extension/components/Share/ShareDialog.test.stories.js +5 -3
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.js +4 -6
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.js +6 -2
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +5 -0
- package/src/react-extension/components/User/CreateUser/CreateUser.js +2 -4
- package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +14 -3
- package/src/react-extension/components/User/DeleteUser/DeleteUser.js +2 -4
- package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +9 -2
- package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.js +2 -4
- package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +7 -1
- package/src/react-extension/components/User/DisplayExpiredAccountRecovery/DisplayExpiredAccountRecovery.js +79 -0
- package/src/react-extension/components/User/DisplayExpiredAccountRecovery/DisplayExpiredAccountRecovery.test.stories.js +32 -0
- package/src/react-extension/components/User/DisplayUserBadgeMenu/DisplayUserBadgeMenu.js +13 -3
- package/src/react-extension/components/User/DisplayUserBadgeMenu/DisplayUserBadgeMenu.test.stories.js +7 -9
- package/src/react-extension/components/User/DisplayUserWorkspace/DisplayUserWorkspace.js +5 -1
- package/src/react-extension/components/User/DisplayUserWorkspace/DisplayUserWorkspace.test.data.js +18 -9
- package/src/react-extension/components/User/DisplayUserWorkspace/DisplayUserWorkspace.test.js +2 -2
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +48 -6
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.data.js +16 -1
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.js +14 -0
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.page.js +8 -0
- package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.stories.js +55 -0
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.js +35 -0
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.data.js +33 -13
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.js +16 -3
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.page.js +19 -6
- package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.stories.js +38 -0
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.js +46 -10
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.data.js +21 -6
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.js +38 -5
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.page.js +10 -0
- package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.stories.js +53 -0
- package/src/react-extension/components/User/EditUser/EditUser.js +2 -4
- package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +8 -1
- package/src/react-extension/components/User/FilterUsersByGroups/DisplayGroupContextualMenu.js +2 -4
- package/src/react-extension/components/User/HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute.js +98 -0
- package/src/react-extension/components/User/HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute.test.data.js +56 -0
- package/src/react-extension/components/User/HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute.test.js +54 -0
- package/src/react-extension/components/User/HandleReviewAccountRecoveryRequestRoute/HandleReviewAccountRecoveryRequestRoute.test.page.js +37 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.js +36 -3
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.test.data.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.test.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.js +234 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.data.js +125 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.js +150 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.page.js +113 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.stories.js +142 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.js +467 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.data.js +167 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.js +106 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.page.js +101 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.stories.js +143 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.js +5 -0
- package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.data.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.data.js +1 -1
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +1 -1
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +2 -4
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +5 -1
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.js +2 -4
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +8 -1
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.js +2 -4
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +8 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.test.data.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.test.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.data.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.data.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +2 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +2 -4
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.data.js +1 -1
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.js +13 -2
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.js +5 -2
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +11 -1
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.js +11 -3
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +5 -1
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.js +240 -0
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.data.js +53 -0
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.js +110 -0
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.page.js +85 -0
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.stories.js +65 -0
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +3 -4
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +1 -1
- package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspace/DisplayUserSettingsWorkspace.js +16 -2
- package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.js +2 -1
- package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.js +2 -4
- package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +18 -12
- package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.js +2 -4
- package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +17 -3
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.js +29 -0
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +5 -0
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.js +2 -4
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +10 -3
- package/src/react-extension/contexts/AccountRecoveryUserContext.js +223 -0
- package/src/react-extension/contexts/AccountRecoveryUserContext.test.data.js +55 -0
- package/src/react-extension/contexts/AccountRecoveryUserContext.test.js +58 -0
- package/src/react-extension/contexts/ActionFeedbackContext.test.data.js +28 -0
- package/src/react-extension/contexts/AdminAccountRecoveryContext.js +211 -0
- package/src/react-extension/contexts/AdminAccountRecoveryContext.test.data.js +66 -0
- package/src/react-extension/contexts/AdminAccountRecoveryContext.test.js +229 -0
- package/src/react-extension/contexts/AdministrationWorkspaceContext.js +27 -0
- package/src/react-extension/contexts/ApiAccountRecoveryContext.js +148 -0
- package/src/react-extension/contexts/ApiRecoverContext.js +14 -15
- package/src/react-extension/contexts/ApiSetupContext.js +8 -8
- package/src/react-extension/contexts/Authentication/AuthenticationAccountRecoveryContext.js +282 -0
- package/src/react-extension/contexts/Authentication/AuthenticationAccountRecoveryContext.test.data.js +51 -0
- package/src/react-extension/contexts/Authentication/AuthenticationAccountRecoveryContext.test.js +231 -0
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.js +264 -0
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.data.js +79 -0
- package/src/react-extension/contexts/Authentication/AuthenticationLoginContext.test.js +234 -0
- package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.js +325 -0
- package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.test.data.js +63 -0
- package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.test.js +379 -0
- package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.js +339 -0
- package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.test.data.js +63 -0
- package/src/react-extension/contexts/Authentication/AuthenticationSetupContext.test.js +364 -0
- package/src/react-extension/contexts/DialogContext.test.data.js +27 -0
- package/src/react-extension/contexts/ExtAppContext.js +0 -6
- package/src/react-extension/contexts/ExtAppContext.test.data.js +50 -0
- package/src/react-extension/contexts/NavigationContext.js +26 -2
- package/src/react-extension/contexts/ResourceWorkspaceContext.js +9 -2
- package/src/react-extension/contexts/ResourceWorkspaceContext.test.page.js +10 -1
- package/src/react-extension/contexts/UserSettingsContext.js +1 -2
- package/src/react-extension/contexts/UserWorkspaceContext.js +35 -10
- package/src/react-extension/contexts/UserWorkspaceContext.test.data.js +13 -0
- package/src/react-extension/contexts/UserWorkspaceContext.test.page.js +6 -1
- package/src/react-extension/contexts/WorkflowContext.js +89 -0
- package/src/react-extension/contexts/WorkflowContext.test.data.js +27 -0
- package/src/react-extension/lib/Error/GpgKeyError.js +22 -0
- package/src/react-extension/lib/Error/InvalidMasterPasswordError.js +23 -0
- package/src/react-extension/lib/Error/ServerKeyChangedError.js +22 -0
- package/src/react-extension/test/fixture/Settings/siteSettings.js +4 -0
- package/src/react-extension/test/fixture/Settings/userSettings.js +1 -1
- package/src/react-extension/test/mock/MockPort.js +2 -2
- package/src/react-extension/test/mock/MockStorage.js +0 -2
- package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +2 -1
- package/src/react-extension/test/mock/components/React/mockSetState.js +22 -0
- package/src/react-quickaccess/ExtQuickAccess.js +10 -1
- package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.js +1 -1
- package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +6 -10
- package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +6 -10
- package/src/react-quickaccess/components/LoginPage/LoginPage.js +2 -6
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +1 -0
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.js +17 -3
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +5 -3
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +31 -2
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +1 -1
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +32 -3
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.data.js +6 -3
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +29 -19
- package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.data.js +2 -0
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +12 -9
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.js +1 -1
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +127 -164
- package/src/react-web-integration/lib/Dom/DomUtils.js +23 -1
- package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +7 -1
- package/src/react-web-integration/lib/InForm/InFormManager.js +24 -14
- package/src/react-web-integration/lib/InForm/InformManager.test.data.js +80 -2
- package/src/react-web-integration/lib/InForm/InformManager.test.js +147 -7
- package/src/react-web-integration/lib/InForm/InformManager.test.page.js +16 -2
- package/src/shared/lib/Error/EntityValidationError.js +81 -0
- package/src/shared/lib/apiClient/apiClient.test.js +1 -1
- package/src/shared/services/accountRecovery/ApiAppAccountRecoveryUserService.js +78 -0
- package/src/shared/services/accountRecovery/ExtAppAccountRecoveryUserService.js +24 -0
- package/test/jest.setup.js +8 -0
- package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.js +0 -97
- package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.test.stories.js +0 -33
- package/src/react-extension/components/Authentication/CheckPassphrase/GenerateKeyOnPassphraseLostSecondaryAction.js +0 -41
- package/src/react-extension/components/Authentication/CheckPassphrase/HelpOnPassphraseLostSecondaryAction.js +0 -41
- package/src/react-extension/components/Authentication/CheckPassphrase/HelpOnPrivateKeyLostSecondaryAction.js +0 -41
- package/src/react-extension/components/Authentication/ImportGpgKey/GenerateKeySecondaryAction.js +0 -40
- package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.data.js +0 -11
- package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.stories.js +0 -34
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.js +0 -87
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.test.stories.js +0 -33
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginInProgress.js +0 -49
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginProgress.test.stories.js +0 -33
- package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLogin.js +0 -102
- package/src/react-extension/components/Internationalisation/ChangeLocale/ChangeExtAuthenticationLocale.js +0 -63
- package/src/react-extension/contexts/AuthenticationContext.js +0 -467
- package/src/react-extension/contexts/AuthenticationContext.test.data.js +0 -15
- package/src/react-extension/contexts/AuthenticationContext.test.js +0 -252
|
@@ -0,0 +1,364 @@
|
|
|
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.6.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import mockComponentSetState from "../../test/mock/components/React/mockSetState";
|
|
16
|
+
import {mockUserAgent} from "jest-useragent-mock";
|
|
17
|
+
import {AuthenticationSetupContextProvider, AuthenticationSetupWorkflowStates} from "./AuthenticationSetupContext";
|
|
18
|
+
import {defaultProps, withAccountRecoveryEnabled} from "./AuthenticationSetupContext.test.data";
|
|
19
|
+
import GpgKeyError from "../../lib/Error/GpgKeyError";
|
|
20
|
+
import InvalidMasterPasswordError from "../../lib/Error/InvalidMasterPasswordError";
|
|
21
|
+
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
jest.resetModules();
|
|
24
|
+
jest.clearAllMocks();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
describe("AuthenticationSetupContextProvider", () => {
|
|
28
|
+
describe("AuthenticationSetupContextProvider::constructor", () => {
|
|
29
|
+
it("The machine state should be by default set to: LOADING", async() => {
|
|
30
|
+
const props = defaultProps();
|
|
31
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
32
|
+
mockComponentSetState(contextProvider);
|
|
33
|
+
|
|
34
|
+
expect.assertions(1);
|
|
35
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.LOADING);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
describe("AuthenticationSetupContextProvider::initialize", () => {
|
|
40
|
+
it("When the extension was just installed and the browser is Chrome, the machine state should be set to: INTRODUCE_EXTENSION", async() => {
|
|
41
|
+
mockUserAgent('chrome');
|
|
42
|
+
const props = defaultProps();
|
|
43
|
+
props.context.port.addRequestListener("passbolt.setup.is-first-install", jest.fn(() => Promise.resolve(true)));
|
|
44
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
45
|
+
mockComponentSetState(contextProvider);
|
|
46
|
+
|
|
47
|
+
expect.assertions(3);
|
|
48
|
+
await contextProvider.initialize();
|
|
49
|
+
expect(props.context.port.requestListeners["passbolt.setup.is-first-install"]).toHaveBeenCalled();
|
|
50
|
+
expect(props.context.port.requestListeners["passbolt.setup.start"]).toHaveBeenCalled();
|
|
51
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.INTRODUCE_EXTENSION);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("When the extension was just installed and the browser is Firefox, the machine state should be set to: GENERATE_GPG_KEY", async() => {
|
|
55
|
+
mockUserAgent('firefox');
|
|
56
|
+
const props = defaultProps();
|
|
57
|
+
props.context.port.addRequestListener("passbolt.setup.is-first-install", jest.fn(() => Promise.resolve(true)));
|
|
58
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
59
|
+
mockComponentSetState(contextProvider);
|
|
60
|
+
|
|
61
|
+
expect.assertions(3);
|
|
62
|
+
await contextProvider.initialize();
|
|
63
|
+
expect(props.context.port.requestListeners["passbolt.setup.is-first-install"]).toHaveBeenCalled();
|
|
64
|
+
expect(props.context.port.requestListeners["passbolt.setup.start"]).toHaveBeenCalled();
|
|
65
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.GENERATE_GPG_KEY);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("When the extension was already installed and the browser is Chrome, the machine state should be set to: GENERATE_GPG_KEY", async() => {
|
|
69
|
+
mockUserAgent('chrome');
|
|
70
|
+
const props = defaultProps();
|
|
71
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
72
|
+
mockComponentSetState(contextProvider);
|
|
73
|
+
|
|
74
|
+
expect.assertions(3);
|
|
75
|
+
await contextProvider.initialize();
|
|
76
|
+
expect(props.context.port.requestListeners["passbolt.setup.is-first-install"]).toHaveBeenCalled();
|
|
77
|
+
expect(props.context.port.requestListeners["passbolt.setup.start"]).toHaveBeenCalled();
|
|
78
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.GENERATE_GPG_KEY);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
describe("AuthenticationSetupContextProvider::goToGenerateGpgKey", () => {
|
|
83
|
+
it("When the go to succeed, the machine state should be set to: GENERATE_GPG_KEY", async() => {
|
|
84
|
+
const props = defaultProps();
|
|
85
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
86
|
+
mockComponentSetState(contextProvider);
|
|
87
|
+
|
|
88
|
+
expect.assertions(1);
|
|
89
|
+
await contextProvider.initialize();
|
|
90
|
+
await contextProvider.goToGenerateGpgKey();
|
|
91
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.GENERATE_GPG_KEY);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
describe("AuthenticationSetupContextProvider::generateGpgKey", () => {
|
|
96
|
+
it("When the gpg key is created, the machine state should be set to: DOWNLOAD_RECOVERY_KIT", async() => {
|
|
97
|
+
const props = defaultProps();
|
|
98
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
99
|
+
mockComponentSetState(contextProvider);
|
|
100
|
+
|
|
101
|
+
expect.assertions(2);
|
|
102
|
+
await contextProvider.initialize();
|
|
103
|
+
await contextProvider.generateGpgKey("passphrase");
|
|
104
|
+
expect(props.context.port.requestListeners["passbolt.setup.generate-key"]).toHaveBeenCalledWith({passphrase: "passphrase"}, undefined);
|
|
105
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.DOWNLOAD_RECOVERY_KIT);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it("When an error occurred during the gpg key creation, the machine state should be set to: UNEXPECTED_ERROR", async() => {
|
|
109
|
+
const props = defaultProps();
|
|
110
|
+
props.context.port.addRequestListener("passbolt.setup.generate-key", jest.fn(() => Promise.reject(new Error('Unexpected error'))));
|
|
111
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
112
|
+
mockComponentSetState(contextProvider);
|
|
113
|
+
|
|
114
|
+
expect.assertions(3);
|
|
115
|
+
await contextProvider.initialize();
|
|
116
|
+
await contextProvider.generateGpgKey("passphrase");
|
|
117
|
+
expect(props.context.port.requestListeners["passbolt.setup.generate-key"]).toHaveBeenCalledWith({passphrase: "passphrase"}, undefined);
|
|
118
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.UNEXPECTED_ERROR);
|
|
119
|
+
expect(contextProvider.state.error.message).toEqual("Unexpected error");
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
describe("AuthenticationSetupContextProvider::downloadRecoveryKit", () => {
|
|
124
|
+
it("The the recovery kit is downloaded with success, the machine state should remain set to the state it was before the operation", async() => {
|
|
125
|
+
const props = defaultProps();
|
|
126
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
127
|
+
mockComponentSetState(contextProvider);
|
|
128
|
+
|
|
129
|
+
expect.assertions(2);
|
|
130
|
+
await contextProvider.initialize();
|
|
131
|
+
const expectedWorkflowState = contextProvider.state.state;
|
|
132
|
+
await contextProvider.downloadRecoveryKit();
|
|
133
|
+
expect(props.context.port.requestListeners["passbolt.setup.download-recovery-kit"]).toHaveBeenCalled();
|
|
134
|
+
expect(contextProvider.state.state).toEqual(expectedWorkflowState);
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it("When an error occurred during the recovery kit download, the machine state should be set to: UNEXPECTED_ERROR", async() => {
|
|
138
|
+
const props = defaultProps();
|
|
139
|
+
props.context.port.addRequestListener("passbolt.setup.download-recovery-kit", jest.fn(() => Promise.reject(new Error('Unexpected error'))));
|
|
140
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
141
|
+
mockComponentSetState(contextProvider);
|
|
142
|
+
|
|
143
|
+
expect.assertions(3);
|
|
144
|
+
await contextProvider.initialize();
|
|
145
|
+
await contextProvider.downloadRecoveryKit();
|
|
146
|
+
expect(props.context.port.requestListeners["passbolt.setup.download-recovery-kit"]).toHaveBeenCalled();
|
|
147
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.UNEXPECTED_ERROR);
|
|
148
|
+
expect(contextProvider.state.error.message).toEqual("Unexpected error");
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
describe("AuthenticationSetupContextProvider::downloadRecoveryKit", () => {
|
|
153
|
+
it("Given the account recovery policy is not set or disabled and the the recovery kit is downloaded, the machine state should be set to: CHOOSE_SECURITY_TOKEN", async() => {
|
|
154
|
+
const props = defaultProps();
|
|
155
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
156
|
+
mockComponentSetState(contextProvider);
|
|
157
|
+
|
|
158
|
+
expect.assertions(1);
|
|
159
|
+
await contextProvider.initialize();
|
|
160
|
+
await contextProvider.handleRecoveryKitDownloaded();
|
|
161
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.CHOOSE_SECURITY_TOKEN);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it("Given the account recovery is enabled and the the recovery kit is downloaded, the machine state should be set to: CHOOSE_ACCOUNT_RECOVERY_PREFERENCE", async() => {
|
|
165
|
+
const props = withAccountRecoveryEnabled(defaultProps());
|
|
166
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
167
|
+
mockComponentSetState(contextProvider);
|
|
168
|
+
|
|
169
|
+
expect.assertions(1);
|
|
170
|
+
await contextProvider.initialize();
|
|
171
|
+
await contextProvider.handleRecoveryKitDownloaded();
|
|
172
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.CHOOSE_ACCOUNT_RECOVERY_PREFERENCE);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
describe("AuthenticationSetupContextProvider::goToImportGpgKey", () => {
|
|
177
|
+
it("When the go to succeed, the machine state should be set to: IMPORT_GPG_KEY", async() => {
|
|
178
|
+
const props = defaultProps();
|
|
179
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
180
|
+
mockComponentSetState(contextProvider);
|
|
181
|
+
|
|
182
|
+
expect.assertions(1);
|
|
183
|
+
await contextProvider.initialize();
|
|
184
|
+
await contextProvider.goToImportGpgKey();
|
|
185
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.IMPORT_GPG_KEY);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
describe("AuthenticationSetupContextProvider::importGpgKey", () => {
|
|
190
|
+
it("When the gpg key is imported with success, the machine state should be set to: VALIDATE_PASSPHRASE", async() => {
|
|
191
|
+
const props = defaultProps();
|
|
192
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
193
|
+
mockComponentSetState(contextProvider);
|
|
194
|
+
|
|
195
|
+
expect.assertions(2);
|
|
196
|
+
await contextProvider.initialize();
|
|
197
|
+
await contextProvider.importGpgKey("armored_key");
|
|
198
|
+
expect(props.context.port.requestListeners["passbolt.setup.import-key"]).toHaveBeenCalledWith("armored_key", undefined);
|
|
199
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.VALIDATE_PASSPHRASE);
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
it("When an invalid gpg key fails the import, the error should be rethrown and the machine state should remain on: IMPORT_GPG_KEY", async() => {
|
|
203
|
+
const props = defaultProps();
|
|
204
|
+
props.context.port.addRequestListener("passbolt.setup.import-key", jest.fn(() => Promise.reject(new GpgKeyError())));
|
|
205
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
206
|
+
mockComponentSetState(contextProvider);
|
|
207
|
+
|
|
208
|
+
expect.assertions(3);
|
|
209
|
+
await contextProvider.initialize();
|
|
210
|
+
await contextProvider.goToImportGpgKey();
|
|
211
|
+
try {
|
|
212
|
+
await contextProvider.importGpgKey("armored_key");
|
|
213
|
+
expect(false).toBeTruthy();
|
|
214
|
+
} catch (error) {
|
|
215
|
+
expect(props.context.port.requestListeners["passbolt.setup.import-key"]).toHaveBeenCalledWith("armored_key", undefined);
|
|
216
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.IMPORT_GPG_KEY);
|
|
217
|
+
expect(error.name).toEqual("GpgKeyError");
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
it("When an error occurred during the gpg key import, the machine state should be set to: UNEXPECTED_ERROR", async() => {
|
|
222
|
+
const props = defaultProps();
|
|
223
|
+
props.context.port.addRequestListener("passbolt.setup.import-key", jest.fn(() => Promise.reject(new Error('Unexpected error'))));
|
|
224
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
225
|
+
mockComponentSetState(contextProvider);
|
|
226
|
+
|
|
227
|
+
expect.assertions(3);
|
|
228
|
+
await contextProvider.initialize();
|
|
229
|
+
await contextProvider.importGpgKey("armored_key");
|
|
230
|
+
expect(props.context.port.requestListeners["passbolt.setup.import-key"]).toHaveBeenCalledWith("armored_key", undefined);
|
|
231
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.UNEXPECTED_ERROR);
|
|
232
|
+
expect(contextProvider.state.error.message).toEqual("Unexpected error");
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
describe("AuthenticationSetupContextProvider::checkPassphrase", () => {
|
|
237
|
+
it("When a passphrase check succeed the machine state should be set to: CHOOSE_SECURITY_TOKEN", async() => {
|
|
238
|
+
const props = defaultProps();
|
|
239
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
240
|
+
mockComponentSetState(contextProvider);
|
|
241
|
+
|
|
242
|
+
expect.assertions(2);
|
|
243
|
+
await contextProvider.initialize();
|
|
244
|
+
await contextProvider.importGpgKey();
|
|
245
|
+
await contextProvider.checkPassphrase("passphrase");
|
|
246
|
+
expect(props.context.port.requestListeners["passbolt.setup.verify-passphrase"]).toHaveBeenCalledWith("passphrase", false, undefined);
|
|
247
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.CHOOSE_SECURITY_TOKEN);
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
it("When a passphrase check succeed and account recovery policy is enabled the machine state should be set to: CHOOSE_ACCOUNT_RECOVERY_PREFERENCE", async() => {
|
|
251
|
+
const props = withAccountRecoveryEnabled(defaultProps());
|
|
252
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
253
|
+
mockComponentSetState(contextProvider);
|
|
254
|
+
|
|
255
|
+
expect.assertions(2);
|
|
256
|
+
await contextProvider.initialize();
|
|
257
|
+
await contextProvider.importGpgKey();
|
|
258
|
+
await contextProvider.checkPassphrase("passphrase");
|
|
259
|
+
expect(props.context.port.requestListeners["passbolt.setup.verify-passphrase"]).toHaveBeenCalledWith("passphrase", false, undefined);
|
|
260
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.CHOOSE_ACCOUNT_RECOVERY_PREFERENCE);
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it("When a passphrase check succeed and accountRecovery feature flag is disabled but the server sends an enabled account recovery organization policy, the machine state should be set to: CHOOSE_SECURITY_TOKEN", async() => {
|
|
264
|
+
const props = withAccountRecoveryEnabled(defaultProps());
|
|
265
|
+
props.context.siteSettings.canIUse = jest.fn(() => false);
|
|
266
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
267
|
+
mockComponentSetState(contextProvider);
|
|
268
|
+
|
|
269
|
+
expect.assertions(2);
|
|
270
|
+
await contextProvider.initialize();
|
|
271
|
+
await contextProvider.importGpgKey();
|
|
272
|
+
await contextProvider.checkPassphrase("passphrase");
|
|
273
|
+
expect(props.context.port.requestListeners["passbolt.setup.verify-passphrase"]).toHaveBeenCalledWith("passphrase", false, undefined);
|
|
274
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.CHOOSE_SECURITY_TOKEN);
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
it("When a wrong passphrase is requested to be checked, the error should be rethrown and the machine state should remain on: SIGN_IN", async() => {
|
|
278
|
+
const props = defaultProps();
|
|
279
|
+
props.context.port.addRequestListener("passbolt.setup.verify-passphrase", jest.fn(() => Promise.reject(new InvalidMasterPasswordError())));
|
|
280
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
281
|
+
mockComponentSetState(contextProvider);
|
|
282
|
+
|
|
283
|
+
expect.assertions(2);
|
|
284
|
+
await contextProvider.initialize();
|
|
285
|
+
await contextProvider.importGpgKey();
|
|
286
|
+
try {
|
|
287
|
+
await contextProvider.checkPassphrase("passphrase");
|
|
288
|
+
expect(false).toBeTruthy();
|
|
289
|
+
} catch (error) {
|
|
290
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.VALIDATE_PASSPHRASE);
|
|
291
|
+
expect(error.name).toEqual("InvalidMasterPasswordError");
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
it("If an unexpected error occurred the machine state should be set to: UNEXPECTED_ERROR", async() => {
|
|
296
|
+
const props = defaultProps();
|
|
297
|
+
props.context.port.addRequestListener("passbolt.setup.verify-passphrase", jest.fn(() => Promise.reject(new Error("Unexpected error"))));
|
|
298
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
299
|
+
mockComponentSetState(contextProvider);
|
|
300
|
+
|
|
301
|
+
expect.assertions(2);
|
|
302
|
+
await contextProvider.initialize();
|
|
303
|
+
await contextProvider.checkPassphrase("passphrase");
|
|
304
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.UNEXPECTED_ERROR);
|
|
305
|
+
expect(contextProvider.state.error.message).toEqual("Unexpected error");
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
describe("AuthenticationSetupContextProvider::chooseAccountRecoveryPreference", () => {
|
|
310
|
+
it("When the account recovery preferences are set with success, the machine state should be set to: CHOOSE_SECURITY_TOKEN", async() => {
|
|
311
|
+
const props = defaultProps();
|
|
312
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
313
|
+
mockComponentSetState(contextProvider);
|
|
314
|
+
|
|
315
|
+
expect.assertions(2);
|
|
316
|
+
await contextProvider.initialize();
|
|
317
|
+
await contextProvider.chooseAccountRecoveryPreference("approved");
|
|
318
|
+
expect(props.context.port.requestListeners["passbolt.setup.set-account-recovery-user-setting"]).toHaveBeenCalledWith("approved", null, undefined);
|
|
319
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.CHOOSE_SECURITY_TOKEN);
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
it("When the account recovery preferences fails, the machine state should be set to: UNEXPECTED_ERROR", async() => {
|
|
323
|
+
const props = defaultProps();
|
|
324
|
+
props.context.port.addRequestListener("passbolt.setup.set-account-recovery-user-setting", jest.fn(() => Promise.reject(new Error("Unexpected error"))));
|
|
325
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
326
|
+
mockComponentSetState(contextProvider);
|
|
327
|
+
|
|
328
|
+
expect.assertions(3);
|
|
329
|
+
await contextProvider.initialize();
|
|
330
|
+
await contextProvider.chooseAccountRecoveryPreference("approved");
|
|
331
|
+
expect(props.context.port.requestListeners["passbolt.setup.set-account-recovery-user-setting"]).toHaveBeenCalledWith("approved", null, undefined);
|
|
332
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.UNEXPECTED_ERROR);
|
|
333
|
+
expect(contextProvider.state.error.message).toEqual("Unexpected error");
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
describe("AuthenticationSetupContextProvider::chooseSecurityToken", () => {
|
|
338
|
+
it("When the security token preferences are set with success, the machine state should be set to: SIGNING_IN", async() => {
|
|
339
|
+
const props = defaultProps();
|
|
340
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
341
|
+
mockComponentSetState(contextProvider);
|
|
342
|
+
|
|
343
|
+
expect.assertions(2);
|
|
344
|
+
await contextProvider.initialize();
|
|
345
|
+
await contextProvider.chooseSecurityToken({color: "black", textColor: "red"});
|
|
346
|
+
expect(props.context.port.requestListeners["passbolt.setup.set-security-token"]).toHaveBeenCalledWith({color: "black", textColor: "red"}, undefined);
|
|
347
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.SIGNING_IN);
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
it("When the security token preferences cannot be set, the machine state should be set to: UNEXPECTED_ERROR", async() => {
|
|
351
|
+
const props = defaultProps();
|
|
352
|
+
props.context.port.addRequestListener("passbolt.setup.set-security-token", jest.fn(() => Promise.reject(new Error("Unexpected error"))));
|
|
353
|
+
const contextProvider = new AuthenticationSetupContextProvider(props);
|
|
354
|
+
mockComponentSetState(contextProvider);
|
|
355
|
+
|
|
356
|
+
expect.assertions(3);
|
|
357
|
+
await contextProvider.initialize();
|
|
358
|
+
await contextProvider.chooseSecurityToken({color: "black", textColor: "red"});
|
|
359
|
+
expect(props.context.port.requestListeners["passbolt.setup.set-security-token"]).toHaveBeenCalledWith({color: "black", textColor: "red"}, undefined);
|
|
360
|
+
expect(contextProvider.state.state).toEqual(AuthenticationSetupWorkflowStates.UNEXPECTED_ERROR);
|
|
361
|
+
expect(contextProvider.state.error.message).toEqual("Unexpected error");
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
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.6.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Default context
|
|
17
|
+
* @param {Object} context The override
|
|
18
|
+
* @returns {object}
|
|
19
|
+
*/
|
|
20
|
+
export function defaultDialogContext(context = {}) {
|
|
21
|
+
const defaultContext = {
|
|
22
|
+
dialogs: [],
|
|
23
|
+
open: jest.fn(),
|
|
24
|
+
close: jest.fn()
|
|
25
|
+
};
|
|
26
|
+
return Object.assign(defaultContext, context);
|
|
27
|
+
}
|
|
@@ -134,12 +134,6 @@ class ExtAppContextProvider extends React.Component {
|
|
|
134
134
|
// progress dialog
|
|
135
135
|
progressDialogProps: {},
|
|
136
136
|
|
|
137
|
-
// error dialog
|
|
138
|
-
errorDialogProps: {
|
|
139
|
-
title: null,
|
|
140
|
-
message: null
|
|
141
|
-
},
|
|
142
|
-
|
|
143
137
|
// Resource comment dialog
|
|
144
138
|
resourceCommentId: null, // Selected resource comment id
|
|
145
139
|
mustRefreshComments: false, // Flag telling whether the current list of comments should be refreshed
|
|
@@ -0,0 +1,50 @@
|
|
|
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.6.0
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import UserSettings from "../../shared/lib/Settings/UserSettings";
|
|
16
|
+
import userSettingsFixture from "../test/fixture/Settings/userSettings";
|
|
17
|
+
import SiteSettings from "../../shared/lib/Settings/SiteSettings";
|
|
18
|
+
import siteSettingsFixture from "../test/fixture/Settings/siteSettings";
|
|
19
|
+
import ResourceTypesSettings from "../../shared/lib/Settings/ResourceTypesSettings";
|
|
20
|
+
import resourceTypesFixture from "../test/fixture/ResourceTypes/resourceTypes";
|
|
21
|
+
import MockPort from "../test/mock/MockPort";
|
|
22
|
+
import MockStorage from "../test/mock/MockStorage";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Returns the default app context for the unit test
|
|
26
|
+
* @param appContext An existing app context
|
|
27
|
+
* @returns {any | ({userSettings: UserSettings, siteSettings: SiteSettings, port: MockPort} & {})}
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
export function defaultAppContext(appContext) {
|
|
31
|
+
const userSettings = new UserSettings(userSettingsFixture);
|
|
32
|
+
const siteSettings = new SiteSettings(siteSettingsFixture);
|
|
33
|
+
const resourceTypesSettings = new ResourceTypesSettings(siteSettings, resourceTypesFixture);
|
|
34
|
+
const defaultAppContext = {
|
|
35
|
+
locale: 'en-UK',
|
|
36
|
+
userSettings,
|
|
37
|
+
siteSettings,
|
|
38
|
+
resourceTypesSettings,
|
|
39
|
+
port: new MockPort(),
|
|
40
|
+
storage: new MockStorage(),
|
|
41
|
+
loggedInUser: {
|
|
42
|
+
id: userSettings.id,
|
|
43
|
+
role: {
|
|
44
|
+
name: 'admin'
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
users: [],
|
|
48
|
+
};
|
|
49
|
+
return Object.assign(defaultAppContext, appContext || {});
|
|
50
|
+
}
|
|
@@ -31,6 +31,10 @@ export const NavigationContext = React.createContext({
|
|
|
31
31
|
}, // Whenever the users wants to navigate to the administration workspace email notifications
|
|
32
32
|
onGoToAdministrationSubscriptionRequested: () => {
|
|
33
33
|
}, // Whenever the users wants to navigate to the administration workspace subscription
|
|
34
|
+
onGoToAdministrationInternationalizationRequested: () => {
|
|
35
|
+
}, // Whenever the users wants to navigate to the administration workspace internationalization
|
|
36
|
+
onGoToAdministrationAccountRecoveryRequested: () => {
|
|
37
|
+
}, // Whenever the users wants to navigate to the administration workspace account recovery
|
|
34
38
|
// Passwords
|
|
35
39
|
onGoToPasswordsRequested: () => {
|
|
36
40
|
}, // Whenever the user wants to navigate to the passwords workspace
|
|
@@ -52,6 +56,8 @@ export const NavigationContext = React.createContext({
|
|
|
52
56
|
}, // Whenever the user wants to navigate to the users settings workspace keys section.
|
|
53
57
|
onGoToUserSettingsMobileRequested: () => {
|
|
54
58
|
}, // Whenever the user wants to navigate to the users settings workspace mobile section.
|
|
59
|
+
onGoToUserSettingsAccountRecoveryRequested: () => {
|
|
60
|
+
}, // Whenever the user wants to navigate to the users settings workspace mobile section.
|
|
55
61
|
onGoToNewTab: () => {
|
|
56
62
|
}, // Whenever the user want to navigate to a new url.
|
|
57
63
|
});
|
|
@@ -82,7 +88,8 @@ class NavigationContextProvider extends React.Component {
|
|
|
82
88
|
onGoToAdministrationUsersDirectoryRequested: this.onGoToAdministrationUsersDirectoryRequested.bind(this), // Whenever the user wants to navigate to the administration workspace users directory
|
|
83
89
|
onGoToAdministrationEmailNotificationsRequested: this.onGoToAdministrationEmailNotificationsRequested.bind(this), // Whenever the user wants to navigate to the administration workspace email notifications
|
|
84
90
|
onGoToAdministrationSubscriptionRequested: this.onGoToAdministrationSubscriptionRequested.bind(this), // Whenever the user wants to navigate to the administration workspace subscription
|
|
85
|
-
onGoToAdministrationInternationalizationRequested: this.onGoToAdministrationInternationalizationRequested.bind(this), // Whenever the user wants to navigate to the administration workspace
|
|
91
|
+
onGoToAdministrationInternationalizationRequested: this.onGoToAdministrationInternationalizationRequested.bind(this), // Whenever the user wants to navigate to the administration workspace internationalization
|
|
92
|
+
onGoToAdministrationAccountRecoveryRequested: this.onGoToAdministrationAccountRecoveryRequested.bind(this), // Whenever the user wants to navigate to the administration workspace account recovery
|
|
86
93
|
// Passwords
|
|
87
94
|
onGoToPasswordsRequested: this.onGoToPasswordsRequested.bind(this), // Whenever the user wants to navigate to the passwords workspace
|
|
88
95
|
// Users
|
|
@@ -95,6 +102,7 @@ class NavigationContextProvider extends React.Component {
|
|
|
95
102
|
onGoToUserSettingsMfaRequested: this.onGoToUserSettingsMfaRequested.bind(this), // Whenever the user wants to navigate to the users settings workspace mfa section.
|
|
96
103
|
onGoToUserSettingsKeysRequested: this.onGoToUserSettingsKeysRequested.bind(this), // Whenever the user wants to navigate to the users settings workspace keys section.
|
|
97
104
|
onGoToUserSettingsMobileRequested: this.onGoToUserSettingsMobileRequested.bind(this), // Whenever the user wants to navigate to the users settings workspace mobile section.
|
|
105
|
+
onGoToUserSettingsAccountRecoveryRequested: this.onGoToUserSettingsAccountRecoveryRequested.bind(this), // Whenever the user wants to navigate to the users settings workspace account recovery section.
|
|
98
106
|
};
|
|
99
107
|
}
|
|
100
108
|
|
|
@@ -182,6 +190,14 @@ class NavigationContextProvider extends React.Component {
|
|
|
182
190
|
await this.goTo("api", "/app/administration/internationalization");
|
|
183
191
|
}
|
|
184
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Whenever the user wants to navigate to the administration workspace account recovery.
|
|
195
|
+
* @returns {Promise<void>}
|
|
196
|
+
*/
|
|
197
|
+
async onGoToAdministrationAccountRecoveryRequested() {
|
|
198
|
+
await this.goTo("browser-extension", "/app/administration/account-recovery");
|
|
199
|
+
}
|
|
200
|
+
|
|
185
201
|
/**
|
|
186
202
|
* Returns true if the user has the MFA capability
|
|
187
203
|
* @returns {boolean}
|
|
@@ -283,13 +299,21 @@ class NavigationContextProvider extends React.Component {
|
|
|
283
299
|
}
|
|
284
300
|
|
|
285
301
|
/**
|
|
286
|
-
* Whenever the user wants to navigate to the users settings workspace
|
|
302
|
+
* Whenever the user wants to navigate to the users settings workspace mobile section.
|
|
287
303
|
* @returns {Promise<void>}
|
|
288
304
|
*/
|
|
289
305
|
async onGoToUserSettingsMobileRequested() {
|
|
290
306
|
await this.goTo("browser-extension", "/app/settings/mobile");
|
|
291
307
|
}
|
|
292
308
|
|
|
309
|
+
/**
|
|
310
|
+
* Whenever the user wants to navigate to the users settings workspace account recovery section.
|
|
311
|
+
* @returns {Promise<void>}
|
|
312
|
+
*/
|
|
313
|
+
async onGoToUserSettingsAccountRecoveryRequested() {
|
|
314
|
+
await this.goTo("browser-extension", "/app/settings/account-recovery");
|
|
315
|
+
}
|
|
316
|
+
|
|
293
317
|
/**
|
|
294
318
|
* Render the component
|
|
295
319
|
* @returns {JSX}
|
|
@@ -20,6 +20,7 @@ import {withActionFeedback} from "./ActionFeedbackContext";
|
|
|
20
20
|
import {withLoading} from "./LoadingContext";
|
|
21
21
|
import sanitizeUrl, {urlProtocols} from "../lib/Sanitize/sanitizeUrl";
|
|
22
22
|
import {DateTime} from "luxon";
|
|
23
|
+
import debounce from "debounce-promise";
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Context related to resources ( filter, current selections, etc.)
|
|
@@ -87,6 +88,12 @@ export class ResourceWorkspaceContextProvider extends React.Component {
|
|
|
87
88
|
super(props);
|
|
88
89
|
this.state = this.defaultState;
|
|
89
90
|
this.initializeProperties();
|
|
91
|
+
|
|
92
|
+
/*
|
|
93
|
+
* Execute first request to refresh users, groups, etc. then wait 10sec to trigger next one
|
|
94
|
+
* E.g. Only perform two populate max per 10 sec
|
|
95
|
+
*/
|
|
96
|
+
this.populateDebounced = debounce(this.populate, 10000, {leading: true, accumulate: false});
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
/**
|
|
@@ -152,7 +159,7 @@ export class ResourceWorkspaceContextProvider extends React.Component {
|
|
|
152
159
|
* Whenever the component is mounted
|
|
153
160
|
*/
|
|
154
161
|
async componentDidMount() {
|
|
155
|
-
this.
|
|
162
|
+
this.populateDebounced();
|
|
156
163
|
this.handleResourcesWaitedFor();
|
|
157
164
|
}
|
|
158
165
|
|
|
@@ -178,8 +185,8 @@ export class ResourceWorkspaceContextProvider extends React.Component {
|
|
|
178
185
|
// Avoid a side-effect whenever one inputs a specific resource url (it unselect the resource otherwise )
|
|
179
186
|
const isNotNonePreviousFilter = previousFilter.type !== ResourceWorkspaceFilterTypes.NONE;
|
|
180
187
|
if (isNotNonePreviousFilter) {
|
|
181
|
-
await this.populate();
|
|
182
188
|
await this.unselectAll();
|
|
189
|
+
await this.populateDebounced();
|
|
183
190
|
}
|
|
184
191
|
}
|
|
185
192
|
}
|
|
@@ -78,10 +78,19 @@ export default class ResourceWorkspaceContextPage {
|
|
|
78
78
|
* @ linkCssSelector The CSS link selector
|
|
79
79
|
*/
|
|
80
80
|
async goToLink(linkCssSelector) {
|
|
81
|
+
const oldFilter = this.filter;
|
|
81
82
|
const element = this._page.container.querySelector(linkCssSelector);
|
|
82
83
|
const leftClick = {button: 0};
|
|
83
84
|
fireEvent.click(element, leftClick);
|
|
84
|
-
|
|
85
|
+
/*
|
|
86
|
+
* We ensure that the filter is applied properly before ending the promise.
|
|
87
|
+
* Without that, some unit tests may fail because they don't have the right context to run.
|
|
88
|
+
*/
|
|
89
|
+
await waitFor(() => {
|
|
90
|
+
if (oldFilter === this.filter) {
|
|
91
|
+
throw new Error("Context didn't change yet.");
|
|
92
|
+
}
|
|
93
|
+
});
|
|
85
94
|
}
|
|
86
95
|
|
|
87
96
|
/**
|
|
@@ -46,7 +46,7 @@ export class UserSettingsContextProvider extends React.Component {
|
|
|
46
46
|
*/
|
|
47
47
|
constructor(props) {
|
|
48
48
|
super(props);
|
|
49
|
-
this.state =
|
|
49
|
+
this.state = this.defaultState;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
/**
|
|
@@ -144,7 +144,6 @@ export class UserSettingsContextProvider extends React.Component {
|
|
|
144
144
|
|
|
145
145
|
UserSettingsContextProvider.propTypes = {
|
|
146
146
|
context: PropTypes.any, // The application context
|
|
147
|
-
value: PropTypes.any, // The initial value of the context
|
|
148
147
|
children: PropTypes.any // The children components
|
|
149
148
|
};
|
|
150
149
|
export default withAppContext(UserSettingsContextProvider);
|