UNPKG

passbolt-styleguide

Version:

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

178 lines (150 loc) 6.65 kB
/** * Passbolt ~ Open source password manager for teams * Copyright (c) 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) Passbolt SA (https://www.passbolt.com) * @license https://opensource.org/licenses/AGPL-3.0 AGPL License * @link https://www.passbolt.com Passbolt(tm) * @since 5.10.0 */ import EntitySchema from "../abstract/entitySchema"; import * as assertEntityProperty from "../../../../../test/assert/assertEntityProperty"; import ExportPoliciesSettingsEntity from "./ExportPoliciesSettingsEntity"; import { defaultExportPoliciesSettingsDto, envExportPoliciesSettingsDto, dbExportPoliciesSettingsDto, fileExportPoliciesSettingsDto, exportPoliciesSettingsWithMetadataDto, SETTINGS_SOURCE_DEFAULT, SETTINGS_SOURCE_ENV, SETTINGS_SOURCE_DB, SETTINGS_SOURCE_FILE, } from "./ExportPoliciesSettingsEntity.test.data"; describe("ExportPoliciesSettingsEntity", () => { describe("::getSchema", () => { it("schema must validate", () => { EntitySchema.validateSchema(ExportPoliciesSettingsEntity.ENTITY_NAME, ExportPoliciesSettingsEntity.getSchema()); }); it("validates id property", () => { assertEntityProperty.uuid(ExportPoliciesSettingsEntity, "id"); assertEntityProperty.notRequired(ExportPoliciesSettingsEntity, "id"); }); it("validates allow_csv_format property", () => { assertEntityProperty.boolean(ExportPoliciesSettingsEntity, "allow_csv_format"); assertEntityProperty.required(ExportPoliciesSettingsEntity, "allow_csv_format"); }); it("validates source property", () => { assertEntityProperty.string(ExportPoliciesSettingsEntity, "source"); assertEntityProperty.required(ExportPoliciesSettingsEntity, "source"); assertEntityProperty.enumeration(ExportPoliciesSettingsEntity, "source", [ SETTINGS_SOURCE_DEFAULT, SETTINGS_SOURCE_ENV, SETTINGS_SOURCE_DB, SETTINGS_SOURCE_FILE, ]); }); it("validates created property", () => { assertEntityProperty.dateTime(ExportPoliciesSettingsEntity, "created"); assertEntityProperty.notRequired(ExportPoliciesSettingsEntity, "created"); }); it("validates created_by property", () => { assertEntityProperty.uuid(ExportPoliciesSettingsEntity, "created_by"); assertEntityProperty.notRequired(ExportPoliciesSettingsEntity, "created_by"); }); it("validates modified property", () => { assertEntityProperty.dateTime(ExportPoliciesSettingsEntity, "modified"); assertEntityProperty.notRequired(ExportPoliciesSettingsEntity, "modified"); }); it("validates modified_by property", () => { assertEntityProperty.uuid(ExportPoliciesSettingsEntity, "modified_by"); assertEntityProperty.notRequired(ExportPoliciesSettingsEntity, "modified_by"); }); }); describe("::constructor", () => { it("works if valid minimal DTO is provided", () => { expect.assertions(3); const dto = defaultExportPoliciesSettingsDto(); const entity = new ExportPoliciesSettingsEntity(dto); expect(entity.toDto()).toEqual(dto); expect(entity.allowCsvFormat).toBe(true); expect(entity.source).toBe(SETTINGS_SOURCE_DEFAULT); }); it("works with env source DTO", () => { expect.assertions(2); const dto = envExportPoliciesSettingsDto(); const entity = new ExportPoliciesSettingsEntity(dto); expect(entity.allowCsvFormat).toBe(false); expect(entity.source).toBe(SETTINGS_SOURCE_ENV); }); it("works with db source DTO", () => { expect.assertions(2); const dto = dbExportPoliciesSettingsDto(); const entity = new ExportPoliciesSettingsEntity(dto); expect(entity.allowCsvFormat).toBe(true); expect(entity.source).toBe(SETTINGS_SOURCE_DB); }); it("works with file source DTO", () => { expect.assertions(2); const dto = fileExportPoliciesSettingsDto(); const entity = new ExportPoliciesSettingsEntity(dto); expect(entity.allowCsvFormat).toBe(false); expect(entity.source).toBe(SETTINGS_SOURCE_FILE); }); it("works if valid DTO with all fields is provided", () => { expect.assertions(8); const dto = exportPoliciesSettingsWithMetadataDto(); const entity = new ExportPoliciesSettingsEntity(dto); expect(entity.toDto()).toEqual(dto); expect(entity.id).toBe(dto.id); expect(entity.allowCsvFormat).toBe(dto.allow_csv_format); expect(entity.source).toBe(dto.source); expect(entity.created).toBe(dto.created); expect(entity.createdBy).toBe(dto.created_by); expect(entity.modified).toBe(dto.modified); expect(entity.modifiedBy).toBe(dto.modified_by); }); }); describe("::createFromDefault", () => { it("should create a valid entity without provided data", () => { expect.assertions(3); const entity = ExportPoliciesSettingsEntity.createFromDefault(); expect(entity.allowCsvFormat).toBe(false); expect(entity.source).toBe(SETTINGS_SOURCE_DEFAULT); expect(entity.id).toBeNull(); }); it("should create a valid entity with custom data", () => { expect.assertions(2); const entity = ExportPoliciesSettingsEntity.createFromDefault({ allow_csv_format: false, source: SETTINGS_SOURCE_ENV, }); expect(entity.allowCsvFormat).toBe(false); expect(entity.source).toBe(SETTINGS_SOURCE_ENV); }); }); describe("::ENTITY_NAME", () => { it("should return the correct entity name", () => { expect.assertions(1); expect(ExportPoliciesSettingsEntity.ENTITY_NAME).toBe("ExportPoliciesSettings"); }); }); describe("::static constants", () => { it("should have SETTINGS_SOURCE_DEFAULT constant", () => { expect(ExportPoliciesSettingsEntity.SETTINGS_SOURCE_DEFAULT).toBe(SETTINGS_SOURCE_DEFAULT); }); it("should have SETTINGS_SOURCE_ENV constant", () => { expect(ExportPoliciesSettingsEntity.SETTINGS_SOURCE_ENV).toBe(SETTINGS_SOURCE_ENV); }); it("should have SETTINGS_SOURCE_DB constant", () => { expect(ExportPoliciesSettingsEntity.SETTINGS_SOURCE_DB).toBe(SETTINGS_SOURCE_DB); }); it("should have SETTINGS_SOURCE_FILE constant", () => { expect(ExportPoliciesSettingsEntity.SETTINGS_SOURCE_FILE).toBe(SETTINGS_SOURCE_FILE); }); }); });