diff --git a/apps/admin-ui/cypress/e2e/clients_test.spec.ts b/apps/admin-ui/cypress/e2e/clients_test.spec.ts
index bf01b415d1..5d1f6d6ac1 100644
--- a/apps/admin-ui/cypress/e2e/clients_test.spec.ts
+++ b/apps/admin-ui/cypress/e2e/clients_test.spec.ts
@@ -711,7 +711,9 @@ describe("Clients test", () => {
commonPage.sidebar().waitForPageLoad();
createClientPage.save();
-
+ commonPage
+ .masthead()
+ .checkNotificationMessage("Client created successfully");
clientDetailsPage.goToAdvancedTab();
});
@@ -726,6 +728,7 @@ describe("Clients test", () => {
advancedTab.registerNodeManually().fillHost("localhost").saveHost();
advancedTab.checkTestClusterAvailability(true);
+ commonPage.masthead().checkNotificationMessage("Node successfully added");
advancedTab.deleteClusterNode();
commonPage.modalUtils().confirmModal();
commonPage
@@ -745,6 +748,64 @@ describe("Clients test", () => {
.revertFineGrain();
advancedTab.checkAccessTokenSignatureAlgorithm(algorithm);
});
+
+ it("OIDC Compatibility Modes configuration", () => {
+ advancedTab.clickAllCompatibilitySwitch();
+ advancedTab.saveCompatibility();
+ advancedTab.jumpToCompatability();
+ advancedTab.clickExcludeSessionStateSwitch();
+ advancedTab.clickUseRefreshTokenForClientCredentialsGrantSwitch();
+ advancedTab.revertCompatibility();
+ });
+
+ it("Advanced settings", () => {
+ advancedTab.jumpToAdvanced();
+
+ advancedTab.clickAdvancedSwitches();
+ advancedTab.jumpToAdvanced();
+ advancedTab.SelectKeyForCodeExchangeInput("S256");
+
+ advancedTab.saveAdvanced();
+ advancedTab.jumpToAdvanced();
+ advancedTab.checkAdvancedSwitchesOn();
+ advancedTab.CheckKeyForCodeExchangeInput("S256");
+
+ advancedTab.SelectKeyForCodeExchangeInput("plain");
+ advancedTab.CheckKeyForCodeExchangeInput("plain");
+
+ advancedTab.jumpToAdvanced();
+ advancedTab.clickAdvancedSwitches();
+
+ advancedTab.revertAdvanced();
+ advancedTab.jumpToAdvanced();
+ advancedTab.CheckKeyForCodeExchangeInput("S256");
+ //uncomment when revert button reverts all switches
+ //and ACR to LoA Mapping + Default ACR Values
+ //advancedTab.checkAdvancedSwitchesOn();
+ });
+
+ it("Authentication flow override", () => {
+ advancedTab.jumpToAuthFlow();
+ advancedTab.SelectBrowserFlowInput("browser");
+ advancedTab.SelectDirectGrantInput("docker auth");
+ advancedTab.CheckBrowserFlowInput("browser");
+ advancedTab.CheckDirectGrantInput("docker auth");
+
+ advancedTab.revertAuthFlowOverride();
+ advancedTab.jumpToAuthFlow();
+ advancedTab.CheckBrowserFlowInput("");
+ advancedTab.CheckDirectGrantInput("");
+ advancedTab.SelectBrowserFlowInput("browser");
+ advancedTab.SelectDirectGrantInput("docker auth");
+
+ advancedTab.saveAuthFlowOverride();
+ advancedTab.SelectBrowserFlowInput("first broker login");
+ advancedTab.SelectDirectGrantInput("first broker login");
+ advancedTab.revertAuthFlowOverride();
+ //revert doesn't work after saving.
+ //advancedTab.CheckBrowserFlowInput("browser");
+ //advancedTab.CheckDirectGrantInput("docker auth");
+ });
});
describe("Service account tab test", () => {
diff --git a/apps/admin-ui/cypress/support/pages/admin_console/manage/clients/client_details/tabs/AdvancedTab.ts b/apps/admin-ui/cypress/support/pages/admin_console/manage/clients/client_details/tabs/AdvancedTab.ts
index 4da660773b..36e9a5c4ff 100644
--- a/apps/admin-ui/cypress/support/pages/admin_console/manage/clients/client_details/tabs/AdvancedTab.ts
+++ b/apps/admin-ui/cypress/support/pages/admin_console/manage/clients/client_details/tabs/AdvancedTab.ts
@@ -1,6 +1,6 @@
-import CommonPage from "../../../../../CommonPage";
+import PageObject from "../../../../components/PageObject";
-export default class AdvancedTab extends CommonPage {
+export default class AdvancedTab extends PageObject {
private setToNowBtn = "#setToNow";
private clearBtn = "#clear";
private pushBtn = "#push";
@@ -21,6 +21,32 @@ export default class AdvancedTab extends CommonPage {
private accessTokenSignatureAlgorithmInput = "#accessTokenSignatureAlgorithm";
private fineGrainSaveBtn = "#fineGrainSave";
private fineGrainRevertBtn = "#fineGrainRevert";
+ private OIDCCompatabilitySaveBtn = "OIDCCompatabilitySave";
+ private OIDCCompatabilityRevertBtn = "OIDCCompatabilityRevert";
+ private OIDCAdvancedSaveBtn = "OIDCAdvancedSave";
+ private OIDCAdvancedRevertBtn = "OIDCAdvancedRevert";
+ private OIDCAuthFlowOverrideSaveBtn = "OIDCAuthFlowOverrideSave";
+ private OIDCAuthFlowOverrideRevertBtn = "OIDCAuthFlowOverrideRevert";
+
+ private excludeSessionStateSwitch =
+ "#excludeSessionStateFromAuthenticationResponse-switch";
+ private useRefreshTokenSwitch = "#useRefreshTokens";
+ private useRefreshTokenForClientCredentialsGrantSwitch =
+ "#useRefreshTokenForClientCredentialsGrant";
+ private useLowerCaseBearerTypeSwitch = "#useLowerCaseBearerType";
+
+ private oAuthMutualSwitch = "#oAuthMutual-switch";
+ private keyForCodeExchangeInput = "#keyForCodeExchange";
+ private pushedAuthorizationRequestRequiredSwitch =
+ "#pushedAuthorizationRequestRequired";
+
+ private browserFlowInput = "#browserFlow";
+ private directGrantInput = "#directGrant";
+
+ private jumpToOIDCCompatabilitySettings =
+ "jump-link-open-id-connect-compatibility-modes";
+ private jumpToAdvancedSettings = "jump-link-advanced-settings";
+ private jumpToAuthFlowOverride = "jump-link-authentication-flow-overrides";
setRevocationToNow() {
cy.get(this.setToNowBtn).click();
@@ -120,4 +146,143 @@ export default class AdvancedTab extends CommonPage {
cy.get(this.fineGrainRevertBtn).click();
return this;
}
+
+ saveCompatibility() {
+ cy.findByTestId(this.OIDCCompatabilitySaveBtn).click();
+ return this;
+ }
+
+ revertCompatibility() {
+ cy.findByTestId(this.OIDCCompatabilityRevertBtn).click();
+ cy.findByTestId(this.jumpToOIDCCompatabilitySettings).click();
+ //uncomment when revert function reverts all switches, rather than just the first one
+ //this.assertSwitchStateOn(cy.get(this.useRefreshTokenForClientCredentialsGrantSwitch));
+ this.assertSwitchStateOn(cy.get(this.excludeSessionStateSwitch));
+ return this;
+ }
+
+ jumpToCompatability() {
+ cy.findByTestId(this.jumpToOIDCCompatabilitySettings).click();
+ return this;
+ }
+
+ clickAllCompatibilitySwitch() {
+ cy.get(this.excludeSessionStateSwitch).parent().click();
+ this.assertSwitchStateOn(cy.get(this.excludeSessionStateSwitch));
+ cy.get(this.useRefreshTokenSwitch).parent().click();
+ this.assertSwitchStateOff(cy.get(this.useRefreshTokenSwitch));
+ cy.get(this.useRefreshTokenForClientCredentialsGrantSwitch)
+ .parent()
+ .click();
+ this.assertSwitchStateOn(
+ cy.get(this.useRefreshTokenForClientCredentialsGrantSwitch)
+ );
+ cy.get(this.useLowerCaseBearerTypeSwitch).parent().click();
+ this.assertSwitchStateOn(cy.get(this.useLowerCaseBearerTypeSwitch));
+ return this;
+ }
+
+ clickExcludeSessionStateSwitch() {
+ cy.get(this.excludeSessionStateSwitch).parent().click();
+ this.assertSwitchStateOff(cy.get(this.excludeSessionStateSwitch));
+ }
+ clickUseRefreshTokenForClientCredentialsGrantSwitch() {
+ cy.get(this.useRefreshTokenForClientCredentialsGrantSwitch)
+ .parent()
+ .click();
+ this.assertSwitchStateOff(
+ cy.get(this.useRefreshTokenForClientCredentialsGrantSwitch)
+ );
+ }
+
+ saveAdvanced() {
+ cy.findByTestId(this.OIDCAdvancedSaveBtn).click();
+ return this;
+ }
+
+ revertAdvanced() {
+ cy.findByTestId(this.OIDCAdvancedRevertBtn).click();
+ return this;
+ }
+
+ jumpToAdvanced() {
+ cy.findByTestId(this.jumpToAdvancedSettings).click();
+ return this;
+ }
+
+ clickAdvancedSwitches() {
+ cy.get(this.oAuthMutualSwitch).parent().click();
+ cy.get(this.pushedAuthorizationRequestRequiredSwitch).parent().click();
+ return this;
+ }
+
+ checkAdvancedSwitchesOn() {
+ this.assertSwitchStateOn(cy.get(this.oAuthMutualSwitch));
+ this.assertSwitchStateOn(
+ cy.get(this.pushedAuthorizationRequestRequiredSwitch)
+ );
+ return this;
+ }
+
+ checkAdvancedSwitchesOff() {
+ this.assertSwitchStateOff(cy.get(this.oAuthMutualSwitch));
+ this.assertSwitchStateOff(
+ cy.get(this.pushedAuthorizationRequestRequiredSwitch)
+ );
+ return this;
+ }
+
+ SelectKeyForCodeExchangeInput(input: string) {
+ cy.get(this.keyForCodeExchangeInput).click();
+ cy.get(this.keyForCodeExchangeInput + " + ul")
+ .contains(input)
+ .click();
+ return this;
+ }
+
+ CheckKeyForCodeExchangeInput(input: string) {
+ cy.get(this.keyForCodeExchangeInput).should("have.text", input);
+ return this;
+ }
+
+ saveAuthFlowOverride() {
+ cy.findByTestId(this.OIDCAuthFlowOverrideSaveBtn).click();
+ return this;
+ }
+
+ revertAuthFlowOverride() {
+ cy.findByTestId(this.OIDCAuthFlowOverrideRevertBtn).click();
+ return this;
+ }
+
+ jumpToAuthFlow() {
+ cy.findByTestId(this.jumpToAuthFlowOverride).click();
+ return this;
+ }
+
+ SelectBrowserFlowInput(input: string) {
+ cy.get(this.browserFlowInput).click();
+ cy.get(this.browserFlowInput + " + ul")
+ .contains(input)
+ .click();
+ return this;
+ }
+
+ SelectDirectGrantInput(input: string) {
+ cy.get(this.directGrantInput).click();
+ cy.get(this.directGrantInput + " + ul")
+ .contains(input)
+ .click();
+ return this;
+ }
+
+ CheckBrowserFlowInput(input: string) {
+ cy.get(this.browserFlowInput).should("have.text", input);
+ return this;
+ }
+
+ CheckDirectGrantInput(input: string) {
+ cy.get(this.directGrantInput).should("have.text", input);
+ return this;
+ }
}
diff --git a/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx b/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx
index cf350a11e2..f04c18bf07 100644
--- a/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx
+++ b/apps/admin-ui/src/clients/advanced/AdvancedSettings.tsx
@@ -205,10 +205,14 @@ export const AdvancedSettings = ({
>
)}
-
diff --git a/apps/admin-ui/src/clients/advanced/AuthenticationOverrides.tsx b/apps/admin-ui/src/clients/advanced/AuthenticationOverrides.tsx
index 1f56085e01..2079f69df6 100644
--- a/apps/admin-ui/src/clients/advanced/AuthenticationOverrides.tsx
+++ b/apps/admin-ui/src/clients/advanced/AuthenticationOverrides.tsx
@@ -128,10 +128,18 @@ export const AuthenticationOverrides = ({
)}
-
+
{t("common:save")}
-
+
{t("common:revert")}
diff --git a/apps/admin-ui/src/clients/advanced/OpenIdConnectCompatibilityModes.tsx b/apps/admin-ui/src/clients/advanced/OpenIdConnectCompatibilityModes.tsx
index c534254f4e..45a646a540 100644
--- a/apps/admin-ui/src/clients/advanced/OpenIdConnectCompatibilityModes.tsx
+++ b/apps/admin-ui/src/clients/advanced/OpenIdConnectCompatibilityModes.tsx
@@ -141,10 +141,18 @@ export const OpenIdConnectCompatibilityModes = ({
/>
-
+
{t("common:save")}
-
+
{t("common:revert")}