passbolt-styleguide
Version:
Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.
128 lines (121 loc) • 10.6 kB
JavaScript
/**
* 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.6.0
*/
import EntitySchema from "../abstract/entitySchema";
import EntityValidationError from "../abstract/entityValidationError";
import AccountRecoveryUserSettingEntity from "./accountRecoveryUserSettingEntity";
describe("AccountRecoveryUserSetting entity", () => {
it("schema must validate", () => {
EntitySchema.validateSchema(
AccountRecoveryUserSettingEntity.ENTITY_NAME,
AccountRecoveryUserSettingEntity.getSchema(),
);
});
it("constructor works if valid minimal DTO is provided", () => {
const dto = {
status: "approved",
};
const entity = new AccountRecoveryUserSettingEntity(dto);
expect(entity.toDto()).toEqual(dto);
});
it("constructor works if valid DTO is provided with optional fields", () => {
const dto = {
id: "d4c0e643-3967-443b-93b3-102d902c4510",
user_id: "d4c0e643-3967-443b-93b3-102d902c4511",
status: "approved",
created: "2020-05-04T20:31:45+00:00",
modified: "2020-05-04T20:31:45+00:00",
created_by: "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
modified_by: "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
};
const entity = new AccountRecoveryUserSettingEntity(dto);
expect(entity.toDto()).toEqual(dto);
});
it("constructor works with associated 'account recovery private key'", () => {
const dto = {
id: "d4c0e643-3967-443b-93b3-102d902c4510",
user_id: "d4c0e643-3967-443b-93b3-102d902c4511",
status: "approved",
created: "2020-05-04T20:31:45+00:00",
modified: "2020-05-04T20:31:45+00:00",
created_by: "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
modified_by: "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
account_recovery_private_key: {
data: "-----BEGIN PGP MESSAGE-----\n\n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\nAWR9kkU+WRDefv4aQLc9vKpZFjhSpCFqwK0Y\n=GVs3\n-----END PGP MESSAGE-----\n",
},
};
const entity = new AccountRecoveryUserSettingEntity(dto);
expect(entity.toDto().account_recovery_private_key).toBeUndefined();
const contain = { account_recovery_private_key: true };
expect(entity.toDto(contain)).toEqual(dto);
});
it("constructor returns validation error if dto required fields are missing", () => {
try {
new AccountRecoveryUserSettingEntity({});
} catch (error) {
expect(error instanceof EntityValidationError).toBe(true);
expect(error.hasError("status", "required")).toBe(true);
}
});
it("constructor returns validation error if dto fields are invalid", () => {
try {
new AccountRecoveryUserSettingEntity({ id: "not-valid-uuid" });
expect(false).toBe(true);
} catch (error) {
expect(error instanceof EntityValidationError).toBe(true);
expect(error.hasError("id", "format")).toBe(true);
}
try {
new AccountRecoveryUserSettingEntity({ user_id: "not-valid-uuid" });
expect(false).toBe(true);
} catch (error) {
expect(error instanceof EntityValidationError).toBe(true);
expect(error.hasError("user_id", "format")).toBe(true);
}
try {
new AccountRecoveryUserSettingEntity({ status: "not-valid-status" });
expect(false).toBe(true);
} catch (error) {
expect(error instanceof EntityValidationError).toBe(true);
expect(error.hasError("status", "enum")).toBe(true);
}
try {
new AccountRecoveryUserSettingEntity({ created: "not-valid-date" });
expect(false).toBe(true);
} catch (error) {
expect(error instanceof EntityValidationError).toBe(true);
expect(error.hasError("created", "format")).toBe(true);
}
try {
new AccountRecoveryUserSettingEntity({ modified: "not-valid-date" });
expect(false).toBe(true);
} catch (error) {
expect(error instanceof EntityValidationError).toBe(true);
expect(error.hasError("modified", "format")).toBe(true);
}
try {
new AccountRecoveryUserSettingEntity({ created_by: "not-valid-uuid" });
expect(false).toBe(true);
} catch (error) {
expect(error instanceof EntityValidationError).toBe(true);
expect(error.hasError("created_by", "format")).toBe(true);
}
try {
new AccountRecoveryUserSettingEntity({ modified_by: "not-valid-uuid" });
expect(false).toBe(true);
} catch (error) {
expect(error instanceof EntityValidationError).toBe(true);
expect(error.hasError("modified_by", "format")).toBe(true);
}
});
});