UNPKG

passbolt-styleguide

Version:

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

137 lines (117 loc) 5.49 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.0 */ import { mockApiResponse } from "../../../../../test/mocks/mockApiResponse"; import { enableFetchMocks } from "jest-fetch-mock"; import { AdminMfaPolicyContextProvider } from "./AdministrationMfaPolicyContext"; import MfaPolicyViewModel from "../../../../shared/models/mfaPolicy/MfaPolicyViewModel"; import { MfaPolicyEnumerationTypes } from "../../../../shared/models/mfaPolicy/MfaPolicyEnumeration"; import { settingDto, defaultProps, } from "../../../components/Administration/DisplayMfaPolicyAdministration/DisplayMfaPolicyAdministration.test.data"; describe("AdministrationMfaPolicyContext", () => { let adminMfaPolicyContextProvider; // The adminMfaPolicyContextProvider to test const props = defaultProps(); // The props to pass const mockApiCalls = () => { fetch.doMockOnceIf(/mfa-policies\/settings*/, () => mockApiResponse(settingDto)); }; //Initialize context by default const initContext = async () => { mockApiCalls(); await adminMfaPolicyContextProvider.findSettings(); }; beforeEach(() => { jest.resetAllMocks(); adminMfaPolicyContextProvider = new AdminMfaPolicyContextProvider(props); mockState(adminMfaPolicyContextProvider); enableFetchMocks(); }); describe("AdministrationMfaPolicyContext::findSettings", () => { it("should get the current settings and store it in its state", async () => { expect.assertions(3); // Mock the call to API mockApiCalls(); const expectedResult = new MfaPolicyViewModel(settingDto); await adminMfaPolicyContextProvider.findSettings(); expect(adminMfaPolicyContextProvider.getSettings()).toEqual(expectedResult); expect(adminMfaPolicyContextProvider.getCurrentSettings()).toEqual(expectedResult); expect(adminMfaPolicyContextProvider.isProcessing()).toBeFalsy(); }); it("should set processing to true when loading settings", async () => { expect.assertions(1); adminMfaPolicyContextProvider.setProcessing(false); try { await adminMfaPolicyContextProvider.findSettings(); } catch { expect(adminMfaPolicyContextProvider.isProcessing()).toBeTruthy(); } }); }); describe("AdministrationMfaPolicyContext::hasSettingsChanges", () => { beforeEach(async () => { await initContext(); }); it("should return true if settings is different then current setting", () => { expect.assertions(1); adminMfaPolicyContextProvider.setSettings("policy", MfaPolicyEnumerationTypes.MANDATORY); expect(adminMfaPolicyContextProvider.hasSettingsChanges()).toBeTruthy(); }); it("should return false if settings is different then current setting", () => { expect.assertions(1); adminMfaPolicyContextProvider.setSettings("policy", MfaPolicyEnumerationTypes.MANDATORY); adminMfaPolicyContextProvider.setSettings("policy", MfaPolicyEnumerationTypes.OPTIN); expect(adminMfaPolicyContextProvider.hasSettingsChanges()).toBeFalsy(); }); }); describe("AdministrationMfaPolicyContext::clearContext", () => { beforeEach(async () => { await initContext(); }); it("should clear the context and set it by default", () => { expect.assertions(3); adminMfaPolicyContextProvider.setSettings("policy", MfaPolicyEnumerationTypes.MANDATORY); adminMfaPolicyContextProvider.clearContext(); expect(adminMfaPolicyContextProvider.isProcessing()).toBeTruthy(); expect(adminMfaPolicyContextProvider.getCurrentSettings()).toEqual(new MfaPolicyViewModel()); expect(adminMfaPolicyContextProvider.getSettings()).toEqual(new MfaPolicyViewModel()); }); }); describe("AdministrationMfaPolicyContext::save", () => { beforeEach(async () => { await initContext(); }); it("As a logged in administrator I can update the “MFA policy” setting", async () => { expect.assertions(3); fetch.doMockOnceIf(/mfa-policies\/settings*/, () => mockApiResponse({})); jest.spyOn(adminMfaPolicyContextProvider, "findSettings").mockImplementation(); await adminMfaPolicyContextProvider.save(); //Save should set processing to false in any case expect(adminMfaPolicyContextProvider.isProcessing()).toBeTruthy(); expect(adminMfaPolicyContextProvider.findSettings).toHaveBeenCalled(); expect(JSON.parse(fetch.mock.calls[1][1].body)).toEqual(expect.objectContaining(settingDto)); }); }); }); function mockState(adminMfaPolicyContextProvider) { const setStateMock = (state) => { let newState; if (typeof state === "function") { newState = state(adminMfaPolicyContextProvider.state); } else { newState = state; } adminMfaPolicyContextProvider.state = Object.assign(adminMfaPolicyContextProvider.state, newState); }; jest.spyOn(adminMfaPolicyContextProvider, "setState").mockImplementation(setStateMock); }