ToolJet/cypress-tests/cypress/e2e/globalDataSources/globalDataSourcePermissions.cy.js
Ajith KV 9afb42b845
Fixed platform cypress test case for release v2.10.3 (#7104)
* Fix and modify platform test cases

* fix failing test cases

* Fix failing workspace test cases

* Add wait for failed test cases

* Remove query success toast

* skip the user onboarding via group
2023-07-24 21:00:14 +05:30

274 lines
No EOL
9.4 KiB
JavaScript

import { fake } from "Fixtures/fake";
import { commonSelectors } from "Selectors/common";
import {
fillDataSourceTextField,
selectDataSource,
fillConnectionForm,
addQuery,
} from "Support/utils/postgreSql";
import { commonText } from "Texts/common";
import { closeDSModal, deleteDatasource } from "Support/utils/dataSource";
import { dataSourceSelector } from "Selectors/dataSource";
import { dataSourceText } from "Texts/dataSource";
import { addNewUserMW } from "Support/utils/userPermissions";
import { groupsSelector } from "Selectors/manageGroups";
import {
logout,
navigateToAppEditor,
navigateToManageGroups,
pinInspector
} from "Support/utils/common";
const data = {};
data.firstName = fake.firstName.toLowerCase().replaceAll("[^A-Za-z]", "");
data.email = fake.email.toLowerCase();
data.lastName = fake.lastName.toLowerCase().replaceAll("[^A-Za-z]", "");
data.appName = `${fake.companyName}-App`;
describe("Global Datasource Manager", () => {
beforeEach(() => {
cy.appUILogin();
cy.viewport(1200, 1300);
});
before(() => {
cy.appUILogin();
cy.createApp();
cy.renameApp(data.appName);
cy.dragAndDropWidget("Button", 50, 50);
cy.get(commonSelectors.editorPageLogo).click();
cy.reloadAppForTheElement(data.appName);
addNewUserMW(data.firstName, data.email);
logout();
});
it("Should verify the global data source manager UI", () => {
cy.get(commonSelectors.globalDataSourceIcon).click();
closeDSModal();
cy.get(commonSelectors.addNewDataSourceButton)
.verifyVisibleElement("have.text", commonText.addNewDataSourceButton)
.click();
cy.get(dataSourceSelector.allDatasourceLabelAndCount).should(
"have.text",
dataSourceText.allDataSources
);
cy.get(dataSourceSelector.databaseLabelAndCount).should(
"have.text",
dataSourceText.allDatabase
);
cy.get(dataSourceSelector.apiLabelAndCount).should(
"have.text",
dataSourceText.allApis
);
cy.get(dataSourceSelector.cloudStorageLabelAndCount).should(
"have.text",
dataSourceText.allCloudStorage
);
});
it("Should verify the Datasource connection and query creation using global data source", () => {
selectDataSource(dataSourceText.postgreSQL);
cy.clearAndType(
'[data-cy="data-source-name-input-filed"]',
`cypress-${data.lastName}-postgresql`
);
cy.intercept("GET", "api/v2/data_sources").as("datasource");
fillConnectionForm(
{
Host: Cypress.env("gds_pg_host"),
Port: "5432",
"Database Name": Cypress.env("gds_pg_user"),
Username: Cypress.env("gds_pg_user"),
Password: Cypress.env("gds_pg_password"),
},
".form-switch"
);
cy.wait("@datasource");
cy.get(dataSourceSelector.buttonTestConnection).click();
cy.get(dataSourceSelector.textConnectionVerified, {
timeout: 10000,
}).should("have.text", dataSourceText.labelConnectionVerified);
cy.get(dataSourceSelector.buttonSave).click();
cy.verifyToastMessage(
commonSelectors.toastMessage,
dataSourceText.toastDSAdded
);
cy.get(commonSelectors.globalDataSourceIcon).click();
cy.get(
`[data-cy="cypress-${data.lastName}-postgresql-button"]`
).verifyVisibleElement("have.text", `cypress-${data.lastName}-postgresql`);
cy.get(commonSelectors.dashboardIcon).click();
navigateToAppEditor(data.appName);
cy.get(
`[data-cy="cypress-${data.lastName}-postgresql-add-query-card"]`
).should("be.visible");
addQuery(
"table_preview",
`SELECT * FROM persons;`,
`cypress-${data.lastName}-postgresql`
);
cy.get('[data-cy="list-query-table_preview"]').verifyVisibleElement(
"have.text",
"table_preview"
);
pinInspector()
cy.get(dataSourceSelector.queryCreateAndRunButton).click();
cy.get('[data-cy="inspector-node-queries"]')
.parent()
.within(() => {
cy.get("span").first().scrollIntoView().contains("queries").dblclick();
});
cy.get('[data-cy="inspector-node-table_preview"] > .node-key').click();
cy.get('[data-cy="inspector-node-data"] > .fs-9').verifyVisibleElement(
"have.text",
"4 items "
);
cy.get(dataSourceSelector.buttonAddNewQueries).click();
cy.get(
".query-datasource-card-container > .col-auto > .query-manager-btn-name"
)
.should("be.visible")
.and("have.text", "Add new global datasource");
cy.get(
".query-datasource-card-container > .col-auto > .query-manager-btn-name"
).click();
selectDataSource(dataSourceText.postgreSQL);
cy.clearAndType(
'[data-cy="data-source-name-input-filed"]',
`cypress-${data.firstName}-postgresql`
);
cy.intercept("GET", "api/v2/data_sources").as("datasource");
fillConnectionForm(
{
Host: Cypress.env("pg_host"),
Port: "5432",
"Database Name": Cypress.env("pg_user"),
Username: Cypress.env("pg_user"),
Password: Cypress.env("pg_password"),
},
".form-switch"
);
cy.wait("@datasource");
navigateToManageGroups();
cy.get(groupsSelector.appSearchBox).click();
cy.get(groupsSelector.searchBoxOptions).contains(data.appName).click();
cy.get(groupsSelector.selectAddButton).click();
cy.contains("tr", data.appName)
.parent()
.within(() => {
cy.get("td input").eq(1).check();
});
cy.verifyToastMessage(
commonSelectors.toastMessage,
"App permissions updated"
);
cy.get(groupsSelector.permissionsLink).click();
cy.get(groupsSelector.appsCreateCheck).then(($el) => {
if (!$el.is(":checked")) {
cy.get(groupsSelector.appsCreateCheck).check();
}
});
});
it("Should validate the user's global data source permissions on apps created by admin", () => {
logout();
cy.login(data.email, "password");
cy.get(commonSelectors.globalDataSourceIcon).should("not.exist");
navigateToAppEditor(data.appName);
cy.get('[data-cy="list-query-table_preview"]').verifyVisibleElement(
"have.text",
"table_preview"
);
pinInspector()
cy.get(dataSourceSelector.queryCreateAndRunButton).click();
cy.get('[data-cy="inspector-node-queries"]')
.parent()
.within(() => {
cy.get("span").first().scrollIntoView().contains("queries").dblclick();
});
cy.get('[data-cy="inspector-node-table_preview"] > .node-key').click();
cy.get('[data-cy="inspector-node-data"] > .fs-9').verifyVisibleElement(
"have.text",
"4 items "
);
addQuery(
"student_data",
`SELECT * FROM student_data;`,
`cypress-${data.firstName}-postgresql`
);
cy.get('[data-cy="list-query-student_data"]').verifyVisibleElement(
"have.text",
"student_data"
);
cy.get(dataSourceSelector.queryCreateAndRunButton).click();
cy.get('[data-cy="inspector-node-queries"]')
.parent()
.within(() => {
cy.get("span").first().scrollIntoView().contains("queries").dblclick();
});
cy.get('[data-cy="inspector-node-student_data"] > .node-key').click();
cy.get('[data-cy="inspector-node-data"] > .fs-9').verifyVisibleElement(
"have.text",
"8 items "
);
cy.get(dataSourceSelector.buttonAddNewQueries).click();
cy.get(
".query-datasource-card-container > .col-auto > .query-manager-btn-name"
).click();
cy.verifyToastMessage(
commonSelectors.toastMessage,
"You don't have access to GDS, contact your workspace admin to add datasources"
);
});
it("Should verify the query creation and scope changing functionality.", () => {
logout();
cy.login(data.email, "password");
cy.createApp();
cy.renameApp(data.appName);
cy.dragAndDropWidget("Button", 50, 50);
addQuery(
"table_preview",
`SELECT * FROM persons;`,
`cypress-${data.lastName}-postgresql`
);
cy.get('[data-cy="list-query-table_preview"]').verifyVisibleElement(
"have.text",
"table_preview"
);
pinInspector()
cy.get(dataSourceSelector.queryCreateAndRunButton).click();
cy.get('[data-cy="inspector-node-queries"]')
.parent()
.within(() => {
cy.get("span").first().scrollIntoView().contains("queries").dblclick();
});
cy.get('[data-cy="inspector-node-table_preview"] > .node-key').click();
cy.get('[data-cy="inspector-node-data"] > .fs-9').verifyVisibleElement(
"have.text",
"4 items "
);
})
});