From 97f5d7de2abd7d1d4b4d4285418cec530949c89f Mon Sep 17 00:00:00 2001 From: Francis PEROT Date: Wed, 13 May 2026 14:04:50 +0200 Subject: [PATCH] [CLOUDTRUST-6797] Test framework enhancements --- build.pipeline | 1 + cloudtrust-bom/pom.xml | 81 +++++++++++++++++++ cloudtrust-common/pom.xml | 2 +- cloudtrust-test-tools/pom.xml | 2 +- .../kc-cloudtrust-common/pom.xml | 2 +- kc-cloudtrust-module/pom.xml | 7 +- .../kc-cloudtrust-db-access/pom.xml | 2 +- .../kc-cloudtrust-test-tools/pom.xml | 6 +- .../keycloak/test/KeycloakClientProvider.java | 1 + .../keycloak/test/ctpages/AbstractCtPage.java | 16 +++- .../keycloak/test/ctpages/LoginPage.java | 19 +++-- .../test/ctpages/LoginPasswordResetPage.java | 2 +- .../keycloak/test/events/EventsManager.java | 1 + .../test/matchers/CtPageMatchers.java | 22 ++++- kc-cloudtrust-testsuite/pom.xml | 17 ++-- pom.xml | 6 +- 16 files changed, 158 insertions(+), 29 deletions(-) create mode 100644 cloudtrust-bom/pom.xml diff --git a/build.pipeline b/build.pipeline index 6d6a08e..ceaee6d 100644 --- a/build.pipeline +++ b/build.pipeline @@ -2,6 +2,7 @@ javaBuildPipeline( 'kc-cloudtrust-parent', [ [name: 'cloudtrust-parent', path: '.'], + [name: 'cloudtrust-bom', path: './cloudtrust-bom'], [name: 'cloudtrust-test-tools', path: './cloudtrust-test-tools'], [name: 'cloudtrust-common', path: './cloudtrust-common'], [name: 'kc-cloudtrust-common', path: './kc-cloudtrust-module/kc-cloudtrust-common', pom: './kc-cloudtrust-module/pom.xml'], diff --git a/cloudtrust-bom/pom.xml b/cloudtrust-bom/pom.xml new file mode 100644 index 0000000..bb5dc6a --- /dev/null +++ b/cloudtrust-bom/pom.xml @@ -0,0 +1,81 @@ + + 4.0.0 + + + io.cloudtrust + cloudtrust-parent + 26.1.0-SNAPSHOT + + + cloudtrust-bom + pom + cloudtrust-bom + BOM exposing Cloudtrust managed dependencies and third-party versions + + + + 26.2.4 + 21 + 2.18.2 + 2.18.2 + 1.2.1 + 5.11.3 + 1.11.3 + 1.3 + 0.8.12 + 4.8.6 + 7.6.8 + 1.13.0 + 11.1.1 + + 1.10.0 + 4.4 + 9.0.4 + 5.14.2 + 3.14.0 + 7.9.Final + 2.0.2.Final + 1.12.1 + + 2.5.4 + 1.0.0.Final + 2.18.2 + 3.4.1.Final + 2.0.16 + 2.1.2 + 4.25.0 + 6.1.0 + 2.3.18.Final + + + + + + io.cloudtrust + cloudtrust-common + ${cloudtrust.version} + provided + + + io.cloudtrust + kc-cloudtrust-common + ${cloudtrust.version} + provided + + + io.cloudtrust + cloudtrust-test-tools + ${cloudtrust.version} + test + + + io.cloudtrust + kc-cloudtrust-test-tools + ${cloudtrust.version} + test + + + + diff --git a/cloudtrust-common/pom.xml b/cloudtrust-common/pom.xml index efd75ce..fb2ae1b 100644 --- a/cloudtrust-common/pom.xml +++ b/cloudtrust-common/pom.xml @@ -4,7 +4,7 @@ io.cloudtrust cloudtrust-parent - 26.0.10-SNAPSHOT + 26.1.0-SNAPSHOT cloudtrust-common diff --git a/cloudtrust-test-tools/pom.xml b/cloudtrust-test-tools/pom.xml index e3c43f9..7c1598c 100644 --- a/cloudtrust-test-tools/pom.xml +++ b/cloudtrust-test-tools/pom.xml @@ -4,7 +4,7 @@ io.cloudtrust cloudtrust-parent - 26.0.10-SNAPSHOT + 26.1.0-SNAPSHOT cloudtrust-test-tools diff --git a/kc-cloudtrust-module/kc-cloudtrust-common/pom.xml b/kc-cloudtrust-module/kc-cloudtrust-common/pom.xml index 3bc25b3..8692861 100644 --- a/kc-cloudtrust-module/kc-cloudtrust-common/pom.xml +++ b/kc-cloudtrust-module/kc-cloudtrust-common/pom.xml @@ -3,7 +3,7 @@ io.cloudtrust kc-cloudtrust-module - 26.0.10-SNAPSHOT + 26.1.0-SNAPSHOT kc-cloudtrust-common diff --git a/kc-cloudtrust-module/pom.xml b/kc-cloudtrust-module/pom.xml index 6c9acf6..e93add1 100644 --- a/kc-cloudtrust-module/pom.xml +++ b/kc-cloudtrust-module/pom.xml @@ -3,7 +3,7 @@ io.cloudtrust kc-cloudtrust-module - 26.0.10-SNAPSHOT + 26.1.0-SNAPSHOT Parent for keycloak modules pom @@ -12,6 +12,7 @@ + 26.1.0-SNAPSHOT 26.2.4 1.10.0 4.4 @@ -72,12 +73,12 @@ io.cloudtrust cloudtrust-common - ${project.version} + ${cloudtrust.version} io.cloudtrust kc-cloudtrust-common - ${project.version} + ${cloudtrust.version} org.keycloak diff --git a/kc-cloudtrust-testsuite/kc-cloudtrust-db-access/pom.xml b/kc-cloudtrust-testsuite/kc-cloudtrust-db-access/pom.xml index 563fb7f..fdec70b 100644 --- a/kc-cloudtrust-testsuite/kc-cloudtrust-db-access/pom.xml +++ b/kc-cloudtrust-testsuite/kc-cloudtrust-db-access/pom.xml @@ -5,7 +5,7 @@ io.cloudtrust kc-cloudtrust-testsuite - 26.0.10-SNAPSHOT + 26.1.0-SNAPSHOT kc-cloudtrust-db-access diff --git a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/pom.xml b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/pom.xml index d9178f7..c5a44b5 100644 --- a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/pom.xml +++ b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/pom.xml @@ -5,7 +5,7 @@ io.cloudtrust kc-cloudtrust-testsuite - 26.0.10-SNAPSHOT + 26.1.0-SNAPSHOT kc-cloudtrust-test-tools @@ -21,6 +21,10 @@ + + io.cloudtrust + cloudtrust-common + org.keycloak keycloak-services diff --git a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/KeycloakClientProvider.java b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/KeycloakClientProvider.java index 8a34680..9ef966b 100644 --- a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/KeycloakClientProvider.java +++ b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/KeycloakClientProvider.java @@ -19,6 +19,7 @@ * * @author fpe */ +@Deprecated public class KeycloakClientProvider { private static final Logger LOG = Logger.getLogger(KeycloakClientProvider.class); diff --git a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/AbstractCtPage.java b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/AbstractCtPage.java index 825bc3f..b4f6429 100644 --- a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/AbstractCtPage.java +++ b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/AbstractCtPage.java @@ -61,8 +61,14 @@ public void assertCurrent() { Assertions.assertTrue(isCurrent(), "Expected " + name + " but was " + driver.getTitle() + " (" + driver.getCurrentUrl() + ")"); } + /** + * Deprecated method... Use AbstractPage::isActivePage instead + * @return true if the current page is the expected one + */ + @Deprecated public boolean isCurrent() { - return false; + var currentPageId = getCurrentPageId(); + return currentPageId!=null && currentPageId.equals(getExpectedPageId()); } public boolean isNotCurrent() { @@ -77,6 +83,10 @@ public void open() { throw new CloudtrustRuntimeException("open() not implemented"); } + public void open(ManagedRealm realm) { + this.driver.navigate().to(getLoginFormUrl(realm)); + } + /** * Navigate to a logout URL. Automatically confirm logout if necessary */ @@ -218,6 +228,10 @@ public static void setTextValue(WebElement input, String value) { } } + public void refresh() { + driver.navigate().refresh(); + } + public String getCurrentUrl() { return this.driver.getCurrentUrl(); } diff --git a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/LoginPage.java b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/LoginPage.java index 3d1f0f2..0ad95c6 100644 --- a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/LoginPage.java +++ b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/LoginPage.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Assertions; import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.realm.ManagedUser; import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; @@ -66,6 +67,10 @@ public String getExpectedPageId() { return null; } + public void login(ManagedUser user) { + login(user.getUsername(), user.getPassword()); + } + public void login(String username, String password) { usernameInput.clear(); usernameInput.sendKeys(username); @@ -142,8 +147,11 @@ public String getInfoMessage() { @Override public boolean isCurrent() { - String realm = "test"; - return isCurrent(realm); + return isCurrent("test"); + } + + public boolean isCurrent(ManagedRealm realm) { + return isCurrent(realm.getName()); } public boolean isCurrent(String realm) { @@ -188,12 +196,9 @@ public boolean isRememberMeChecked() { return rememberMe.isSelected(); } + @Override public void open(ManagedRealm realm) { - openLoginForm(realm); + super.open(realm); assertCurrent(); } - - private void openLoginForm(ManagedRealm realm) { - driver.navigate().to(getLoginFormUrl(realm)); - } } \ No newline at end of file diff --git a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/LoginPasswordResetPage.java b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/LoginPasswordResetPage.java index 27f1aa6..03cd087 100644 --- a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/LoginPasswordResetPage.java +++ b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/ctpages/LoginPasswordResetPage.java @@ -49,7 +49,7 @@ public void changePassword(String username) { } @Override - public boolean isCurrent() { + public boolean isActivePage() { return getPageTitle(driver).equals("Forgot Your Password?"); } diff --git a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/events/EventsManager.java b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/events/EventsManager.java index e652b05..92812ac 100644 --- a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/events/EventsManager.java +++ b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/events/EventsManager.java @@ -17,6 +17,7 @@ import java.util.function.Consumer; import java.util.function.Function; +@Deprecated public class EventsManager { private static final Logger LOG = Logger.getLogger(EventsManager.class); diff --git a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/matchers/CtPageMatchers.java b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/matchers/CtPageMatchers.java index 792b019..8e00b58 100644 --- a/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/matchers/CtPageMatchers.java +++ b/kc-cloudtrust-testsuite/kc-cloudtrust-test-tools/src/main/java/io/cloudtrust/keycloak/test/matchers/CtPageMatchers.java @@ -20,14 +20,32 @@ protected AbstractCtPage convert(Object item) { return item instanceof AbstractCtPage res ? res : null; } + /** + * Use isActivePage instead + * @return + */ + @Deprecated public static BaseMatcher isCurrent() { + return isActivePage(); + } + + public static BaseMatcher isActivePage() { return new CtPageMatchers( - AbstractCtPage::isCurrent, - p -> String.format("Current page is %s", p.getClass().getName()) + AbstractCtPage::isActivePage, + p -> String.format("Current page is %s (expected %s for class %s)", p.getCurrentPageId(), p.getExpectedPageId(), p.getClass().getName()) ); } + /** + * Use isNotActivePage instead + * @return + */ + @Deprecated public static BaseMatcher isNotCurrent() { + return isNotActivePage(); + } + + public static BaseMatcher isNotActivePage() { return new CtPageMatchers( p -> !p.isCurrent(), p -> String.format("Current page is %s", p.getClass().getName()), diff --git a/kc-cloudtrust-testsuite/pom.xml b/kc-cloudtrust-testsuite/pom.xml index f633198..4ef66fe 100644 --- a/kc-cloudtrust-testsuite/pom.xml +++ b/kc-cloudtrust-testsuite/pom.xml @@ -4,7 +4,7 @@ io.cloudtrust kc-cloudtrust-module - 26.0.10-SNAPSHOT + 26.1.0-SNAPSHOT ../kc-cloudtrust-module @@ -44,10 +44,6 @@ - - io.cloudtrust - cloudtrust-common - org.slf4j slf4j-api @@ -138,20 +134,25 @@ + + io.cloudtrust + cloudtrust-common + ${cloudtrust.version} + io.cloudtrust cloudtrust-test-tools - ${project.version} + ${cloudtrust.version} io.cloudtrust kc-cloudtrust-db-access - ${project.version} + ${cloudtrust.version} io.cloudtrust kc-cloudtrust-test-tools - ${project.version} + ${cloudtrust.version} diff --git a/pom.xml b/pom.xml index 4dd7b54..82a8327 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ io.cloudtrust cloudtrust-parent - 26.0.10-SNAPSHOT + 26.1.0-SNAPSHOT pom @@ -14,6 +14,7 @@ + cloudtrust-bom cloudtrust-common cloudtrust-test-tools kc-cloudtrust-module @@ -21,6 +22,7 @@ + 26.1.0-SNAPSHOT UTF-8 26.2.4 @@ -61,7 +63,7 @@ io.cloudtrust cloudtrust-common - ${project.version} + ${cloudtrust.version}