[java-idp-integration-tests] 03/03: Clear cached username if necessary

Tom Zeller tzeller at dragonacea.biz
Fri Jan 12 14:35:51 UTC 2024


This is an automated email from the git hooks/post-receive script.

tzeller pushed a commit to branch main
in repository java-idp-integration-tests.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-integration-tests.git;a=commit;h=582a120f3bc9ded849cd0cddcdfdc7cf83e0bd9a

commit 582a120f3bc9ded849cd0cddcdfdc7cf83e0bd9a
Author: Tom Zeller <tzeller at dragonacea.biz>
AuthorDate: Fri Jan 12 08:35:22 2024 -0600

    Clear cached username if necessary
    
    https://shibboleth.atlassian.net/browse/IDP-2220
---
 .../idp/integration/tests/BaseIntegrationTest.java | 38 ++++++++++++++++++----
 1 file changed, 31 insertions(+), 7 deletions(-)

diff --git a/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
index f685d70..4b1ab7d 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
@@ -1942,18 +1942,34 @@ public abstract class BaseIntegrationTest {
 
     /**
      * <ul>
-     * <li>Input username</li>
-     * <li>Input password</li>
+     * <li>Send username</li>
+     * <li>Send password</li>
      * <li>Submit form.</li>
      * </ul>
      * 
+     * Clear cached username if it is not the given username.
+     * 
      * @param user username
      */
     public void login(final @Nonnull String user) {
         new WebDriverWait(driver, Duration.ofSeconds(10)).until(driver -> driver.findElement(By.name("j_username")));
+        // Username form input field
         final WebElement username = driver.findElement(By.name("j_username"));
+        // Password form input field
         final WebElement password = driver.findElement(By.name("j_password"));
-        username.sendKeys(user);
+        // Cached username
+        final String cachedUser = username.getAttribute("value");
+        log.trace("Cached username '{}'", username.getAttribute("value"));
+        if (cachedUser == null) {
+            // Username form field is empty, so enter the username
+            username.sendKeys(user);
+        } else {
+            // Clear cached username if it is not the given username
+            if (!user.equals(cachedUser)) {
+                username.clear();
+                username.sendKeys(user);
+            }
+        }
         password.sendKeys("changeit");
         submitForm();
     }
@@ -2236,19 +2252,27 @@ public abstract class BaseIntegrationTest {
         boolean isSelected = element.isSelected();
         log.trace("ClickWorkaround element '{}' isSelected '{}'", element, element.isSelected());
         try {
+            // Try clicking element
+            log.trace("Attempting to click element '{}'", element);
             element.click();
         } catch (ElementNotInteractableException e) {
-            log.trace("Unable to click element {}, will try again", element);
+            log.trace("Unable to click element '{}', will try again", element);
             final Actions action = new Actions(driver);
-            action.moveToElement(element).click().build().perform();
-            log.trace("ClickWorkaround element'{}' isSelected '{}'", element, element.isSelected());
+            // Try moving to element and clicking, element must be in viewport
+            try {
+                log.trace("Attempting to move to element and click '{}'", element);
+                action.moveToElement(element).click().perform();
+            } catch (org.openqa.selenium.interactions.MoveTargetOutOfBoundsException e1) {
+                log.trace("Unable to move to element '{}', will try again", element);
+            }
             // If element is still not clicked, try JavaScript
             if ((isSelected && element.isSelected()) || (!isSelected && !element.isSelected())) {
-                log.trace("Unable to click element '{}', will try JavaScript", element);
+                log.trace("Attempting JavaScript to click element '{}'", element);
                 final JavascriptExecutor js = (JavascriptExecutor) driver;
                 js.executeScript("arguments[0].click();", element);
             }
         }
+        log.trace("ClickWorkaround element '{}' isSelected '{}'", element, element.isSelected());
         // If element is not clicked, throw runtime exception
         if ((isSelected && element.isSelected()) || (!isSelected && !element.isSelected())) {
             log.error("Unable to click element '{}'", element);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list