keycloak-scim/cypress/support/pages/admin_console/manage/clients/CreateClientPage.ts
agagancarczyk 45746e7660
wip: realm_test fix/improvement attempt (#2446)
* test fix attempt

* test fix attempt 2

* test fix attempt 3

* test fix attempt 4

* test fix attempt 4

* cleanup

* fix for client test

* fix attempt 5

Co-authored-by: Agnieszka Gancarczyk <agancarc@redhat.com>
2022-04-13 14:16:37 +02:00

289 lines
8.9 KiB
TypeScript

export default class CreateClientPage {
private clientTypeDrpDwn = ".pf-c-select__toggle";
private clientTypeList = ".pf-c-select__toggle + ul";
private clientIdInput = "#kc-client-id";
private clientIdError = "#kc-client-id + div";
private clientNameInput = "#kc-name";
private clientDescriptionInput = "#kc-description";
private alwaysDisplayInConsoleSwitch =
'[for="kc-always-display-in-console-switch"] .pf-c-switch__toggle';
private frontchannelLogoutSwitch =
'[for="kc-frontchannelLogout-switch"] .pf-c-switch__toggle';
private clientAuthenticationSwitch =
'[for="kc-authentication-switch"] > .pf-c-switch__toggle';
private clientAuthenticationSwitchInput = "#kc-authentication-switch";
private clientAuthorizationSwitch =
'[for="kc-authorization-switch"] > .pf-c-switch__toggle';
private clientAuthorizationSwitchInput = "#kc-authorization-switch";
private standardFlowChkBx = "#kc-flow-standard";
private directAccessChkBx = "#kc-flow-direct";
private implicitFlowChkBx = "#kc-flow-implicit";
private oidcCibaGrantChkBx = "#kc-oidc-ciba-grant";
private deviceAuthGrantChkBx = "#kc-oauth-device-authorization-grant";
private serviceAccountRolesChkBx = "#kc-flow-service-account";
private rootUrlInput = "#kc-root-url";
private homeUrlInput = "#kc-home-url";
private firstValidRedirectUrlInput = "#redirectUris0";
private firstWebOriginsInput = "#webOrigins0";
private adminUrlInput = "#kc-admin-url";
private loginThemeDrpDwn = "#loginTheme";
private loginThemeList = 'ul[aria-label="Login theme"]';
private consentRequiredSwitch =
'[for="kc-consent-switch"] > .pf-c-switch__toggle';
private consentRequiredSwitchInput = "#kc-consent-switch";
private displayClientOnScreenSwitch = '[for="kc-display-on-client-switch"]';
private displayClientOnScreenSwitchInput = "#kc-display-on-client-switch";
private clientConsentScreenText = "#kc-consent-screen-text";
private frontChannelLogoutSwitch =
'[for="frontchannelLogout"] > .pf-c-switch__toggle';
private frontChannelLogoutSwitchInput = "#frontchannelLogout";
private frontChannelLogoutInput = "#frontchannelLogoutUrl";
private backChannelLogoutInput = "#backchannelLogoutUrl";
private backChannelLogoutRequiredSwitchInput =
"#backchannelLogoutSessionRequired";
private backChannelLogoutRevoqueSwitch =
'.pf-c-form__group-control [for="backchannelLogoutRevokeOfflineSessions"] > .pf-c-switch__toggle';
private backChannelLogoutRevoqueSwitchInput =
"#backchannelLogoutRevokeOfflineSessions";
private actionDrpDwn = "action-dropdown";
private deleteClientBtn = "delete-client";
private saveBtn = "save";
private continueBtn = "next";
private backBtn = "back";
private cancelBtn = "cancel";
//#region General Settings
selectClientType(clientType: string) {
cy.get(this.clientTypeDrpDwn).click();
cy.get(this.clientTypeList).findByTestId(`option-${clientType}`).click();
return this;
}
fillClientData(
id: string,
name = "",
description = "",
alwaysDisplay?: boolean,
frontchannelLogout?: boolean
) {
cy.get(this.clientIdInput).clear();
if (id) {
cy.get(this.clientIdInput).type(id);
}
if (name) {
cy.get(this.clientNameInput).type(name);
}
if (description) {
cy.get(this.clientDescriptionInput).type(description);
}
if (alwaysDisplay) {
cy.get(this.alwaysDisplayInConsoleSwitch).click();
}
if (frontchannelLogout) {
cy.get(this.frontchannelLogoutSwitch).click();
}
return this;
}
changeSwitches(switches: string[]) {
for (const uiSwitch of switches) {
cy.findByTestId(uiSwitch).check({ force: true });
}
return this;
}
checkClientIdRequiredMessage(exist = true) {
cy.get(this.clientIdError).should((!exist ? "not." : "") + "exist");
return this;
}
checkGeneralSettingsStepActive() {
cy.get(".pf-c-wizard__nav-link")
.contains("General Settings")
.should("have.class", "pf-m-current");
return this;
}
//#endregion
//#region Capability config
switchClientAuthentication() {
cy.get(this.clientAuthenticationSwitch).click();
return this;
}
switchClientAuthorization() {
cy.get(this.clientAuthorizationSwitch).click();
return this;
}
clickStandardFlow() {
cy.get(this.standardFlowChkBx).click();
return this;
}
clickDirectAccess() {
cy.get(this.directAccessChkBx).click();
return this;
}
clickImplicitFlow() {
cy.get(this.implicitFlowChkBx).click();
return this;
}
clickServiceAccountRoles() {
cy.get(this.serviceAccountRolesChkBx).click();
return this;
}
clickOAuthDeviceAuthorizationGrant() {
cy.get(this.deviceAuthGrantChkBx).click();
return this;
}
clickOidcCibaGrant() {
cy.get(this.oidcCibaGrantChkBx).click();
return this;
}
//#endregion
save() {
cy.findByTestId(this.saveBtn).click();
return this;
}
continue() {
cy.findByTestId(this.continueBtn).click();
return this;
}
back() {
cy.findByTestId(this.backBtn).click();
return this;
}
cancel() {
cy.findByTestId(this.cancelBtn).click();
return this;
}
checkCapabilityConfigElements() {
cy.get(this.oidcCibaGrantChkBx).scrollIntoView();
cy.get(this.clientAuthenticationSwitchInput).should("not.be.disabled");
cy.get(this.clientAuthorizationSwitchInput).should("be.disabled");
cy.get(this.standardFlowChkBx).should("not.be.disabled");
cy.get(this.directAccessChkBx).should("not.be.disabled");
cy.get(this.implicitFlowChkBx).should("not.be.disabled");
cy.get(this.serviceAccountRolesChkBx).should("be.disabled");
cy.get(this.deviceAuthGrantChkBx).should("not.be.disabled");
cy.get(this.oidcCibaGrantChkBx).should("be.disabled");
cy.get(this.clientAuthenticationSwitch).click();
cy.get(this.clientAuthorizationSwitchInput).should("not.be.disabled");
cy.get(this.serviceAccountRolesChkBx).should("not.be.disabled");
cy.get(this.oidcCibaGrantChkBx).should("not.be.disabled");
cy.get(this.clientAuthorizationSwitch).click();
cy.get(this.serviceAccountRolesChkBx).should("be.disabled");
cy.get(this.oidcCibaGrantChkBx).should("not.be.disabled");
cy.get(this.clientAuthorizationSwitch).click();
cy.get(this.serviceAccountRolesChkBx).should("not.be.disabled");
cy.get(this.clientAuthenticationSwitch).click();
cy.get(this.serviceAccountRolesChkBx).should("be.disabled");
cy.get(this.oidcCibaGrantChkBx).should("be.disabled");
return this;
}
checkAccessSettingsElements() {
cy.get(this.adminUrlInput).scrollIntoView();
cy.get(this.rootUrlInput).should("not.be.disabled");
cy.get(this.homeUrlInput).should("not.be.disabled");
cy.get(this.firstValidRedirectUrlInput).should("not.be.disabled");
cy.get(this.firstWebOriginsInput).should("not.be.disabled");
cy.get(this.adminUrlInput).should("not.be.disabled");
return this;
}
checkLoginSettingsElements() {
cy.get(this.clientConsentScreenText).scrollIntoView();
cy.get(this.loginThemeDrpDwn).should("not.be.disabled");
cy.get(this.consentRequiredSwitchInput).should("not.be.disabled");
cy.get(this.displayClientOnScreenSwitchInput).should("be.disabled");
cy.get(this.clientConsentScreenText).should("be.disabled");
cy.get(this.loginThemeDrpDwn).click();
cy.get(this.loginThemeList).findByText("base").should("exist");
cy.get(this.loginThemeList).findByText("keycloak").should("exist");
cy.get(this.loginThemeDrpDwn).click();
cy.get(this.consentRequiredSwitch).click();
cy.get(this.displayClientOnScreenSwitchInput).should("not.be.disabled");
cy.get(this.clientConsentScreenText).should("be.disabled");
cy.get(this.displayClientOnScreenSwitch).click();
cy.get(this.clientConsentScreenText).should("not.be.disabled");
cy.get(this.displayClientOnScreenSwitch).click();
cy.get(this.clientConsentScreenText).should("be.disabled");
cy.get(this.consentRequiredSwitch).click();
cy.get(this.displayClientOnScreenSwitchInput).should("be.disabled");
return this;
}
checkLogoutSettingsElements() {
cy.get(this.backChannelLogoutRevoqueSwitch).scrollIntoView();
cy.get(this.frontChannelLogoutSwitchInput).should("not.be.disabled");
cy.get(this.frontChannelLogoutInput).should("not.be.disabled");
cy.get(this.backChannelLogoutInput).should("not.be.disabled");
cy.get(this.backChannelLogoutRequiredSwitchInput).should("not.be.disabled");
cy.get(this.backChannelLogoutRevoqueSwitchInput).should("not.be.disabled");
cy.get(this.frontChannelLogoutSwitch).click();
cy.get(this.frontChannelLogoutInput).should("not.exist");
cy.get(this.frontChannelLogoutSwitch).click();
cy.get(this.frontChannelLogoutInput).should("not.be.disabled");
return this;
}
deleteClientFromActionDropdown() {
cy.findAllByTestId(this.actionDrpDwn).click();
cy.findAllByTestId(this.deleteClientBtn).click();
return this;
}
}