Adds Realm Settings tests for general tab (#2336)
This commit is contained in:
parent
ef9d0ca822
commit
bb226b52ff
4 changed files with 224 additions and 25 deletions
169
cypress/integration/realm_settings_general_tab_test.spec.ts
Normal file
169
cypress/integration/realm_settings_general_tab_test.spec.ts
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
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 Masthead from "../support/pages/admin_console/Masthead";
|
||||||
|
import { keycloakBefore } from "../support/util/keycloak_hooks";
|
||||||
|
import adminClient from "../support/util/AdminClient";
|
||||||
|
|
||||||
|
const loginPage = new LoginPage();
|
||||||
|
const sidebarPage = new SidebarPage();
|
||||||
|
const masthead = new Masthead();
|
||||||
|
const realmSettingsPage = new RealmSettingsPage();
|
||||||
|
|
||||||
|
describe("Realm settings general tab tests", () => {
|
||||||
|
const realmName = "Realm_" + (Math.random() + 1).toString(36).substring(7);
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
keycloakBefore();
|
||||||
|
loginPage.logIn();
|
||||||
|
sidebarPage.goToRealm(realmName);
|
||||||
|
});
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
await adminClient.createRealm(realmName);
|
||||||
|
});
|
||||||
|
|
||||||
|
after(async () => {
|
||||||
|
await adminClient.deleteRealm(realmName);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Test all general tab switches", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.toggleSwitch(realmSettingsPage.managedAccessSwitch);
|
||||||
|
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
realmSettingsPage.toggleSwitch(realmSettingsPage.managedAccessSwitch);
|
||||||
|
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
|
||||||
|
// Enable realm
|
||||||
|
realmSettingsPage.toggleSwitch(`${realmName}-switch`);
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
|
||||||
|
// Disable realm
|
||||||
|
realmSettingsPage.toggleSwitch(`${realmName}-switch`);
|
||||||
|
realmSettingsPage.disableRealm();
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
|
||||||
|
// Re-enable realm
|
||||||
|
realmSettingsPage.toggleSwitch(`${realmName}-switch`);
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Modify Display name", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.fillDisplayName("display_name");
|
||||||
|
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Check Display name value", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.getDisplayName("display_name");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Modify front end URL", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.fillFrontendURL("www.example.com");
|
||||||
|
|
||||||
|
// TODO: Fix internal server error 500 when front-end URL is saved
|
||||||
|
// realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||||
|
// masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
|
||||||
|
realmSettingsPage.getFrontendURL("www.example.com");
|
||||||
|
realmSettingsPage.clearFrontendURL();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Select SSL all requests", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.fillRequireSSL("All requests");
|
||||||
|
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Verify SSL all requests displays", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.getRequireSSL("All requests");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Select SSL external requests", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.fillRequireSSL("External requests");
|
||||||
|
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Verify SSL external requests displays", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.getRequireSSL("External requests");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Select SSL None", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.fillRequireSSL("None");
|
||||||
|
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
||||||
|
masthead.checkNotificationMessage("Realm successfully updated", true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Verify SSL None displays", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
realmSettingsPage.getRequireSSL("None");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Check Access Endpoints OpenID Endpoint Configuration link", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
|
||||||
|
// Check link exists
|
||||||
|
cy.get("a")
|
||||||
|
.contains("OpenID Endpoint Configuration")
|
||||||
|
.should(
|
||||||
|
"have.attr",
|
||||||
|
"href",
|
||||||
|
`http://localhost:8080/realms/${realmName}/.well-known/openid-configuration`
|
||||||
|
)
|
||||||
|
.should("have.attr", "target", "_blank")
|
||||||
|
.should("have.attr", "rel", "noreferrer noopener");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Access Endpoints OpenID Endpoint Configuration link", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
// Check the link is live
|
||||||
|
cy.get("a")
|
||||||
|
.contains("OpenID Endpoint Configuration")
|
||||||
|
.then((link) => {
|
||||||
|
cy.request(link.prop("href")).its("status").should("eq", 200);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Check if Access Endpoints SAML 2.0 Identity Provider Metadata link exists", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
cy.get("a")
|
||||||
|
.contains("SAML 2.0 Identity Provider Metadata")
|
||||||
|
.should(
|
||||||
|
"have.attr",
|
||||||
|
"href",
|
||||||
|
`http://localhost:8080/realms/${realmName}/protocol/saml/descriptor`
|
||||||
|
)
|
||||||
|
.should("have.attr", "target", "_blank")
|
||||||
|
.should("have.attr", "rel", "noreferrer noopener");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Access Endpoints SAML 2.0 Identity Provider Metadata link", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
|
||||||
|
// Check the link is live
|
||||||
|
cy.get("a")
|
||||||
|
.contains("SAML 2.0 Identity Provider Metadata ")
|
||||||
|
.then((link) => {
|
||||||
|
cy.request(link.prop("href")).its("status").should("eq", 200);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Verify 'Revert' button works", () => {
|
||||||
|
sidebarPage.goToRealmSettings();
|
||||||
|
|
||||||
|
realmSettingsPage.fillDisplayName("should_be_reverted");
|
||||||
|
realmSettingsPage.revert(realmSettingsPage.generalRevertBtn);
|
||||||
|
realmSettingsPage.getDisplayName("display_name");
|
||||||
|
});
|
||||||
|
});
|
|
@ -27,29 +27,6 @@ describe("Realm settings tabs tests", () => {
|
||||||
await adminClient.deleteRealm(realmName);
|
await adminClient.deleteRealm(realmName);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Go to general tab", () => {
|
|
||||||
sidebarPage.goToRealmSettings();
|
|
||||||
realmSettingsPage.toggleSwitch(realmSettingsPage.managedAccessSwitch);
|
|
||||||
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
|
||||||
masthead.checkNotificationMessage("Realm successfully updated", true);
|
|
||||||
realmSettingsPage.toggleSwitch(realmSettingsPage.managedAccessSwitch);
|
|
||||||
realmSettingsPage.save(realmSettingsPage.generalSaveBtn);
|
|
||||||
masthead.checkNotificationMessage("Realm successfully updated", true);
|
|
||||||
|
|
||||||
// Enable realm
|
|
||||||
realmSettingsPage.toggleSwitch(`${realmName}-switch`);
|
|
||||||
masthead.checkNotificationMessage("Realm successfully updated", true);
|
|
||||||
|
|
||||||
// Disable realm
|
|
||||||
realmSettingsPage.toggleSwitch(`${realmName}-switch`);
|
|
||||||
realmSettingsPage.disableRealm();
|
|
||||||
masthead.checkNotificationMessage("Realm successfully updated", true);
|
|
||||||
|
|
||||||
// Re-enable realm
|
|
||||||
realmSettingsPage.toggleSwitch(`${realmName}-switch`);
|
|
||||||
masthead.checkNotificationMessage("Realm successfully updated");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows the 'user profile' tab if enabled", () => {
|
it("shows the 'user profile' tab if enabled", () => {
|
||||||
sidebarPage.goToRealmSettings();
|
sidebarPage.goToRealmSettings();
|
||||||
cy.findByTestId(realmSettingsPage.userProfileTab).should("not.exist");
|
cy.findByTestId(realmSettingsPage.userProfileTab).should("not.exist");
|
||||||
|
|
|
@ -3,6 +3,7 @@ import ListingPage from "../../ListingPage";
|
||||||
const expect = chai.expect;
|
const expect = chai.expect;
|
||||||
export default class RealmSettingsPage {
|
export default class RealmSettingsPage {
|
||||||
generalSaveBtn = "general-tab-save";
|
generalSaveBtn = "general-tab-save";
|
||||||
|
generalRevertBtn = "general-tab-revert";
|
||||||
themesSaveBtn = "themes-tab-save";
|
themesSaveBtn = "themes-tab-save";
|
||||||
loginTab = "rs-login-tab";
|
loginTab = "rs-login-tab";
|
||||||
userProfileTab = "rs-user-profile-tab";
|
userProfileTab = "rs-user-profile-tab";
|
||||||
|
@ -220,6 +221,10 @@ export default class RealmSettingsPage {
|
||||||
private selectScopeButton = "addValue";
|
private selectScopeButton = "addValue";
|
||||||
private deleteClientRolesConditionBtn = "delete-client-roles-condition";
|
private deleteClientRolesConditionBtn = "delete-client-roles-condition";
|
||||||
private deleteClientScopesConditionBtn = "delete-client-scopes-condition";
|
private deleteClientScopesConditionBtn = "delete-client-scopes-condition";
|
||||||
|
private realmDisplayName = "#kc-display-name";
|
||||||
|
private displayNameHTML = "#kc-html-display-name";
|
||||||
|
private frontEndURL = "#kc-frontend-url";
|
||||||
|
private requireSSL = "#kc-require-ssl";
|
||||||
|
|
||||||
private realmName?: string;
|
private realmName?: string;
|
||||||
constructor(realmName?: string) {
|
constructor(realmName?: string) {
|
||||||
|
@ -268,6 +273,42 @@ export default class RealmSettingsPage {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getDisplayName(name: string) {
|
||||||
|
cy.get(this.realmDisplayName).should("have.value", name);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
getFrontendURL(url: string) {
|
||||||
|
cy.get(this.frontEndURL).should("have.value", url);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
getRequireSSL(option: string) {
|
||||||
|
cy.get(this.requireSSL).contains(option);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
fillDisplayName(displayName: string) {
|
||||||
|
cy.get(this.realmDisplayName).clear().type(displayName);
|
||||||
|
}
|
||||||
|
|
||||||
|
fillFrontendURL(url: string) {
|
||||||
|
cy.get(this.frontEndURL).clear().type(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
clearFrontendURL() {
|
||||||
|
cy.get(this.frontEndURL).clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
fillRequireSSL(option: string) {
|
||||||
|
cy.get(this.requireSSL)
|
||||||
|
.click()
|
||||||
|
.get(".pf-c-select__menu-item")
|
||||||
|
.contains(option)
|
||||||
|
.click();
|
||||||
|
}
|
||||||
|
|
||||||
setDefaultLocale(locale: string) {
|
setDefaultLocale(locale: string) {
|
||||||
cy.get(this.selectDefaultLocale).click();
|
cy.get(this.selectDefaultLocale).click();
|
||||||
cy.get(this.defaultLocaleList).contains(locale).click();
|
cy.get(this.defaultLocaleList).contains(locale).click();
|
||||||
|
@ -350,6 +391,12 @@ export default class RealmSettingsPage {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
revert(revertBtn: string) {
|
||||||
|
cy.findByTestId(revertBtn).click();
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
clearEvents(type: "admin" | "user") {
|
clearEvents(type: "admin" | "user") {
|
||||||
cy.findByTestId(`clear-${type}-events`).click();
|
cy.findByTestId(`clear-${type}-events`).click();
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,9 @@ export const RealmSettingsGeneralTab = ({
|
||||||
control={control}
|
control={control}
|
||||||
defaultValue=""
|
defaultValue=""
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
<ClipboardCopy onChange={onChange}>{value}</ClipboardCopy>
|
<ClipboardCopy data-testid="realmName" onChange={onChange}>
|
||||||
|
{value}
|
||||||
|
</ClipboardCopy>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
@ -232,7 +234,11 @@ export const RealmSettingsGeneralTab = ({
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("common:save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="link" onClick={reset}>
|
<Button
|
||||||
|
data-testid="general-tab-revert"
|
||||||
|
variant="link"
|
||||||
|
onClick={reset}
|
||||||
|
>
|
||||||
{t("common:revert")}
|
{t("common:revert")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
|
|
Loading…
Reference in a new issue