passbolt-styleguide 3.3.2 → 3.4.0-alpha1
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 +2 -2
- package/build/css/public.min.css +2 -2
- 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 +9 -0
- 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-app.js +1 -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 +40 -4
- package/package.json +7 -6
- package/src/img/third_party/ChromeWebStore_black.svg +1 -0
- package/src/img/third_party/ChromeWebStore_white.svg +1 -0
- package/src/img/third_party/edge-addon-black.svg +1 -0
- package/src/img/third_party/edge-addon-white.svg +1 -0
- package/src/locales/de-DE/common.json +11 -11
- package/src/locales/en-UK/common.json +11 -12
- package/src/locales/fr/common.json +750 -0
- package/src/locales/fr-FR/common.json +11 -11
- package/src/locales/sv-SE/common.json +11 -11
- package/src/react-extension/ExtApp.js +9 -6
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +1 -1
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +0 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +1 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +1 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +5 -8
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +1 -1
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +4 -1
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +4 -4
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +1 -1
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +1 -1
- package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.js +2 -3
- package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.stories.js +5 -9
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +2 -2
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +0 -3
- package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.js +1 -1
- package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.js +2 -2
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.js +1 -1
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +12 -14
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +1 -1
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.data.js +14 -0
- package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.js +65 -0
- package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.page.js +38 -0
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +15 -6
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.js +27 -0
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +8 -11
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +12 -15
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.test.stories.js +12 -15
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginProgress.test.stories.js +12 -15
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +12 -15
- package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +5 -11
- package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +1 -1
- package/src/react-extension/components/Common/Error/ShowErrorDetails/ShowErrorDetails.js +1 -1
- package/src/react-extension/components/Common/Icons/Icon.test.stories.js +3 -1
- package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.js +2 -1
- package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.js +1 -1
- package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.js +1 -1
- package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.stories.js +34 -0
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +14 -4
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayDragResource.js +68 -0
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +9 -42
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.page.js +4 -1
- package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +5 -11
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +6 -10
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +5 -11
- package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.test.stories.js +0 -1
- package/src/react-extension/components/Resource/FilterResourcesByFolders/DisplayDragFolderItem.js +109 -0
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.js +40 -192
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.data.js +10 -5
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.js +9 -12
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.page.js +5 -1
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +0 -1
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.js +83 -58
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.data.js +52 -59
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.js +25 -20
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.page.js +11 -5
- package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.stories.js +0 -1
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.data.js +47 -0
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.js +34 -3
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.page.js +46 -9
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.stories.js +0 -1
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +124 -4
- package/src/react-extension/components/Resource/FilterResourcesByText/FilterResourcesByText.test.stories.js +0 -2
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +6 -10
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +5 -11
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.js +3 -3
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.js +3 -3
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +5 -11
- package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +8 -14
- package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +5 -11
- package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +8 -14
- package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +8 -15
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +0 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +0 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +0 -1
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +0 -3
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +0 -6
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +0 -5
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +0 -7
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +0 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +0 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +0 -2
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +0 -1
- package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +0 -2
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +0 -4
- package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.js +1 -1
- package/src/react-extension/components/Share/ShareDialog.test.stories.js +5 -9
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +5 -9
- package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +3 -1
- package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +5 -8
- package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +5 -8
- package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +3 -1
- package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.stories.js +5 -8
- package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.test.stories.js +0 -1
- package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.test.stories.js +0 -2
- package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +8 -11
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +8 -11
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +8 -12
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +5 -8
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +5 -8
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +5 -8
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.stories.js +8 -11
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +8 -11
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +55 -2
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.data.js +6 -0
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +54 -6
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +6 -0
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +21 -6
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +7 -10
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.js +2 -2
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +5 -8
- package/src/react-extension/contexts/ApiAppContext.js +1 -1
- package/src/react-extension/contexts/ApiRecoverContext.js +1 -1
- package/src/react-extension/contexts/ApiSetupContext.js +1 -1
- package/src/react-extension/contexts/DragContext.js +122 -0
- package/src/react-extension/contexts/DragContext.test.js +53 -0
- package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +42 -7
- package/src/react-quickaccess/components/AnimatedSwitch/AnimatedSwitch.js +3 -3
- package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgressPage.test.stories.js +3 -4
- package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.test.stories.js +6 -6
- package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +7 -3
- package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.test.stories.js +6 -6
- package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.test.stories.js +6 -6
- package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.test.stories.js +6 -6
- package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +7 -3
- package/src/react-quickaccess/components/Header/Header.test.stories.js +3 -6
- package/src/react-quickaccess/components/HomePage/HomePage.test.stories.js +13 -9
- package/src/react-quickaccess/components/LoginPage/LoginPage.js +41 -5
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +3 -5
- package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.test.stories.js +3 -5
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +5 -5
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.stories.js +5 -5
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.stories.js +5 -5
- package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.stories.js +4 -2
- package/src/react-quickaccess/components/Search/Search.test.stories.js +3 -5
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +6 -2
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +9 -2
- package/src/react-web-integration/lib/InForm/InFormCallToActionField.js +3 -3
- package/src/react-web-integration/lib/InForm/InFormManager.js +12 -6
- package/src/react-web-integration/lib/InForm/InformMenuField.js +1 -1
- package/src/shared/lib/Browser/detectBrowserName.js +2 -1
- package/src/img/third_party/ChromeWebStore_black.png +0 -0
- package/src/img/third_party/ChromeWebStore_white.png +0 -0
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import ChooseSecurityToken from "./ChooseSecurityToken";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <ChooseSecurityToken {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import CreateGpgKey from "./CreateGpgKey";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <CreateGpgKey {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import DisplayBrowserNotSupported from "./DisplayBrowserNotSupported";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <DisplayBrowserNotSupported {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import DisplayExpiredTokenError from "./DisplayExpiredTokenError";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <DisplayExpiredTokenError {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import DisplayRequireInvitationError from "./DisplayRequireInvitationError";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <DisplayRequireInvitationError {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import DisplayUnexpectedError from "./DisplayUnexpectedError";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <DisplayUnexpectedError {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import DownloadRecoveryKit from "./DownloadRecoveryKit";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <DownloadRecoveryKit {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import EnterNameForm from "./EnterNameForm";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <EnterNameForm {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import EnterUsernameForm from "./EnterUsernameForm";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <EnterUsernameForm {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default props
|
|
3
|
+
* @returns {{dialogContext: {open: jest.Mock}, context: {onCheckIsAuthenticatedRequested: jest.Mock}}}
|
|
4
|
+
*/
|
|
5
|
+
export function defaultProps() {
|
|
6
|
+
return {
|
|
7
|
+
context: {
|
|
8
|
+
onCheckIsAuthenticatedRequested: jest.fn()
|
|
9
|
+
},
|
|
10
|
+
dialogContext: {
|
|
11
|
+
open: jest.fn()
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Passbolt ~ Open source password manager for teams
|
|
3
|
+
* Copyright (c) 2020 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) 2020 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.3.1
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Unit tests on SessionExpired in regard of specifications
|
|
17
|
+
*/
|
|
18
|
+
import {defaultProps} from "./HandleSessionExpired.test.data";
|
|
19
|
+
import HandleSessionExpiredPage from "./HandleSessionExpired.test.page";
|
|
20
|
+
import NotifyExpiredSession from "../NotifyExpiredSession/NotifyExpiredSession";
|
|
21
|
+
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
jest.resetModules();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
describe("As LU I should handle session expired", () => {
|
|
27
|
+
const props = defaultProps(); // The props to pass
|
|
28
|
+
const mockContextRequest = implementation => jest.spyOn(props.context, 'onCheckIsAuthenticatedRequested').mockImplementation(implementation);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* I should see the session expired dialog
|
|
32
|
+
*/
|
|
33
|
+
beforeEach(() => {
|
|
34
|
+
jest.useFakeTimers();
|
|
35
|
+
new HandleSessionExpiredPage(props);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
afterEach(() => {
|
|
39
|
+
jest.clearAllTimers();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('As LU I should have no change if the session is not expired', () => {
|
|
43
|
+
// Mock the request function to make it the expected result
|
|
44
|
+
const requestMockImpl = () => true;
|
|
45
|
+
mockContextRequest(requestMockImpl);
|
|
46
|
+
expect(props.context.onCheckIsAuthenticatedRequested).not.toBeCalled();
|
|
47
|
+
// Fast-forward until all timers have been executed
|
|
48
|
+
jest.runOnlyPendingTimers();
|
|
49
|
+
expect(props.context.onCheckIsAuthenticatedRequested).toHaveBeenCalled();
|
|
50
|
+
expect(props.dialogContext.open).not.toBeCalled();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
it('As LU I should open a dialog if the session is expired', async () => {
|
|
55
|
+
const requestMockImpl = () => false;
|
|
56
|
+
mockContextRequest(requestMockImpl);
|
|
57
|
+
// Fast-forward until all timers have been executed
|
|
58
|
+
jest.runOnlyPendingTimers();
|
|
59
|
+
// Need 2 promises resolved to open the dialog
|
|
60
|
+
await Promise.resolve();
|
|
61
|
+
await Promise.resolve();
|
|
62
|
+
expect(props.context.onCheckIsAuthenticatedRequested).toHaveBeenCalled();
|
|
63
|
+
expect(props.dialogContext.open).toHaveBeenCalledWith(NotifyExpiredSession);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* Passbolt ~ Open source password manager for teams
|
|
4
|
+
* Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
5
|
+
*
|
|
6
|
+
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
|
7
|
+
* For full copyright and license information, please see the LICENSE.txt
|
|
8
|
+
* Redistributions of files must retain the above copyright notice.
|
|
9
|
+
*
|
|
10
|
+
* @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
11
|
+
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
|
12
|
+
* @link https://www.passbolt.com Passbolt(tm)
|
|
13
|
+
* @since 3.3.1
|
|
14
|
+
*/
|
|
15
|
+
import {render} from "@testing-library/react";
|
|
16
|
+
import React from "react";
|
|
17
|
+
import {BrowserRouter as Router} from "react-router-dom";
|
|
18
|
+
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
19
|
+
import HandleSessionExpired from "./HandleSessionExpired";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The HandleSessionExpired component represented as a page
|
|
23
|
+
*/
|
|
24
|
+
export default class HandleSessionExpiredPage {
|
|
25
|
+
/**
|
|
26
|
+
* Default constructor
|
|
27
|
+
* @param props Props to attach
|
|
28
|
+
*/
|
|
29
|
+
constructor(props) {
|
|
30
|
+
this._page = render(
|
|
31
|
+
<MockTranslationProvider>
|
|
32
|
+
<Router>
|
|
33
|
+
<HandleSessionExpired {...props}/>
|
|
34
|
+
</Router>
|
|
35
|
+
</MockTranslationProvider>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
}
|
package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
|
-
import "../../../../css/themes/default/ext_authentication.css";
|
|
4
|
-
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
5
3
|
import {AuthenticationContext} from "../../../contexts/AuthenticationContext";
|
|
6
4
|
import ImportGpgKey from "./ImportGpgKey";
|
|
7
5
|
|
|
@@ -16,21 +14,20 @@ const context = {
|
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
const Template = args =>
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
<div
|
|
22
|
-
<div className="
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
</MemoryRouter>
|
|
27
|
-
</div>
|
|
17
|
+
<AuthenticationContext.Provider value={context}>
|
|
18
|
+
<div id="container" className="container page login">
|
|
19
|
+
<div className="content">
|
|
20
|
+
<div className="login-form">
|
|
21
|
+
<MemoryRouter initialEntries={['/']}>
|
|
22
|
+
<Route component={routerProps => <ImportGpgKey {...args} {...routerProps}/>}></Route>
|
|
23
|
+
</MemoryRouter>
|
|
28
24
|
</div>
|
|
29
25
|
</div>
|
|
30
|
-
</
|
|
31
|
-
</
|
|
32
|
-
|
|
26
|
+
</div>
|
|
27
|
+
</AuthenticationContext.Provider>;
|
|
33
28
|
|
|
34
29
|
|
|
35
30
|
export const Initial = Template.bind({});
|
|
36
|
-
|
|
31
|
+
Initial.parameters = {
|
|
32
|
+
css: "ext_authentication"
|
|
33
|
+
};
|
|
@@ -18,7 +18,8 @@ import PropTypes from "prop-types";
|
|
|
18
18
|
import {Trans, withTranslation} from "react-i18next";
|
|
19
19
|
|
|
20
20
|
const CHROME_STORE_BROWSER_EXTENSION_URL = "https://chrome.google.com/webstore/detail/passbolt-extension/didegimhafipceonhjepacocaffmoppf";
|
|
21
|
-
const FIREFOX_STORE_BROWSER_EXTENSION_URL = "https://addons.mozilla.org/
|
|
21
|
+
const FIREFOX_STORE_BROWSER_EXTENSION_URL = "https://addons.mozilla.org/firefox/addon/passbolt";
|
|
22
|
+
const EDGE_STORE_BROWSER_EXTENSION_URL = "https://microsoftedge.microsoft.com/addons/detail/passbolt-extension/ljeppgjhohmhpbdhjjjbiflabdgfkhpo";
|
|
22
23
|
|
|
23
24
|
class InstallExtension extends Component {
|
|
24
25
|
constructor(props) {
|
|
@@ -31,8 +32,11 @@ class InstallExtension extends Component {
|
|
|
31
32
|
* Returns the default component state
|
|
32
33
|
*/
|
|
33
34
|
getDefaultState() {
|
|
35
|
+
const currentTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? "dark" : "light";
|
|
36
|
+
|
|
34
37
|
return {
|
|
35
|
-
browserName: detectBrowserName()
|
|
38
|
+
browserName: detectBrowserName(),
|
|
39
|
+
theme: currentTheme
|
|
36
40
|
};
|
|
37
41
|
}
|
|
38
42
|
|
|
@@ -50,13 +54,16 @@ class InstallExtension extends Component {
|
|
|
50
54
|
* @returns {string}
|
|
51
55
|
*/
|
|
52
56
|
get browserStoreThumbnailUrl() {
|
|
57
|
+
const color = this.state.theme === "dark" ? "white" : "black";
|
|
58
|
+
|
|
53
59
|
switch (this.state.browserName) {
|
|
54
|
-
case BROWSER_NAMES.CHROME:
|
|
55
|
-
return `${this.props.context.trustedDomain}/img/third_party/ChromeWebStore_black.png`; // @todo _white if theme midgar
|
|
56
60
|
case BROWSER_NAMES.FIREFOX:
|
|
57
|
-
return `${this.props.context.trustedDomain}/img/third_party/
|
|
61
|
+
return `${this.props.context.trustedDomain}/img/third_party/FirefoxAMO_${color}.svg`;
|
|
62
|
+
case BROWSER_NAMES.EDGE:
|
|
63
|
+
return `${this.props.context.trustedDomain}/img/third_party/edge-addon-${color}.svg`;
|
|
64
|
+
case BROWSER_NAMES.CHROME:
|
|
58
65
|
default:
|
|
59
|
-
return `${this.props.context.trustedDomain}/img/third_party/
|
|
66
|
+
return `${this.props.context.trustedDomain}/img/third_party/ChromeWebStore_${color}.svg`;
|
|
60
67
|
}
|
|
61
68
|
}
|
|
62
69
|
|
|
@@ -72,6 +79,8 @@ class InstallExtension extends Component {
|
|
|
72
79
|
return CHROME_STORE_BROWSER_EXTENSION_URL;
|
|
73
80
|
case BROWSER_NAMES.FIREFOX:
|
|
74
81
|
return FIREFOX_STORE_BROWSER_EXTENSION_URL;
|
|
82
|
+
case BROWSER_NAMES.EDGE:
|
|
83
|
+
return EDGE_STORE_BROWSER_EXTENSION_URL;
|
|
75
84
|
default:
|
|
76
85
|
return CHROME_STORE_BROWSER_EXTENSION_URL;
|
|
77
86
|
}
|
package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.js
CHANGED
|
@@ -19,6 +19,22 @@
|
|
|
19
19
|
import InstallExtensionTestPage from "./InstallExtension.test.page";
|
|
20
20
|
import {defaultProps} from "./InstallExtension.test.data";
|
|
21
21
|
|
|
22
|
+
beforeAll(() => {
|
|
23
|
+
Object.defineProperty(window, 'matchMedia', {
|
|
24
|
+
writable: true,
|
|
25
|
+
value: jest.fn().mockImplementation(query => ({
|
|
26
|
+
matches: false,
|
|
27
|
+
media: query,
|
|
28
|
+
onchange: null,
|
|
29
|
+
addListener: jest.fn(),
|
|
30
|
+
removeListener: jest.fn(),
|
|
31
|
+
addEventListener: jest.fn(),
|
|
32
|
+
removeEventListener: jest.fn(),
|
|
33
|
+
dispatchEvent: jest.fn(),
|
|
34
|
+
})),
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
22
38
|
beforeEach(() => {
|
|
23
39
|
jest.resetModules();
|
|
24
40
|
});
|
|
@@ -68,6 +84,17 @@ describe("As AN I should see install extension page", () => {
|
|
|
68
84
|
expect(page.linkContent).toBe('Refresh to detect extension');
|
|
69
85
|
});
|
|
70
86
|
|
|
87
|
+
it('As AN I should see the install extension for Edge', () => {
|
|
88
|
+
Object.defineProperty(window, "navigator", {
|
|
89
|
+
value: {userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34"},
|
|
90
|
+
writable: true
|
|
91
|
+
});
|
|
92
|
+
window.chrome = {runtime: "true"};
|
|
93
|
+
page = new InstallExtensionTestPage();
|
|
94
|
+
// browser image
|
|
95
|
+
expect(page.browser.className).toBe("browser-webstore edge");
|
|
96
|
+
});
|
|
97
|
+
|
|
71
98
|
it('As AN I should be able to refresh the page', async() => {
|
|
72
99
|
Object.defineProperty(window, "location", {
|
|
73
100
|
value: {reload: jest.fn()},
|