ToolJet/cypress-tests/cypress/e2e/workspace/manageUsers.cy.js

259 lines
8.2 KiB
JavaScript

import { commonSelectors } from "Selectors/common";
import { fake } from "Fixtures/fake";
import { usersText } from "Texts/manageUsers";
import { usersSelector } from "Selectors/manageUsers";
import * as users from "Support/utils/manageUsers";
import * as common from "Support/utils/common";
import { path } from "Texts/common";
import { dashboardSelector } from "Selectors/dashboard";
import { updateWorkspaceName } from "Support/utils/userPermissions";
import { groupsSelector } from "Selectors/manageGroups";
import { groupsText } from "Texts/manageGroups";
const data = {};
data.firstName = fake.firstName;
data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", "");
data.groupName = fake.firstName.replaceAll("[^A-Za-z]", "");
describe("Manage Users", () => {
beforeEach(() => {
cy.appUILogin();
});
let invitationToken,
organizationToken,
workspaceId,
userId,
url = "";
it("Should verify the Manage users page", () => {
common.navigateToManageUsers();
users.manageUsersElements();
cy.get(commonSelectors.cancelButton).click();
cy.get(usersSelector.usersPageTitle).should("be.visible");
cy.get(usersSelector.buttonAddUsers).click();
cy.get(usersSelector.buttonInviteUsers).click();
cy.get(usersSelector.fullNameError).verifyVisibleElement(
"have.text",
usersText.errorTextFieldRequired
);
cy.get(usersSelector.emailError).verifyVisibleElement(
"have.text",
usersText.errorTextFieldRequired
);
cy.clearAndType(commonSelectors.inputFieldFullName, data.firstName);
cy.get(commonSelectors.inputFieldEmailAddress).clear();
cy.get(usersSelector.buttonInviteUsers).click();
cy.get(usersSelector.emailError).verifyVisibleElement(
"have.text",
usersText.errorTextFieldRequired
);
cy.get(commonSelectors.inputFieldFullName).clear();
cy.clearAndType(commonSelectors.inputFieldEmailAddress, data.email);
cy.get(usersSelector.buttonInviteUsers).click();
cy.get(usersSelector.fullNameError).verifyVisibleElement(
"have.text",
usersText.errorTextFieldRequired
);
cy.clearAndType(commonSelectors.inputFieldFullName, data.firstName);
cy.clearAndType(
commonSelectors.inputFieldEmailAddress,
usersText.adminUserEmail
);
cy.get(usersSelector.buttonInviteUsers).click();
cy.get(commonSelectors.newToastMessage).should(
"have.text",
usersText.exsitingEmail
);
});
it("Should verify the confirm invite page and new user account", () => {
common.navigateToManageUsers();
users.inviteUser(data.firstName, data.email);
users.confirmInviteElements();
cy.clearAndType(commonSelectors.passwordInputField, "pass");
cy.get(commonSelectors.acceptInviteButton).should("be.disabled");
cy.clearAndType(commonSelectors.passwordInputField, usersText.password);
cy.get(commonSelectors.acceptInviteButton).should("not.be.disabled");
cy.get(commonSelectors.acceptInviteButton).click();
cy.get(commonSelectors.workspaceName).verifyVisibleElement(
"have.text",
"My workspace"
);
updateWorkspaceName(data.email);
common.logout();
cy.appUILogin();
common.navigateToManageUsers();
common.searchUser(data.email);
cy.contains("td", data.email)
.parent()
.within(() => {
cy.get("td small").should("have.text", usersText.activeStatus);
});
});
it("Should verify the user archive functionality", () => {
common.navigateToManageUsers();
common.searchUser(data.email);
cy.contains("td", data.email)
.parent()
.within(() => {
cy.get("td button").click();
});
cy.verifyToastMessage(
commonSelectors.toastMessage,
usersText.archivedToast
);
cy.contains("td", data.email)
.parent()
.within(() => {
cy.get("td small").should("have.text", usersText.archivedStatus);
});
common.logout();
cy.visit('/');
cy.clearAndType(commonSelectors.workEmailInputField, data.email);
cy.clearAndType(commonSelectors.passwordInputField, usersText.password);
cy.get(commonSelectors.loginButton).click();
updateWorkspaceName(data.email);
cy.get(commonSelectors.workspaceName).click();
cy.contains("My workspace").should("not.exist");
common.logout();
cy.appUILogin();
common.navigateToManageUsers();
common.searchUser(data.email);
cy.contains("td", data.email)
.parent()
.within(() => {
cy.get("td button").click();
});
cy.verifyToastMessage(
commonSelectors.toastMessage,
usersText.unarchivedToast
);
cy.task("updateId", {
dbconfig: Cypress.env("app_db"),
sql: `select invitation_token from users where email='${data.email}';`,
}).then((resp) => {
invitationToken = resp.rows[0].invitation_token;
cy.task("updateId", {
dbconfig: Cypress.env("app_db"),
sql: "select id from organizations where name='My workspace';",
}).then((resp) => {
workspaceId = resp.rows[0].id;
cy.task("updateId", {
dbconfig: Cypress.env("app_db"),
sql: `select id from users where email='${data.email}';`,
}).then((resp) => {
userId = resp.rows[0].id;
cy.task("updateId", {
dbconfig: Cypress.env("app_db"),
sql: `select invitation_token from organization_users where user_id='${userId}';`,
}).then((resp) => {
organizationToken = resp.rows[1].invitation_token;
url = `/invitations/${invitationToken}/workspaces/${organizationToken}?oid=${workspaceId}`;
cy.contains("td", data.email)
.parent()
.within(() => {
cy.get("td small").should("have.text", usersText.invitedStatus);
});
common.logout();
cy.wait(500);
cy.visit(url);
});
});
});
});
cy.get(usersSelector.acceptInvite).click();
cy.verifyToastMessage(commonSelectors.toastMessage, usersText.inviteToast);
cy.url().should("include", path.loginPath);
cy.appUILogin();
common.navigateToManageUsers();
common.searchUser(data.email);
cy.contains("td", data.email)
.parent()
.within(() => {
cy.get("td small").should("have.text", usersText.activeStatus);
});
});
it.skip("Should verify the user onboarding with groups", () => {
data.firstName = fake.firstName;
data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", "");
common.navigateToManageUsers();
users.fillUserInviteForm(data.firstName, data.email);
cy.get(".dropdown-heading-value > .gray").click();
cy.clearAndType(".search > input", "Test");
cy.get(".no-options").verifyVisibleElement("have.text", "No options");
users.selectUserGroup("Admin");
cy.get(".dropdown-heading-value > span").verifyVisibleElement(
"have.text",
"Admin"
);
cy.get(commonSelectors.cancelButton).click();
cy.get(usersSelector.buttonAddUsers).click();
cy.get(".dropdown-heading-value > .gray").verifyVisibleElement(
"have.text",
"Select groups to add for this user"
);
cy.get(commonSelectors.cancelButton).click();
users.inviteUserWithUserGroup(
data.firstName,
data.email,
"All users",
"Admin"
);
common.navigateToManageGroups();
cy.get(groupsSelector.groupLink("Admin")).click();
cy.get(groupsSelector.usersLink).click();
cy.get(groupsSelector.userRow(data.email)).should("be.visible");
data.firstName = fake.firstName;
data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", "");
cy.get(groupsSelector.createNewGroupButton).click();
cy.clearAndType(groupsSelector.groupNameInput, data.groupName);
cy.get(groupsSelector.createGroupButton).click();
cy.verifyToastMessage(
commonSelectors.toastMessage,
groupsText.groupCreatedToast)
common.navigateToManageUsers();
users.inviteUserWithUserGroup(
data.firstName,
data.email,
"All users",
data.groupName
);
common.logout()
cy.appUILogin()
common.navigateToManageGroups();
cy.get(groupsSelector.groupLink(data.groupName)).click();
cy.get(groupsSelector.usersLink).click();
cy.get(groupsSelector.userRow(data.email)).should("be.visible");
});
});