passbolt-styleguide
Version:
Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.
857 lines (699 loc) • 34.6 kB
JavaScript
/**
* 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.0.0
*/
/**
* Unit tests on SelectResourceForm in regard of specifications
*/
import SelectResourceFormPage from "./SelectResourceForm.test.page";
import { defaultProps } from "./SelectResourceForm.test.data";
import { waitFor } from "@testing-library/dom";
import { ResourceEditCreateFormEnumerationTypes } from "../../../../shared/models/resource/ResourceEditCreateFormEnumerationTypes";
import { defaultResourceFormDto } from "../../../../shared/models/entity/resource/resourceFormEntity.test.data";
import {
resourceTypePasswordAndDescriptionDto,
resourceTypePasswordDescriptionTotpDto,
resourceTypePasswordStringDto,
resourceTypeV5CustomFieldsDto,
resourceTypeV5DefaultTotpDto,
resourceTypeV5TotpDto,
TEST_RESOURCE_TYPE_PASSWORD_AND_DESCRIPTION,
TEST_RESOURCE_TYPE_PASSWORD_STRING,
} from "../../../../shared/models/entity/resourceType/resourceTypeEntity.test.data";
import ResourceTypeEntity from "../../../../shared/models/entity/resourceType/resourceTypeEntity";
import ResourceTypesCollection from "../../../../shared/models/entity/resourceType/resourceTypesCollection";
import { resourceTypesV4CollectionDto } from "../../../../shared/models/entity/resourceType/resourceTypesCollection.test.data";
import CustomFieldsCollection from "../../../../shared/models/entity/customField/customFieldsCollection";
import CustomFieldEntity from "../../../../shared/models/entity/customField/customFieldEntity";
beforeEach(() => {
jest.resetModules();
});
describe("SelectResourceForm", () => {
let page; // The page to test against
describe("As LU I can see the select resource form.", () => {
it("As LU I can close the resource sections.", async () => {
expect.assertions(2);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.getSectionItem(1)).toBeDefined();
await page.click(page.sidebarSectionsSecret);
await page.click(page.sidebarSectionMetadata);
expect(page.getSectionItem(1)).toBeUndefined();
});
it("As LU I do not see the resource description for v4 default.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
resource: defaultResourceFormDto({
resource_type_id: TEST_RESOURCE_TYPE_PASSWORD_AND_DESCRIPTION,
secret: { password: "" },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.getSectionItem(2)).toBeUndefined();
});
it("As LU I should see the upgrade resource cards for v4 default.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
resource: defaultResourceFormDto({
resource_type_id: TEST_RESOURCE_TYPE_PASSWORD_AND_DESCRIPTION,
secret: { password: "" },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.upgradeCard).toBeDefined();
});
it("As LU I should not see the upgrade resource v4 default if no resource type v5 corresponding.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceTypes: new ResourceTypesCollection(resourceTypesV4CollectionDto()),
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
resource: defaultResourceFormDto({
resource_type_id: TEST_RESOURCE_TYPE_PASSWORD_AND_DESCRIPTION,
secret: { password: "" },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.upgradeCard).toBeNull();
});
it("As LU I should not see the upgrade resource v4 default if props canUpgradeResource is false.", async () => {
expect.assertions(1);
const props = defaultProps({
canUpgradeResource: false,
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
resource: defaultResourceFormDto({
resource_type_id: TEST_RESOURCE_TYPE_PASSWORD_AND_DESCRIPTION,
secret: { password: "" },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.upgradeCard).toBeNull();
});
it("As LU I do not see the resource uris for v4 default.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
resource: defaultResourceFormDto({
resource_type_id: TEST_RESOURCE_TYPE_PASSWORD_AND_DESCRIPTION,
secret: { password: "" },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.getSectionItem(3)).toBeUndefined();
});
it("As LU I do not see the resource uris for v4 legacy.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
resource: defaultResourceFormDto({
resource_type_id: TEST_RESOURCE_TYPE_PASSWORD_STRING,
secret: { password: "" },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.getSectionItem(3)).toBeUndefined();
});
it("As LU the resource secret section password should be selected.", async () => {
expect.assertions(1);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("Passwords");
});
it("As LU I should not see the upgrade resource for a resource v5.", async () => {
expect.assertions(1);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.upgradeCard).toBeNull();
});
it("As LU the resource secret section totp should be selected.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5TotpDto()),
resource: defaultResourceFormDto({ secret: { totp: {} } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("TOTP");
});
it("As LU the resource secret section custom fields should be selected.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.CUSTOM_FIELDS,
resourceType: new ResourceTypeEntity(resourceTypeV5CustomFieldsDto()),
resource: defaultResourceFormDto({
secret: { custom_fields: new CustomFieldsCollection([CustomFieldEntity.createFromDefault().toDto()]) },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("Custom fields");
});
it("As LU the resource secret section note should be selected.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.NOTE,
resource: defaultResourceFormDto({ secret: { description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("Note");
});
it("As LU the resource secret section description should be selected.", async () => {
expect.assertions(1);
const props = defaultProps({ resourceFormSelected: ResourceEditCreateFormEnumerationTypes.DESCRIPTION });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("Description");
});
it("As LU the resource secret section description should be selected.", async () => {
expect.assertions(1);
const props = defaultProps({ resourceFormSelected: ResourceEditCreateFormEnumerationTypes.URIS });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("URIs");
});
it("As LU the resource metadata section appearance should be selected.", async () => {
expect.assertions(1);
const props = defaultProps({ resourceFormSelected: ResourceEditCreateFormEnumerationTypes.APPEARANCE });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("Appearance");
});
});
describe("As LU I can select another resource form.", () => {
it("As LU I can select the resource description sections from a password lead.", async () => {
expect.assertions(2);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("Passwords");
await page.click(page.menuDescription);
expect(props.onSelectForm).toHaveBeenCalledWith(
expect.any(Object),
ResourceEditCreateFormEnumerationTypes.DESCRIPTION,
);
});
it("As LU I can select the resource description sections from a totp lead.", async () => {
expect.assertions(2);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5TotpDto()),
resource: defaultResourceFormDto({ secret: { totp: {} } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("TOTP");
await page.click(page.menuDescription);
expect(props.onSelectForm).toHaveBeenCalledWith(
expect.any(Object),
ResourceEditCreateFormEnumerationTypes.DESCRIPTION,
);
});
it("As LU I can select the resource uris sections from a password lead.", async () => {
expect.assertions(2);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("Passwords");
await page.click(page.menuUris);
expect(props.onSelectForm).toHaveBeenCalledWith(expect.any(Object), ResourceEditCreateFormEnumerationTypes.URIS);
});
it("As LU I can select the resource description sections from a totp lead.", async () => {
expect.assertions(2);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.sectionItemSelected.textContent).toStrictEqual("Passwords");
await page.click(page.getSectionItem(2));
expect(props.onSelectForm).toHaveBeenCalledWith(
expect.any(Object),
ResourceEditCreateFormEnumerationTypes.APPEARANCE,
);
});
});
describe("As LU I can see secret that could be added.", () => {
it("As LU I can see secrets that can be added for a resource v5 from a password lead.", async () => {
expect.assertions(4);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
expect(page.addSecretPassword).toBeNull();
expect(page.addSecretTotp).toBeDefined();
expect(page.addSecretCustomFields).toBeDefined();
expect(page.addSecretNote).toBeDefined();
});
it("As LU I can see secrets that can be added for a resource v5 from a totp lead.", async () => {
expect.assertions(4);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5TotpDto()),
resource: defaultResourceFormDto({ secret: { totp: {} } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
expect(page.addSecretPassword).toBeDefined();
expect(page.addSecretTotp).toBeNull();
expect(page.addSecretCustomFields).toBeDefined();
expect(page.addSecretNote).toBeDefined();
});
it("As LU I can see secrets that can be added for a resource v5 from a custom fields lead.", async () => {
expect.assertions(4);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5CustomFieldsDto()),
resource: defaultResourceFormDto({
secret: { custom_fields: new CustomFieldsCollection([CustomFieldEntity.createFromDefault().toDto()]) },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
expect(page.addSecretPassword).toBeDefined();
expect(page.addSecretTotp).toBeDefined();
expect(page.addSecretCustomFields).toBeNull();
expect(page.addSecretNote).toBeDefined();
});
it("As LU I can see secrets that can be added for a resource V5 from a note.", async () => {
expect.assertions(4);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.NOTE,
resource: defaultResourceFormDto({ secret: { description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
expect(page.addSecretPassword).toBeDefined();
expect(page.addSecretTotp).toBeDefined();
expect(page.addSecretCustomFields).toBeDefined();
expect(page.addSecretNote).toBeNull();
});
it("As LU I can see secrets that can be added for a resource V4 from a password lead.", async () => {
expect.assertions(4);
const props = defaultProps({ resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()) });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
expect(page.addSecretPassword).toBeNull();
expect(page.addSecretTotp).toBeDefined();
expect(page.addSecretCustomFields).toBeNull();
expect(page.addSecretNote).toBeDefined();
});
it("As LU I can see secrets that can be added for a resource V4 from a totp lead.", async () => {
expect.assertions(4);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordDescriptionTotpDto()),
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resource: defaultResourceFormDto({ secret: { totp: {} } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
expect(page.addSecretPassword).toBeDefined();
expect(page.addSecretTotp).toBeNull();
expect(page.addSecretCustomFields).toBeNull();
expect(page.addSecretNote).toBeDefined();
});
it("As LU I can see add secrets with only totp for a resource v4 password string.", async () => {
expect.assertions(4);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordStringDto()),
resource: defaultResourceFormDto({ secret: { password: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.addSecretPassword).toBeNull();
expect(page.addSecretTotp).toBeDefined();
expect(page.addSecretCustomFields).toBeNull();
expect(page.addSecretNote).toBeNull();
});
it("As LU I can see add secrets disabled if no resource types is available.", async () => {
expect.assertions(1);
const props = defaultProps({ resourceTypes: new ResourceTypesCollection([]) });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.addSecret.hasAttribute("disabled")).toBeTruthy();
});
});
describe("As LU I can add secret.", () => {
it("As LU I can add secret note for a resource v5 from a password lead.", async () => {
expect.assertions(1);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretNote);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.NOTE);
});
it("As LU I can add secret totp for a resource v5 from a password lead.", async () => {
expect.assertions(1);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretTotp);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.TOTP);
});
it("As LU I can add custom fields for a resource v5 from a password lead.", async () => {
expect.assertions(1);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretCustomFields);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.CUSTOM_FIELDS);
});
it("As LU I can add secret note for a resource v5 from a totp lead.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5TotpDto()),
resource: defaultResourceFormDto({ secret: { totp: {} } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretNote);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.NOTE);
});
it("As LU I can add secret password for a resource v5 from a totp lead.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5TotpDto()),
resource: defaultResourceFormDto({ secret: { totp: {} } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretPassword);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
});
it("As LU I can add secret custom fields for a resource v5 from a totp lead.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5TotpDto()),
resource: defaultResourceFormDto({ secret: { totp: {} } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretCustomFields);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.CUSTOM_FIELDS);
});
it("As LU I can add secret note for a resource v5 from a custom fields lead.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.CUSTOM_FIELDS,
resourceType: new ResourceTypeEntity(resourceTypeV5CustomFieldsDto()),
resource: defaultResourceFormDto({ secret: { custom_fields: [] } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretNote);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.NOTE);
});
it("As LU I can add secret totp for a resource v5 from a custom fields lead.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.CUSTOM_FIELDS,
resourceType: new ResourceTypeEntity(resourceTypeV5CustomFieldsDto()),
resource: defaultResourceFormDto({ secret: { custom_fields: [] } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretTotp);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.TOTP);
});
it("As LU I can add password for a resource v5 from a password lead.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.CUSTOM_FIELDS,
resourceType: new ResourceTypeEntity(resourceTypeV5CustomFieldsDto()),
resource: defaultResourceFormDto({ secret: { custom_fields: [] } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretPassword);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
});
it("As LU I can add secret totp for a resource V5 from a note.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.NOTE,
resource: defaultResourceFormDto({ secret: { description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretTotp);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.TOTP);
});
it("As LU I can add secret password for a resource V5 from a note.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.NOTE,
resource: defaultResourceFormDto({ secret: { description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretPassword);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
});
it("As LU I can add secret custom fields for a resource V5 from a note.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.NOTE,
resource: defaultResourceFormDto({ secret: { description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretCustomFields);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.CUSTOM_FIELDS);
});
it("As LU I can add secret totp for a resource V4 from a password lead.", async () => {
expect.assertions(1);
const props = defaultProps({ resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()) });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretTotp);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.TOTP);
});
it("As LU I can add secret note for a resource V4 from a password lead.", async () => {
expect.assertions(1);
const props = defaultProps({ resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()) });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretNote);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.NOTE);
});
it("As LU I can add secret password for a resource V4 from a totp lead.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordDescriptionTotpDto()),
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resource: defaultResourceFormDto({ secret: { totp: {} } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.addSecret);
await page.click(page.addSecretPassword);
expect(props.onAddSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
});
it("As LU I can see add secrets disabled if all secrets are added.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypeV5DefaultTotpDto()),
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resource: defaultResourceFormDto({ secret: { password: "", description: "", totp: {}, custom_fields: [{}] } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.addSecret.hasAttribute("disabled")).toBeTruthy();
});
});
describe("As LU I can delete secret.", () => {
it("As LU I can delete secret note for a resource v5 from a password lead.", async () => {
expect.assertions(1);
const props = defaultProps({ resource: defaultResourceFormDto({ secret: { password: "", description: "" } }) });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretNote);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.NOTE);
});
it("As LU I can delete secret password for a resource v5 from a password lead.", async () => {
expect.assertions(1);
const props = defaultProps({ resource: defaultResourceFormDto({ secret: { password: "", description: "" } }) });
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretPassword);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
});
it("As LU I can delete secret password and note for a resource v5 default totp.", async () => {
expect.assertions(2);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5DefaultTotpDto()),
resource: defaultResourceFormDto({ secret: { password: "", totp: {}, description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretPassword);
await page.click(page.deleteSecretNote);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.NOTE);
});
it("As LU I can delete secret totp for a resource v5 default totp.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5DefaultTotpDto()),
resource: defaultResourceFormDto({ secret: { password: "", totp: {}, description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretTotp);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.TOTP);
});
it("As LU I can delete secret password and note for a resource v5 default totp.", async () => {
expect.assertions(2);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5DefaultTotpDto()),
resource: defaultResourceFormDto({ secret: { password: "", totp: {}, description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretNote);
await page.click(page.deleteSecretPassword);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.NOTE);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
});
it("As LU I can delete secret custom fields for a resource v5 default totp.", async () => {
expect.assertions(2);
const props = defaultProps({
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resourceType: new ResourceTypeEntity(resourceTypeV5DefaultTotpDto()),
resource: defaultResourceFormDto({
secret: {
password: "",
totp: {},
custom_fields: new CustomFieldsCollection([CustomFieldEntity.createFromDefault().toDto()]),
},
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretCustomFields);
await page.click(page.deleteSecretPassword);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.CUSTOM_FIELDS);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
});
it("As LU I can delete secret totp for a resource V4 default totp.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordDescriptionTotpDto()),
resource: defaultResourceFormDto({ secret: { password: "", totp: {}, description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretTotp);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.TOTP);
});
it("As LU I can delete secret note for a resource V4 default.", async () => {
expect.assertions(1);
const props = defaultProps({
resource: defaultResourceFormDto({ secret: { password: "", description: "" } }),
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretNote);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.NOTE);
});
it("As LU I can delete secret password for a resource V4 default.", async () => {
expect.assertions(1);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
resourceFormSelected: ResourceEditCreateFormEnumerationTypes.TOTP,
resource: defaultResourceFormDto({ secret: { password: "", description: "" } }),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
await page.click(page.deleteSecretPassword);
expect(props.onDeleteSecret).toHaveBeenCalledWith(ResourceEditCreateFormEnumerationTypes.PASSWORD);
});
it("As LU I cannot see delete secrets if resource has only one secret.", async () => {
expect.assertions(1);
const props = defaultProps();
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.deleteSecretPassword).toBeNull();
});
});
describe("As LU I can upgrade a resource.", () => {
it("As LU I can upgrade a resource v4 to v5.", async () => {
expect.assertions(2);
const props = defaultProps({
resourceType: new ResourceTypeEntity(resourceTypePasswordAndDescriptionDto()),
resource: defaultResourceFormDto({
resource_type_id: TEST_RESOURCE_TYPE_PASSWORD_AND_DESCRIPTION,
secret: { password: "" },
}),
});
page = new SelectResourceFormPage(props);
await waitFor(() => {});
expect(page.upgradeCard).toBeDefined();
await page.click(page.upgradeButton);
expect(props.onUpgradeToV5).toHaveBeenCalled();
});
});
describe("As LU I should see the select disabled.", () => {
it("As LU I can see the select form disabled.", async () => {
expect.assertions(9);
const props = defaultProps({
disabled: true,
resource: defaultResourceFormDto({ secret: { password: "", description: "", totp: {} } }),
});
page = new SelectResourceFormPage(props);
expect(page.addSecret.hasAttribute("disabled")).toBeTruthy();
expect(page.deleteSecretPassword.hasAttribute("disabled")).toBeTruthy();
expect(page.deleteSecretTotp.hasAttribute("disabled")).toBeTruthy();
expect(page.deleteSecretNote.hasAttribute("disabled")).toBeTruthy();
expect(page.getSectionItem(1).hasAttribute("disabled")).toBeTruthy();
expect(page.getSectionItem(2).hasAttribute("disabled")).toBeTruthy();
expect(page.getSectionItem(3).hasAttribute("disabled")).toBeTruthy();
expect(page.getSectionItem(4).hasAttribute("disabled")).toBeTruthy();
expect(page.getSectionItem(5).hasAttribute("disabled")).toBeTruthy();
});
});
});