UNPKG

passbolt-styleguide

Version:

Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.

204 lines (187 loc) 11.1 kB
/** * Passbolt ~ Open source password manager for teams * Copyright (c) 2020 Passbolt SA (https://www.passbolt.com) * * Licensed under GNU Affero General Public License version 3 of the or any later version. * For full copyright and license information, please see the LICENSE.txt * Redistributions of files must retain the above copyright notice. * * @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com) * @license https://opensource.org/licenses/AGPL-3.0 AGPL License * @link https://www.passbolt.com Passbolt(tm) * @since 2.11.0 */ /** * Unit tests on AdministrationWorkspace in regard of specifications */ import React from "react"; import { defaultProps } from "./AdministrationWorkspace.test.data"; import AdministrationWorkspacePage from "./AdministrationWorkspace.test.page"; import { waitFor } from "@testing-library/dom"; import { AdministrationWorkspaceMenuTypes } from "../../contexts/AdministrationWorkspaceContext"; import each from "jest-each"; jest.mock("./DisplayAdministrationMenu/DisplayAdministrationMenu", () => () => <></>); jest.mock("./DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb", () => () => <></>); jest.mock("./DisplayMfaAdministration/DisplayMfaAdministration", () => () => <span className="mfa-details"></span>); jest.mock("./DisplayPasswordPoliciesAdministration/DisplayPasswordPoliciesAdministration", () => () => ( <span className="password-policies-details"></span> )); jest.mock("./DisplaySecretHistoryAdministration/DisplaySecretHistoryAdministration", () => () => ( <span className="secret-history-details"></span> )); jest.mock("./DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration", () => () => ( <span className="user-directory-details"></span> )); jest.mock("./DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration", () => () => ( <span className="email-notifications-details"></span> )); jest.mock("./DisplaySubscriptionKey/DisplaySubscriptionKey", () => () => ( <span className="subscription-key-details"></span> )); jest.mock("./DisplayInternationalizationAdministration/DisplayInternationalizationAdministration", () => () => ( <span className="internationalization-details"></span> )); jest.mock("./ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings", () => () => ( <span className="account-recovery-details"></span> )); jest.mock("./ManageSmtpAdministrationSettings/ManageSmtpAdministrationSettings", () => () => ( <span className="smtp-settings-details"></span> )); jest.mock("./DisplaySelfRegistrationAdministration/DisplaySelfRegistrationAdministration", () => () => ( <span className="self-registration-details"></span> )); jest.mock("./ManageSsoSettings/ManageSsoSettings", () => () => <span className="sso-settings-details"></span>); jest.mock("./DisplayRbacAdministration/DisplayRbacAdministration", () => () => ( <span className="rbacs-settings-details"></span> )); jest.mock("./DisplayAdministrationUserPassphrasePolicies/DisplayAdministrationUserPassphrasePolicies", () => () => ( <span className="user-passphrase-policies-details"></span> )); jest.mock("./DisplayAdministrationPasswordExpiry/DisplayAdministrationPasswordExpiry", () => () => ( <span className="password-expiry-details"></span> )); jest.mock( "./DisplayContentTypesEncryptedMetadataAdministration/DisplayContentTypesEncryptedMetadataAdministration", () => () => <span className="content-types-encrypted-metadata"></span>, ); jest.mock("./DisplayContentTypesMetadataKeyAdministration/DisplayContentTypesMetadataKeyAdministration", () => () => ( <span className="content-types-metadata-key"></span> )); jest.mock("./DisplayMigrateMetadataAdministration/DisplayMigrateMetadataAdministration", () => () => ( <span className="migrate-metadata"></span> )); jest.mock( "./DisplayContentTypesAllowedContentTypesAdministration/DisplayContentTypesAllowedContentTypesAdministration", () => () => <span className="allow-content-types"></span>, ); jest.mock("./DisplayPasswordPoliciesAdministrationTeasing/DisplayPasswordPoliciesAdministrationTeasing", () => () => ( <span className="password-policies-details-teasing"></span> )); jest.mock("./DisplayUserDirectoryAdministrationTeasing/DisplayUserDirectoryAdministrationTeasing", () => () => ( <span className="user-directory-details-teasing"></span> )); jest.mock("./DisplaySubscriptionKeyTeasing/DisplaySubscriptionKeyTeasing", () => () => ( <span className="subscription-key-details-teasing"></span> )); jest.mock( "./ManageAccountRecoveryAdministrationSettingsTeasing/ManageAccountRecoveryAdministrationSettingsTeasing", () => () => <span className="account-recovery-details-teasing"></span>, ); jest.mock( "./DisplayAdministrationUserPassphrasePoliciesTeasing/DisplayAdministrationUserPassphrasePoliciesTeasing", () => () => <span className="user-passphrase-policies-details-teasing"></span>, ); jest.mock("./DisplayMfaPolicyAdministrationTeasing/DisplayMfaPolicyAdministrationTeasing", () => () => ( <span className="mfa-policy-details-teasing"></span> )); jest.mock("./ManageSsoSettingsTeasing/ManageSsoSettingsTeasing", () => () => <span className="sso-teasing"></span>); beforeEach(() => { jest.resetModules(); }); const scenarios = [ { selectedMenu: AdministrationWorkspaceMenuTypes.MFA, field: "isMfaSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.MFA_POLICY, field: "isMfaPolicySelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.PASSWORD_POLICIES, field: "isPasswordPoliciesSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.USER_DIRECTORY, field: "isUserDirectorySelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.EMAIL_NOTIFICATION, field: "isEmailNotificationsSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SUBSCRIPTION, field: "isSubscriptionKeySelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.INTERNATIONALIZATION, field: "isInternationalizationSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.ACCOUNT_RECOVERY, field: "isAccountRecoverySelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SMTP_SETTINGS, field: "isSmtpSettingsSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SELF_REGISTRATION, field: "isSelfRegistrationSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SSO, field: "isSsoSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.RBAC, field: "isRbacSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.USER_PASSPHRASE_POLICIES, field: "isUserPasphrasePoliciesSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.PASSWORD_EXPIRY, field: "isPasswordExpirySelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.CONTENT_TYPES_ENCRYPTED_METADATA, field: "isContentTypesEncryptedMetadataSelected", }, { selectedMenu: AdministrationWorkspaceMenuTypes.CONTENT_TYPES_METADATA_KEY, field: "isContentTypesMetadataSelected", }, { selectedMenu: AdministrationWorkspaceMenuTypes.MIGRATE_METADATA, field: "isMigrateMetadataSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.ALLOW_CONTENT_TYPES, field: "isAllowedContentTypesSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.METADATA_GETTING_STARTED, field: "isGetStartedMetadataSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SCIM, field: "isScimSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SECRET_HISTORY, field: "isSecretHistorySelected" }, ]; const ceScenarios = [ { selectedMenu: AdministrationWorkspaceMenuTypes.MFA, field: "isMfaSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.MFA_POLICY, field: "isMfaPolicyTeasingSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.PASSWORD_POLICIES, field: "isPasswordPoliciesTeasingSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.USER_DIRECTORY, field: "isUserDirectoryTeasingSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.EMAIL_NOTIFICATION, field: "isEmailNotificationsSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SUBSCRIPTION, field: "isSubscriptionKeyTeasingSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.INTERNATIONALIZATION, field: "isInternationalizationSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.ACCOUNT_RECOVERY, field: "isAccountRecoveryTeasingSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SMTP_SETTINGS, field: "isSmtpSettingsSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SELF_REGISTRATION, field: "isSelfRegistrationSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SSO, field: "isSsoTeasingSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.RBAC, field: "isRbacSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.USER_PASSPHRASE_POLICIES, field: "isUserPasphrasePoliciesTeasingSelected", }, { selectedMenu: AdministrationWorkspaceMenuTypes.PASSWORD_EXPIRY, field: "isPasswordExpirySelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.CONTENT_TYPES_ENCRYPTED_METADATA, field: "isContentTypesEncryptedMetadataSelected", }, { selectedMenu: AdministrationWorkspaceMenuTypes.CONTENT_TYPES_METADATA_KEY, field: "isContentTypesMetadataSelected", }, { selectedMenu: AdministrationWorkspaceMenuTypes.MIGRATE_METADATA, field: "isMigrateMetadataSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.ALLOW_CONTENT_TYPES, field: "isAllowedContentTypesSelected" }, { selectedMenu: AdministrationWorkspaceMenuTypes.SCIM, field: "isScimTeasingSelected" }, ]; each(scenarios).describe("Display Administration Workspace", (currentScenario) => { it(`As AD, I should see: ${currentScenario.selectedMenu}`, async () => { expect.assertions(scenarios.length); const page = new AdministrationWorkspacePage(defaultProps(currentScenario.selectedMenu)); await waitFor(() => {}); expect(page[currentScenario.field]).toBeTruthy(); const unselectedMenuItem = scenarios.filter((scenario) => scenario !== currentScenario); for (let i = 0; i < unselectedMenuItem.length; i++) { const fieldName = unselectedMenuItem[i]; expect(page[fieldName]).toBeFalsy(); } }); }); each(ceScenarios).describe("Display Administration Workspace for CE Admins", (currentScenario) => { it(`As AD, I should see: ${currentScenario.selectedMenu}`, async () => { expect.assertions(ceScenarios.length); const props = defaultProps(currentScenario.selectedMenu, true); jest.spyOn(props.context.siteSettings, "isCommunityEdition", "get").mockReturnValue(true); const page = new AdministrationWorkspacePage(props); await waitFor(() => {}); expect(page[currentScenario.field]).toBeTruthy(); const unselectedMenuItem = ceScenarios.filter((scenario) => scenario !== currentScenario); for (let i = 0; i < unselectedMenuItem.length; i++) { const fieldName = unselectedMenuItem[i]; expect(page[fieldName]).toBeFalsy(); } }); });