mirror of
https://github.com/ToolJet/ToolJet
synced 2026-04-21 21:47:17 +00:00
858 lines
No EOL
30 KiB
JavaScript
858 lines
No EOL
30 KiB
JavaScript
import { commonSelectors } from "Selectors/common";
|
|
import { groupsSelector } from "Selectors/manageGroups";
|
|
import { groupsText } from "Texts/manageGroups";
|
|
|
|
export const verifyAdminHelperText = (index = 0) => {
|
|
cy.get(groupsSelector.helperTextAdminAppAccess)
|
|
.eq(index)
|
|
.should("be.visible")
|
|
.and("contain.text", "Admin has all permissions. This is not editable");
|
|
|
|
cy.get(groupsSelector.helperTextAdminAppAccess)
|
|
.eq(index)
|
|
.find("a")
|
|
.should("be.visible")
|
|
.and("have.text", "read documentation")
|
|
.and("have.attr", "href")
|
|
.and("include", "docs.tooljet.ai/docs/tutorial/manage-users-groups");
|
|
};
|
|
|
|
export const verifyEditUserRoleModal = (userEmail) => {
|
|
cy.get('[data-cy="modal-title"]')
|
|
.last()
|
|
.within(() => {
|
|
cy.get("span").should("be.visible").and("contain.text", "Edit user role");
|
|
cy.get('[data-cy="user-email"]')
|
|
.should("be.visible")
|
|
.and("have.text", userEmail);
|
|
});
|
|
|
|
cy.get(groupsSelector.userRoleLabel)
|
|
.should("be.visible")
|
|
.and("have.text", groupsText.userRole);
|
|
cy.get(groupsSelector.warningText)
|
|
.should("be.visible")
|
|
.and("have.text", groupsText.warningText);
|
|
|
|
cy.get(".react-select__control").should("be.visible");
|
|
cy.get(".react-select__placeholder")
|
|
.should("be.visible")
|
|
.and("contain.text", "Select new role of user");
|
|
|
|
cy.get(groupsSelector.cancelButton)
|
|
.should("be.visible")
|
|
.and("have.text", groupsText.cancelButton)
|
|
.and("be.enabled");
|
|
|
|
cy.get(groupsSelector.confimButton)
|
|
.should("be.visible")
|
|
.and("have.text", groupsText.continueButtonText)
|
|
.and("be.disabled");
|
|
|
|
cy.get('[data-cy="modal-close-button"]').should("be.visible");
|
|
};
|
|
|
|
export const toggleAllPermissions = (status = ["uncheck", "check"]) => {
|
|
permissions.forEach((permissionSelector) => {
|
|
cy.get(permissionSelector).should("be.visible")[status[0]]();
|
|
cy.verifyToastMessage(
|
|
commonSelectors.toastMessage,
|
|
groupsText.permissionUpdatedToast
|
|
);
|
|
cy.get(permissionSelector).should("be.visible")[status[1]]();
|
|
cy.verifyToastMessage(
|
|
commonSelectors.toastMessage,
|
|
groupsText.permissionUpdatedToast
|
|
);
|
|
});
|
|
};
|
|
|
|
export const verifyDeleteConfirmationModal = () => {
|
|
cy.get(".confirm-dialogue-modal").should("be.visible");
|
|
cy.verifyElement(groupsSelector.deleteMessage, groupsText.deleteMessage);
|
|
cy.get(groupsSelector.yesButton).should("be.visible").and("be.enabled");
|
|
cy.get(groupsSelector.cancelButton).should("be.visible").and("be.enabled");
|
|
};
|
|
|
|
export const verifyGranularEditModal = (role) => {
|
|
cy.wait(1000)
|
|
cy.get(groupsSelector.granularAccessPermission, { timeout: 15000 }).realHover();
|
|
cy.get('[data-cy="edit-apps-granular-access"]').click();
|
|
|
|
cy.get(".modal-base").should("be.visible");
|
|
|
|
cy.verifyElement(
|
|
`${groupsSelector.addEditPermissionModalTitle}:eq(2)`,
|
|
groupsText.editPermissionModalTitle
|
|
);
|
|
permissionModal();
|
|
|
|
if (role === "builder" || role === "enduser") {
|
|
cy.get(groupsSelector.customRadio).should("be.disabled");
|
|
} else {
|
|
cy.get(groupsSelector.customRadio).should("be.enabled");
|
|
}
|
|
cy.verifyElement(groupsSelector.customLabel, groupsText.customLabel);
|
|
cy.verifyElement(
|
|
groupsSelector.customHelperText,
|
|
groupsText.customHelperText
|
|
);
|
|
|
|
cy.verifyElement(groupsSelector.confimButton, groupsText.updateButtonText);
|
|
cy.get(groupsSelector.confimButton).should("be.disabled");
|
|
cy.verifyElement(groupsSelector.cancelButton, groupsText.cancelButton);
|
|
cy.get(groupsSelector.cancelButton).click();
|
|
|
|
cy.wait(2000)
|
|
cy.get(groupsSelector.granularAccessPermission).realHover();
|
|
cy.get('[data-cy="edit-apps-granular-access"]').click();
|
|
|
|
cy.get(groupsSelector.deletePermissionIcon)
|
|
.should("be.visible")
|
|
.and("be.enabled");
|
|
cy.get(groupsSelector.deletePermissionIcon).click();
|
|
|
|
verifyDeleteConfirmationModal();
|
|
cy.contains("Cancel").click();
|
|
|
|
};
|
|
|
|
export const verifyGranularAddModal = (role) => {
|
|
cy.ifEnv("Community", () => {
|
|
cy.get(groupsSelector.addAppsButton)
|
|
.should("be.visible")
|
|
.and("be.enabled")
|
|
.click();
|
|
});
|
|
|
|
cy.ifEnv("Enterprise", () => {
|
|
cy.get(groupsSelector.addPermissionButton)
|
|
.should("be.visible")
|
|
.and("be.enabled")
|
|
.click();
|
|
cy.get(groupsSelector.addAppButton).click();
|
|
});
|
|
|
|
cy.verifyElement(
|
|
`${groupsSelector.addEditPermissionModalTitle}:eq(2)`,
|
|
groupsText.addPermissionModalTitle
|
|
);
|
|
permissionModal();
|
|
|
|
if (role === "builder" || role === "enduser") {
|
|
cy.get(groupsSelector.customRadio).should("be.disabled");
|
|
} else {
|
|
cy.get(groupsSelector.customRadio).should("be.enabled");
|
|
}
|
|
cy.verifyElement(groupsSelector.customLabel, groupsText.customLabel);
|
|
cy.verifyElement(
|
|
groupsSelector.customHelperText,
|
|
groupsText.customHelperText
|
|
);
|
|
|
|
cy.verifyElement(groupsSelector.confimButton, groupsText.updateButtonText);
|
|
cy.get(groupsSelector.confimButton).should("be.disabled");
|
|
cy.verifyElement(groupsSelector.cancelButton, groupsText.cancelButton);
|
|
cy.get(groupsSelector.cancelButton).click();
|
|
};
|
|
|
|
export const verifyEnduserHelperText = (index = 0) => {
|
|
cy.get(groupsSelector.helperTextAdminAppAccess)
|
|
.eq(index)
|
|
.should("be.visible")
|
|
.and("contain.text", "End-user can only have permission to view apps");
|
|
|
|
cy.get(groupsSelector.helperTextAdminAppAccess)
|
|
.eq(index)
|
|
.find("a")
|
|
.should("be.visible")
|
|
.and("have.text", "read documentation")
|
|
.and("have.attr", "href")
|
|
.and("include", "docs.tooljet.ai/docs/tutorial/manage-users-groups");
|
|
};
|
|
|
|
export const verifyGranularPermissionModalUI = (
|
|
resourceType,
|
|
isEdit = false,
|
|
permissionName = ""
|
|
) => {
|
|
// Permission name section
|
|
cy.get(groupsSelector.permissionNameLabel).verifyVisibleElement(
|
|
"have.text",
|
|
groupsText.permissionNameLabel
|
|
);
|
|
cy.get(groupsSelector.permissionNameInput).should("be.visible");
|
|
|
|
if (isEdit) {
|
|
cy.get(groupsSelector.permissionNameInput).should(
|
|
"have.value",
|
|
permissionName
|
|
);
|
|
} else {
|
|
cy.get(groupsSelector.permissionNameInput).should(
|
|
"have.attr",
|
|
"placeholder"
|
|
);
|
|
}
|
|
|
|
cy.get(groupsSelector.permissionNameHelperText).verifyVisibleElement(
|
|
"have.text",
|
|
groupsText.permissionNameHelperText
|
|
);
|
|
|
|
// Permission section
|
|
cy.get(groupsSelector.permissionLabel).verifyVisibleElement(
|
|
"have.text",
|
|
groupsText.permissionLabel
|
|
);
|
|
|
|
if (resourceType === "app") {
|
|
cy.verifyElement(
|
|
groupsSelector.editPermissionLabel,
|
|
groupsText.editPermissionLabel
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.editPermissionHelperText,
|
|
groupsText.editPermissionHelperText
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.viewPermissionLabel,
|
|
groupsText.viewPermissionLabel
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.viewPermissionHelperText,
|
|
groupsText.viewPermissionHelperText
|
|
);
|
|
|
|
cy.get(groupsSelector.hidePermissionInput).should("be.visible");
|
|
cy.verifyElement(
|
|
groupsSelector.appHidePermissionModalLabel,
|
|
groupsText.appHideLabel
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.appHidePermissionModalHelperText,
|
|
groupsText.appHideHelperText
|
|
);
|
|
}
|
|
|
|
if (resourceType === "workflow") {
|
|
cy.verifyElement(groupsSelector.workflowsBuildLabel, "Build");
|
|
cy.verifyElement(
|
|
groupsSelector.workflowsBuildHelperText,
|
|
"Access to workflow builder"
|
|
);
|
|
cy.verifyElement(groupsSelector.workflowsExecuteLabel, "Execute");
|
|
cy.verifyElement(
|
|
groupsSelector.workflowsExecuteHelperText,
|
|
"Only able to execute the workflow"
|
|
);
|
|
}
|
|
|
|
if (resourceType === "datasource") {
|
|
cy.verifyElement(groupsSelector.datasourcesConfigureLabel, "Configure");
|
|
cy.verifyElement(
|
|
groupsSelector.datasourcesConfigureHelperText,
|
|
"Access and edit connection detail"
|
|
);
|
|
cy.verifyElement(groupsSelector.datasourcesBuildWithLabel, "Build with");
|
|
cy.verifyElement(
|
|
groupsSelector.datasourcesBuildWithHelperText,
|
|
"Use in apps & workflows"
|
|
);
|
|
}
|
|
|
|
// Resources section
|
|
cy.get(groupsSelector.resourceLabel).verifyVisibleElement(
|
|
"have.text",
|
|
groupsText.resourcesheader
|
|
);
|
|
cy.get(groupsSelector.allAppsRadio).should("be.visible");
|
|
|
|
if (isEdit) {
|
|
cy.verifyElement(groupsSelector.allAppsLabel, groupsText.allAppsLabel);
|
|
} else {
|
|
cy.verifyElement(groupsSelector.allAppsLabel, groupsText.groupChipText);
|
|
}
|
|
|
|
cy.verifyElement(
|
|
groupsSelector.allAppsHelperText,
|
|
groupsText.allAppsHelperText
|
|
);
|
|
cy.get(groupsSelector.customRadio).should("be.visible");
|
|
cy.verifyElement(groupsSelector.customLabel, groupsText.customLabel);
|
|
cy.verifyElement(
|
|
groupsSelector.customHelperText,
|
|
groupsText.customHelperText
|
|
);
|
|
|
|
cy.verifyElement(
|
|
groupsSelector.confimButton,
|
|
isEdit ? groupsText.updateButtonText : groupsText.addButtonText
|
|
);
|
|
cy.verifyElement(groupsSelector.cancelButton, groupsText.cancelButton);
|
|
|
|
if (isEdit) {
|
|
cy.get(groupsSelector.deletePermissionIcon).should("be.visible");
|
|
}
|
|
};
|
|
|
|
export const verifyGranularPermissionModalStates = (
|
|
resourceType,
|
|
role,
|
|
customStateOverride = null
|
|
) => {
|
|
const stateConfig = {
|
|
app: {
|
|
builder: {
|
|
editRadio: { checked: true, enabled: true },
|
|
viewRadio: { checked: false, enabled: true },
|
|
hideCheckbox: { enabled: false },
|
|
allAppsRadio: { checked: true, enabled: false },
|
|
customRadio: { checked: false, enabled: false },
|
|
},
|
|
enduser: {
|
|
editRadio: { checked: false, enabled: false },
|
|
viewRadio: { checked: true, enabled: false },
|
|
hideCheckbox: { enabled: true },
|
|
allAppsRadio: { checked: true, enabled: false },
|
|
customRadio: { checked: false, enabled: false },
|
|
},
|
|
custom: {
|
|
editRadio: { checked: true, enabled: true },
|
|
viewRadio: { checked: false, enabled: true },
|
|
hideCheckbox: { enabled: false },
|
|
allAppsRadio: { checked: true, enabled: true },
|
|
customRadio: { checked: false, enabled: true },
|
|
},
|
|
},
|
|
workflow: {
|
|
builder: {
|
|
buildRadio: { checked: true, enabled: true },
|
|
executeRadio: { checked: false, enabled: true },
|
|
allAppsRadio: { checked: true, enabled: false },
|
|
customRadio: { checked: false, enabled: false },
|
|
},
|
|
enduser: {
|
|
buildRadio: { checked: false, enabled: false },
|
|
executeRadio: { checked: true, enabled: false },
|
|
allAppsRadio: { checked: true, enabled: false },
|
|
customRadio: { checked: false, enabled: false },
|
|
},
|
|
custom: {
|
|
buildRadio: { checked: true, enabled: true },
|
|
executeRadio: { checked: false, enabled: true },
|
|
allAppsRadio: { checked: true, enabled: true },
|
|
customRadio: { checked: false, enabled: true },
|
|
},
|
|
},
|
|
datasource: {
|
|
builder: {
|
|
configureRadio: { checked: true, enabled: true },
|
|
buildWithRadio: { checked: false, enabled: true },
|
|
allAppsRadio: { checked: true, enabled: false },
|
|
customRadio: { checked: false, enabled: false },
|
|
},
|
|
custom: {
|
|
configureRadio: { checked: true, enabled: true },
|
|
buildWithRadio: { checked: false, enabled: true },
|
|
allAppsRadio: { checked: true, enabled: true },
|
|
customRadio: { checked: false, enabled: true },
|
|
},
|
|
},
|
|
};
|
|
|
|
// Get the base config
|
|
let config = stateConfig[resourceType][role];
|
|
|
|
// If customStateOverride is provided and role is 'custom', merge it with the default
|
|
if (customStateOverride && role === "custom") {
|
|
config = { ...config, ...customStateOverride };
|
|
}
|
|
|
|
if (resourceType === "app") {
|
|
cy.get(groupsSelector.editPermissionRadio)
|
|
.should("be.visible")
|
|
.and(config.editRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.editRadio.enabled ? "be.enabled" : "be.disabled");
|
|
|
|
cy.get(groupsSelector.viewPermissionRadio)
|
|
.should("be.visible")
|
|
.and(config.viewRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.viewRadio.enabled ? "be.enabled" : "be.disabled");
|
|
|
|
cy.get(groupsSelector.hidePermissionInput)
|
|
.should("be.visible")
|
|
.and(config.hideCheckbox.enabled ? "be.enabled" : "be.disabled");
|
|
}
|
|
|
|
if (resourceType === "workflow") {
|
|
cy.get(groupsSelector.buildWorkflowradio)
|
|
.should("be.visible")
|
|
.and(config.buildRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.buildRadio.enabled ? "be.enabled" : "be.disabled");
|
|
|
|
cy.get(groupsSelector.executeWorkflowradio)
|
|
.should("be.visible")
|
|
.and(config.executeRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.executeRadio.enabled ? "be.enabled" : "be.disabled");
|
|
}
|
|
|
|
if (resourceType === "datasource") {
|
|
cy.get(groupsSelector.configureDatasourceradio)
|
|
.should("be.visible")
|
|
.and(config.configureRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.configureRadio.enabled ? "be.enabled" : "be.disabled");
|
|
|
|
cy.get(groupsSelector.buildWithDatasourceRadio)
|
|
.should("be.visible")
|
|
.and(config.buildWithRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.buildWithRadio.enabled ? "be.enabled" : "be.disabled");
|
|
}
|
|
|
|
cy.get(groupsSelector.allAppsRadio)
|
|
.should("be.visible")
|
|
.and(config.allAppsRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.allAppsRadio.enabled ? "be.enabled" : "be.disabled");
|
|
|
|
cy.get(groupsSelector.customRadio)
|
|
.should("be.visible")
|
|
.and(config.customRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.customRadio.enabled ? "be.enabled" : "be.disabled");
|
|
};
|
|
|
|
export const verifyEmptyStates = () => {
|
|
// Users empty state
|
|
cy.get(groupsSelector.usersLink).click();
|
|
cy.get('[data-cy="user-group-search-btn"]').should("be.visible");
|
|
cy.verifyElement(
|
|
groupsSelector.nameTableHeader,
|
|
groupsText.userNameTableHeader
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.emailTableHeader,
|
|
groupsText.emailTableHeader
|
|
);
|
|
|
|
cy.get(groupsSelector.userEmptyPageIcon).should("be.visible");
|
|
cy.get(groupsSelector.userEmptyPageTitle).verifyVisibleElement(
|
|
"have.text",
|
|
groupsText.userEmptyPageTitle
|
|
);
|
|
cy.get(groupsSelector.userEmptyPageHelperText).verifyVisibleElement(
|
|
"have.text",
|
|
groupsText.userEmptyPageHelperText
|
|
);
|
|
};
|
|
|
|
export const verifyGroupLinks = () => {
|
|
const links = [
|
|
{ selector: groupsSelector.usersLink, text: groupsText.usersLink },
|
|
{
|
|
selector: groupsSelector.permissionsLink,
|
|
text: groupsText.permissionsLink,
|
|
},
|
|
{ selector: groupsSelector.granularLink, text: "Granular access" },
|
|
];
|
|
|
|
links.forEach(({ selector, text }) => {
|
|
cy.get(selector).verifyVisibleElement("have.text", text);
|
|
});
|
|
};
|
|
|
|
export const commonGroupVerification = () => {
|
|
cy.verifyElement(
|
|
groupsSelector.textDefaultGroup,
|
|
groupsText.textDefaultGroup
|
|
);
|
|
cy.verifyElement(groupsSelector.usersLink, groupsText.usersLink);
|
|
cy.verifyElement(groupsSelector.permissionsLink, groupsText.permissionsLink);
|
|
cy.verifyElement(groupsSelector.granularLink, "Granular access");
|
|
|
|
cy.get(groupsSelector.usersLink).click();
|
|
cy.verifyElement(
|
|
groupsSelector.nameTableHeader,
|
|
groupsText.userNameTableHeader
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.emailTableHeader,
|
|
groupsText.emailTableHeader
|
|
);
|
|
};
|
|
|
|
export const permissions =
|
|
Cypress.env("environment") === "Community"
|
|
? [
|
|
groupsSelector.appsCreateCheck,
|
|
groupsSelector.appsDeleteCheck,
|
|
groupsSelector.foldersCreateCheck,
|
|
groupsSelector.workspaceVarCheckbox,
|
|
]
|
|
: [
|
|
groupsSelector.appsCreateCheck,
|
|
groupsSelector.appsDeleteCheck,
|
|
groupsSelector.appPromoteCheck,
|
|
groupsSelector.appReleaseCheck,
|
|
groupsSelector.workflowsCreateCheck,
|
|
groupsSelector.workflowsDeleteCheck,
|
|
groupsSelector.datasourcesCreateCheck,
|
|
groupsSelector.datasourcesDeleteCheck,
|
|
groupsSelector.foldersCreateCheck,
|
|
groupsSelector.workspaceVarCheckbox,
|
|
];
|
|
|
|
export const verifyCheckPermissionStates = (roleType, action = null) => {
|
|
const roleConfig = {
|
|
admin: { checked: true, enabled: false },
|
|
enduser: { checked: false, enabled: false },
|
|
builder: { checked: true, enabled: true },
|
|
custom: { checked: false, enabled: true },
|
|
};
|
|
|
|
const config = roleConfig[roleType];
|
|
|
|
permissions.forEach((permissionSelector) => {
|
|
cy.get(permissionSelector)
|
|
.should("be.visible")
|
|
.and(config.checked ? "be.checked" : "not.be.checked")
|
|
.and(config.enabled ? "be.enabled" : "be.disabled");
|
|
});
|
|
};
|
|
|
|
export const verifyPermissionCheckBoxLabelsAndHelperTexts = () => {
|
|
const commonPermissions = [
|
|
{ selector: groupsSelector.resourcesApps, text: groupsText.resourcesApps },
|
|
{
|
|
selector: groupsSelector.permissionsTableHeader,
|
|
text: groupsText.permissionsTableHeader,
|
|
},
|
|
{ selector: groupsSelector.appsCreateLabel, text: groupsText.createLabel },
|
|
{
|
|
selector: groupsSelector.appCreateHelperText,
|
|
text: groupsText.appCreateHelperText,
|
|
},
|
|
{ selector: groupsSelector.appsDeleteLabel, text: groupsText.deleteLabel },
|
|
{
|
|
selector: groupsSelector.appDeleteHelperText,
|
|
text: groupsText.appDeleteHelperText,
|
|
},
|
|
{
|
|
selector: groupsSelector.resourcesFolders,
|
|
text: groupsText.resourcesFolders,
|
|
},
|
|
{
|
|
selector: groupsSelector.foldersCreateLabel,
|
|
text: groupsText.folderCreateLabel,
|
|
},
|
|
{
|
|
selector: groupsSelector.foldersHelperText,
|
|
text: groupsText.folderHelperText,
|
|
},
|
|
{
|
|
selector: groupsSelector.resourcesWorkspaceVar,
|
|
text: groupsText.resourcesWorkspaceVar,
|
|
},
|
|
{
|
|
selector: groupsSelector.workspaceCreateLabel,
|
|
text: groupsText.workspaceCreateLabel,
|
|
},
|
|
{
|
|
selector: groupsSelector.workspaceHelperText,
|
|
text: groupsText.workspaceHelperText,
|
|
},
|
|
];
|
|
|
|
commonPermissions.forEach(({ selector, text }) => {
|
|
cy.verifyElement(selector, text);
|
|
});
|
|
|
|
cy.ifEnv("Enterprise", () => {
|
|
const enterprisePermissions = [
|
|
{ selector: groupsSelector.appPromoteLabel, text: "Promote" },
|
|
{
|
|
selector: groupsSelector.appPromoteHelperText,
|
|
text: "Promote any app in this workspace",
|
|
},
|
|
{ selector: groupsSelector.appReleaseLabel, text: "Release" },
|
|
{
|
|
selector: groupsSelector.appReleaseHelperText,
|
|
text: "Release any app in this workspace",
|
|
},
|
|
{ selector: groupsSelector.workflowsCreateLabel, text: "Create" },
|
|
{
|
|
selector: groupsSelector.workflowsCreateHelperText,
|
|
text: "Create workflow in this workspace",
|
|
},
|
|
{ selector: groupsSelector.workflowsDeleteLabel, text: "Delete" },
|
|
{
|
|
selector: groupsSelector.workflowsDeleteHelperText,
|
|
text: "Delete any workflow in this workspace",
|
|
},
|
|
{ selector: groupsSelector.datasourcesCreateLabel, text: "Create" },
|
|
{
|
|
selector: groupsSelector.datasourcesCreateHelperText,
|
|
text: "Create data source connections in this workspace",
|
|
},
|
|
{ selector: groupsSelector.datasourcesDeleteLabel, text: "Delete" },
|
|
{
|
|
selector: groupsSelector.datasourcesDeleteHelperText,
|
|
text: "Delete any data source in this workspace",
|
|
},
|
|
];
|
|
|
|
enterprisePermissions.forEach(({ selector, text }) => {
|
|
cy.verifyElement(selector, text);
|
|
});
|
|
});
|
|
};
|
|
|
|
export const verifyGranularAccessByRole = (role) => {
|
|
const roleConfig = {
|
|
admin: {
|
|
appEditRadio: { checked: true, enabled: false },
|
|
appViewRadio: { checked: false, enabled: false },
|
|
appHideCheckbox: { enabled: false },
|
|
workflowBuildRadio: { checked: true, enabled: false },
|
|
workflowExecuteRadio: { checked: false, enabled: false },
|
|
datasourceConfigureRadio: { checked: true, enabled: false },
|
|
datasourceBuildWithRadio: { checked: false, enabled: false },
|
|
addButtonEnabled: false,
|
|
verifyHelperTexts: true,
|
|
hasDatasource: true,
|
|
},
|
|
builder: {
|
|
appEditRadio: { checked: true, enabled: true },
|
|
appViewRadio: { checked: false, enabled: true },
|
|
appHideCheckbox: { enabled: false },
|
|
workflowBuildRadio: { checked: true, enabled: true },
|
|
workflowExecuteRadio: { checked: false, enabled: true },
|
|
datasourceConfigureRadio: { checked: true, enabled: true },
|
|
datasourceBuildWithRadio: { checked: false, enabled: true },
|
|
addButtonEnabled: true,
|
|
verifyHelperTexts: false,
|
|
hasDatasource: true,
|
|
},
|
|
enduser: {
|
|
appEditRadio: { checked: false, enabled: false },
|
|
appViewRadio: { checked: true, enabled: false },
|
|
appHideCheckbox: { enabled: true },
|
|
workflowBuildRadio: { checked: false, enabled: false },
|
|
workflowExecuteRadio: { checked: true, enabled: false },
|
|
addButtonEnabled: true,
|
|
verifyHelperTexts: false,
|
|
hasDatasource: false,
|
|
},
|
|
};
|
|
|
|
const config = roleConfig[role];
|
|
|
|
cy.get(groupsSelector.granularLink).click();
|
|
|
|
if (role === "admin") {
|
|
cy.verifyElement(
|
|
groupsSelector.nameTableHeader,
|
|
groupsText.nameTableHeader
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.permissionsTableHeader,
|
|
groupsText.granularAccessPermissionHeader
|
|
);
|
|
cy.verifyElement(
|
|
`${groupsSelector.resourceHeader}:eq(1)`,
|
|
groupsText.resourcesTableHeader
|
|
);
|
|
}
|
|
|
|
cy.verifyElement(groupsSelector.appsText, " Apps");
|
|
|
|
cy.get(groupsSelector.appEditRadio)
|
|
.should("be.visible")
|
|
.and(config.appEditRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(
|
|
config.appEditRadio.enabled ? "be.enabled" : "have.attr",
|
|
config.appEditRadio.enabled ? "" : "disabled"
|
|
);
|
|
|
|
cy.get(groupsSelector.appViewRadio)
|
|
.should("be.visible")
|
|
.and(
|
|
config.appViewRadio.enabled ? "be.enabled" : "have.attr",
|
|
config.appViewRadio.enabled ? "" : "disabled"
|
|
);
|
|
|
|
cy.get(groupsSelector.appHideCheckbox)
|
|
.should("be.visible")
|
|
.and(config.appHideCheckbox.enabled ? "be.enabled" : "be.disabled");
|
|
|
|
if (config.verifyHelperTexts) {
|
|
cy.verifyElement(groupsSelector.appEditLabel, groupsText.appEditLabelText);
|
|
cy.verifyElement(
|
|
groupsSelector.appEditHelperText,
|
|
groupsText.appEditHelperText
|
|
);
|
|
cy.verifyElement(groupsSelector.appViewLabel, groupsText.appViewLabel);
|
|
cy.verifyElement(
|
|
groupsSelector.appViewHelperText,
|
|
groupsText.appViewHelperText
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.appHideHelperText,
|
|
groupsText.appHideHelperText
|
|
);
|
|
}
|
|
|
|
cy.verifyElement(groupsSelector.groupChip("All apps"), "All apps");
|
|
|
|
cy.ifEnv("Community", () => {
|
|
cy.get(groupsSelector.addAppButton).should(
|
|
config.addButtonEnabled ? "be.enabled" : "be.disabled"
|
|
);
|
|
});
|
|
|
|
cy.ifEnv("Enterprise", () => {
|
|
cy.verifyElement(groupsSelector.workflowsText, "Workflows");
|
|
|
|
cy.get(groupsSelector.workflowsBuildRadio)
|
|
.should("be.visible")
|
|
.and(config.workflowBuildRadio.checked ? "be.checked" : "not.be.checked")
|
|
.and(
|
|
config.workflowBuildRadio.enabled ? "be.enabled" : "have.attr",
|
|
config.workflowBuildRadio.enabled ? "" : "disabled"
|
|
);
|
|
|
|
cy.get(groupsSelector.workflowsExecuteRadio)
|
|
.should("be.visible")
|
|
.and(
|
|
config.workflowExecuteRadio.enabled ? "be.enabled" : "have.attr",
|
|
config.workflowExecuteRadio.enabled ? "" : "disabled"
|
|
);
|
|
|
|
if (config.verifyHelperTexts) {
|
|
cy.verifyElement(groupsSelector.workflowsBuildLabel, "Build");
|
|
cy.verifyElement(
|
|
groupsSelector.workflowsBuildHelperText,
|
|
"Access to workflow builder"
|
|
);
|
|
cy.verifyElement(groupsSelector.workflowsExecuteLabel, "Execute");
|
|
cy.verifyElement(
|
|
groupsSelector.workflowsExecuteHelperText,
|
|
"Only able to execute the workflow"
|
|
);
|
|
}
|
|
|
|
cy.verifyElement(
|
|
groupsSelector.groupChip("All workflows"),
|
|
"All workflows"
|
|
);
|
|
|
|
if (config.hasDatasource) {
|
|
cy.verifyElement(groupsSelector.datasourcesText, " Data sources");
|
|
|
|
cy.get(groupsSelector.datasourcesConfigureRadio)
|
|
.should("be.visible")
|
|
.and(
|
|
config.datasourceConfigureRadio.checked
|
|
? "be.checked"
|
|
: "not.be.checked"
|
|
)
|
|
.and(
|
|
config.datasourceConfigureRadio.enabled ? "be.enabled" : "have.attr",
|
|
config.datasourceConfigureRadio.enabled ? "" : "disabled"
|
|
);
|
|
|
|
cy.get(groupsSelector.datasourcesBuildWithRadio)
|
|
.should("be.visible")
|
|
.and(
|
|
config.datasourceBuildWithRadio.enabled ? "be.enabled" : "have.attr",
|
|
config.datasourceBuildWithRadio.enabled ? "" : "disabled"
|
|
);
|
|
|
|
if (config.verifyHelperTexts) {
|
|
cy.verifyElement(groupsSelector.datasourcesConfigureLabel, "Configure");
|
|
cy.verifyElement(
|
|
groupsSelector.datasourcesConfigureHelperText,
|
|
"Access & edit connection details"
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.datasourcesBuildWithLabel,
|
|
"Build with"
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.datasourcesBuildWithHelperText,
|
|
"Use in apps & workflows"
|
|
);
|
|
}
|
|
|
|
cy.verifyElement(
|
|
groupsSelector.groupChip("All data source"),
|
|
"All data sources"
|
|
);
|
|
}
|
|
|
|
cy.verifyElement(groupsSelector.addPermissionButton, "Add permission");
|
|
cy.get(groupsSelector.addPermissionButton).should(
|
|
config.addButtonEnabled ? "be.enabled" : "be.disabled"
|
|
);
|
|
});
|
|
};
|
|
|
|
export const permissionModal = () => {
|
|
cy.verifyElement(
|
|
groupsSelector.permissionNameLabel,
|
|
groupsText.permissionNameLabel
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.permissionNameHelperText,
|
|
groupsText.permissionNameHelperText
|
|
);
|
|
|
|
cy.verifyElement(groupsSelector.permissionLabel, groupsText.permissionLabel);
|
|
cy.verifyElement(
|
|
groupsSelector.editPermissionLabel,
|
|
groupsText.editPermissionLabel
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.editPermissionHelperText,
|
|
groupsText.editPermissionHelperText
|
|
);
|
|
|
|
cy.verifyElement(
|
|
groupsSelector.viewPermissionLabel,
|
|
groupsText.viewPermissionLabel
|
|
);
|
|
cy.verifyElement(
|
|
groupsSelector.viewPermissionHelperText,
|
|
groupsText.viewPermissionHelperText
|
|
);
|
|
|
|
cy.get(groupsSelector.hidePermissionInput).should("be.visible");
|
|
cy.verifyElement(groupsSelector.resourceLabel, groupsText.resourcesheader);
|
|
cy.get(groupsSelector.resourceContainer).should("be.visible");
|
|
cy.get(groupsSelector.allAppsRadio).should("be.visible").and("be.checked");
|
|
cy.verifyElement(groupsSelector.allAppsLabel, groupsText.allAppsLabel);
|
|
cy.verifyElement(
|
|
groupsSelector.allAppsHelperText,
|
|
groupsText.allAppsHelperText
|
|
);
|
|
};
|
|
|
|
export const verifyUserRow = (name, email) => {
|
|
cy.get('[data-cy="avatar-image"]').should("be.visible");
|
|
cy.get('[data-cy="user-name"]')
|
|
.should("be.visible")
|
|
.and("contain.text", name);
|
|
cy.get('[data-cy="user-email"]').should("be.visible").and("have.text", email);
|
|
};
|
|
|
|
export const granularPermissionEmptyState = () => {
|
|
cy.get(groupsSelector.granularLink).click();
|
|
|
|
cy.get(groupsSelector.granularEmptyPageIcon).should("be.visible");
|
|
cy.get(groupsSelector.emptyPagePermissionTitle).verifyVisibleElement(
|
|
"have.text",
|
|
groupsText.emptyPagePermissionTitle
|
|
);
|
|
cy.get(groupsSelector.emptyPagePermissionHelperText).verifyVisibleElement(
|
|
"have.text",
|
|
groupsText.emptyPagePermissionHelperText
|
|
);
|
|
} |