keycloak-scim/cypress/integration/realm_settings_client_policies_test.spec.ts

195 lines
6.3 KiB
TypeScript

import SidebarPage from "../support/pages/admin_console/SidebarPage";
import LoginPage from "../support/pages/LoginPage";
import RealmSettingsPage from "../support/pages/admin_console/manage/realm_settings/RealmSettingsPage";
import {
keycloakBefore,
keycloakBeforeEach,
} from "../support/util/keycloak_hooks";
import AdminClient from "../support/util/AdminClient";
import ModalUtils from "../support/util/ModalUtils";
import Masthead from "../support/pages/admin_console/Masthead";
const loginPage = new LoginPage();
const sidebarPage = new SidebarPage();
const modalUtils = new ModalUtils();
const masthead = new Masthead();
describe("Realm settings client policies tab tests", () => {
const realmName = "Realm_" + (Math.random() + 1).toString(36).substring(7);
const realmSettingsPage = new RealmSettingsPage(realmName);
beforeEach(() => {
keycloakBeforeEach();
sidebarPage
.waitForPageLoad()
.goToRealm(realmName)
.goToRealmSettings()
.waitForPageLoad();
realmSettingsPage.goToClientPoliciesTab().goToClientPoliciesList();
});
before(() => {
keycloakBefore();
new AdminClient().createRealm(realmName);
loginPage.logIn();
});
after(() => {
new AdminClient().deleteRealm(realmName);
});
it("Complete new client form and cancel", () => {
realmSettingsPage
.checkDisplayPoliciesTab()
.createNewClientPolicyFromEmptyState("Test", "Test Description", true)
.checkNewClientPolicyForm()
.cancelNewClientPolicyCreation()
.checkEmptyPolicyList();
});
it("Complete new client form and submit", () => {
const url = `/auth/admin/realms/${realmName}/client-policies/policies`;
cy.intercept("PUT", url).as("save");
realmSettingsPage.createNewClientPolicyFromEmptyState(
"Test",
"Test Description"
);
masthead.checkNotificationMessage("New policy created");
cy.wait("@save");
});
it("Should perform client profile search by profile name", () => {
realmSettingsPage.searchClientPolicy("Test");
});
it("Should not have conditions configured by default", () => {
realmSettingsPage.shouldNotHaveConditionsConfigured();
});
it("Should cancel adding a new condition to a client profile", () => {
realmSettingsPage.shouldCancelAddingCondition();
});
it("Should add a new client-roles condition to a client profile", () => {
realmSettingsPage.shouldAddClientRolesCondition();
});
it("Should add a new client-scopes condition to a client profile", () => {
realmSettingsPage.shouldAddClientScopesCondition();
});
it("Should edit the client-roles condition of a client profile", () => {
realmSettingsPage.shouldEditClientRolesCondition();
});
it("Should edit the client-scopes condition of a client profile", () => {
realmSettingsPage.shouldEditClientScopesCondition();
});
it("Should cancel deleting condition from a client profile", () => {
realmSettingsPage.deleteClientRolesCondition();
sidebarPage.waitForPageLoad();
modalUtils
.checkModalTitle("Delete condition?")
.checkModalMessage(
"This action will permanently delete client-roles. This cannot be undone."
)
.checkConfirmButtonText("Delete")
.cancelButtonContains("Cancel")
.cancelModal();
realmSettingsPage.checkConditionsListContains("client-roles");
});
it("Should delete client-roles condition from a client profile", () => {
realmSettingsPage.deleteClientRolesCondition();
sidebarPage.waitForPageLoad();
modalUtils.confirmModal();
realmSettingsPage.checkConditionsListContains("client-scopes");
});
it("Should delete client-scopes condition from a client profile", () => {
realmSettingsPage.shouldDeleteClientScopesCondition();
});
it("Check cancelling the client policy deletion", () => {
realmSettingsPage.deleteClientPolicyItemFromTable("Test");
modalUtils
.checkModalMessage(
"This action will permanently delete the policy Test. This cannot be undone."
)
.cancelModal();
realmSettingsPage.checkElementInList("Test");
});
it("Check deleting the client policy", () => {
realmSettingsPage.deleteClientPolicyItemFromTable("Test");
modalUtils.confirmModal();
masthead.checkNotificationMessage("Client policy deleted");
realmSettingsPage.checkEmptyPolicyList();
});
it("Check navigating between Form View and JSON editor", () => {
realmSettingsPage.shouldNavigateBetweenFormAndJSONViewPolicies();
});
it("Should not create duplicate client profile", () => {
const url = `/auth/admin/realms/${realmName}/client-policies/policies`;
cy.intercept("PUT", url).as("save");
realmSettingsPage.createNewClientPolicyFromEmptyState(
"Test",
"Test Description"
);
masthead.checkNotificationMessage("New policy created");
cy.wait("@save");
sidebarPage.goToRealmSettings();
realmSettingsPage.goToClientPoliciesTab().goToClientPoliciesList();
realmSettingsPage.createNewClientPolicyFromList(
"Test",
"Test Again Description"
);
cy.wait("@save");
// TODO: UNCOMMENT WHEN THE ISSUE 2050 IS FIXED
//realmSettingsPage.checkAlertMessage("Could not create client policy: 'proposed client policy name duplicated.'");
sidebarPage.goToRealmSettings();
realmSettingsPage
.goToClientPoliciesTab()
.goToClientPoliciesList()
.deleteClientPolicyItemFromTable("Test");
modalUtils.confirmModal();
cy.wait("@save");
masthead.checkNotificationMessage("Client policy deleted");
realmSettingsPage.checkEmptyPolicyList();
});
it("Check deleting newly created client policy from create view via dropdown", () => {
const url = `/auth/admin/realms/${realmName}/client-policies/policies`;
cy.intercept("PUT", url).as("save");
realmSettingsPage.createNewClientPolicyFromEmptyState(
"Test again",
"Test Again Description"
);
masthead.checkNotificationMessage("New policy created");
sidebarPage.waitForPageLoad();
cy.wait("@save");
masthead.closeLastAlertMessage();
realmSettingsPage.deleteClientPolicyFromDetails();
modalUtils.confirmModal();
masthead.checkNotificationMessage("Client policy deleted");
sidebarPage.waitForPageLoad();
realmSettingsPage.checkEmptyPolicyList();
});
it("Check reloading JSON policies", () => {
realmSettingsPage.shouldReloadJSONPolicies();
});
});