UNPKG

passbolt-styleguide

Version:

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

127 lines (106 loc) 5.99 kB
/** * Passbolt ~ Open source password manager for teams * Copyright (c) 2022 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) 2022 Passbolt SA (https://www.passbolt.com) * @license https://opensource.org/licenses/AGPL-3.0 AGPL License * @link https://www.passbolt.com Passbolt(tm) * @since 3.10.O */ import {enableFetchMocks} from 'jest-fetch-mock'; import {mockApiResponse} from '../../../../../test/mocks/mockApiResponse'; import {ActionFeedbackContext} from '../../../contexts/ActionFeedbackContext'; import {defaultAppContext} from '../../../contexts/ApiAppContext.test.data'; import {defaultProps, settingDto} from './DisplayMfaPolicyAdministration.test.data'; import DisplayMfaPolicyAdministrationPage from './DisplayMfaPolicyAdministration.test.page'; jest.mock('uuid'); /** * Unit tests on DisplaySelfRegistrationAdministration in regard of specifications */ describe("DisplayMfaPolicyAdministration", () => { beforeEach(() => { enableFetchMocks(); jest.resetModules(); }); let page; // The page to test against const props = defaultProps(); // The props to pass const context = defaultAppContext(); describe("As an administrator I can read MFA policies settings of my organization", () => { beforeEach(() => { fetch.doMockOnceIf(/mfa-policies\/settings*/, () => mockApiResponse(settingDto)); page = new DisplayMfaPolicyAdministrationPage(context, props); }); it('As a logged in administrator I can see the “MFA policy” settings in the administration workspace ', async() => { expect.assertions(14); expect(page.exists()).toBeTruthy(); expect(page.saveSettingsButton).not.toBeNull(); expect(page.title.textContent).toBe("MFA Policy"); expect(page.subtitle.textContent).toBe("Default users multi factor authentication policy"); expect(page.description.textContent).toBe("You can choose the default behaviour of multi factor authentication for all users."); //Remember toggle expect(page.subtitleRemember.textContent).toBe("Remember a device for a month"); expect(page.toggleRemember.checked).toBeTruthy(); expect(page.toggleRememberLabel.textContent).toBe('Allow “Remember this device for a month.“ option during MFA.'); // mandatory policy expect(page.mandatoryPolicy.checked).toBeFalsy(); expect(page.mandatoryPolicyName.textContent).toEqual("Mandatory"); expect(page.mandatoryPolicyInfo.textContent).toEqual("Users have to enable multi factor authentication. If they don't, they will be reminded every time they log in."); // opt-in policy expect(page.optInPolicy.value).toBeTruthy(); expect(page.optInPolicyName.textContent).toEqual("Opt-in (default)"); expect(page.optInPolicyInfo.textContent).toEqual("Users have the choice to enable multi factor authentication in their profile workspace."); }); it('As a logged in administrator I can see an help box in the MFA policy administration screen ', async() => { expect.assertions(5); expect(page.helpBox).not.toBeNull(); expect(page.helpBoxTitle.textContent).toBe("Need some help?"); expect(page.helpBoxDescription.textContent).toBe("For more information about MFA policy settings, checkout the dedicated page on the help website."); expect(page.helpBoxButton.textContent).toEqual("Read the documentation"); expect(page.helpBoxButton.getAttribute('href')).toEqual('https://help.passbolt.com/configure/mfa-policy'); }); }); describe("As a logged in administrator I can update the MFA policy of my organization", () => { beforeEach(() => { fetch.doMockOnceIf(/mfa-policies\/settings*/, () => mockApiResponse(settingDto)); page = new DisplayMfaPolicyAdministrationPage(context, props); }); it('As a logged in administrator I should see a change banner when I change a setting of the MFA policy', async() => { expect.assertions(3); expect(page.settingsChangedBanner).toBeNull(); await page.selectMandatory(); expect(page.settingsChangedBanner).not.toBeNull(); //put back the value should not show a banner again await page.selectOptin(); expect(page.settingsChangedBanner).toBeNull(); }); it('As a logged in administrator I can update the “MFA policy” setting <<Success>', async() => { expect.assertions(3); //save mock fetch.doMockOnceIf(/mfa-policies\/settings*/, () => mockApiResponse({})); //get settings fetch.doMockOnceIf(/mfa-policies\/settings*/, () => mockApiResponse(settingDto)); jest.spyOn(ActionFeedbackContext._currentValue, 'displaySuccess').mockImplementation(() => {}); await page.selectMandatory(); expect(page.settingsChangedBanner).not.toBeNull(); await page.clickOnSave(); expect(ActionFeedbackContext._currentValue.displaySuccess).toHaveBeenCalledWith("The MFA policy settings were updated."); expect(page.settingsChangedBanner).toBeNull(); }); it('As a logged in administrator I can update the “MFA policy” setting <<Error>', async() => { expect.assertions(3); //save mock const error = {message: "The service is unavailable"}; fetch.doMockOnceIf(/mfa-policies\/settings*/, () => Promise.reject(error)); jest.spyOn(ActionFeedbackContext._currentValue, 'displayError').mockImplementation(() => {}); await page.selectMandatory(); expect(page.settingsChangedBanner).not.toBeNull(); await page.clickOnSave(); expect(ActionFeedbackContext._currentValue.displayError).toHaveBeenCalledWith(error.message); expect(page.settingsChangedBanner).not.toBeNull(); }); }); });