use of org.keycloak.testsuite.page.AbstractPage in project keycloak by keycloak.
the class DroneUtils method replaceDefaultWebDriver.
/**
* This static method can be used to change default {@ode WebDriver} to different one if the test is able to run
* with only one {@code WebDriver}.
*
* {@code target} parameter is supposed be of type {@code AbstractKeycloakTest} or {@link AbstractPage}.
*
* @param target target class on which one needs to change {@code WebDriver}
* @param driver the new {@code WebDriver}
*/
public static void replaceDefaultWebDriver(Object target, WebDriver driver) {
DroneUtils.addWebDriver(driver);
List<Field> allFields = new ArrayList<>();
// Add all fields of this class and superclasses
Class<?> targetClass = target.getClass();
while (targetClass != null) {
allFields.addAll(Arrays.asList(targetClass.getDeclaredFields()));
allFields.addAll(Arrays.asList(targetClass.getFields()));
targetClass = targetClass.getSuperclass();
}
for (Field f : allFields) {
if (f.getAnnotation(Page.class) != null && AbstractPage.class.isAssignableFrom(f.getType())) {
try {
if (!f.isAccessible())
f.setAccessible(true);
Object o = f.get(target);
AbstractPage page = (AbstractPage) o;
page.setDriver(driver);
replaceDefaultWebDriver(page, driver);
} catch (IllegalAccessException e) {
throw new IllegalStateException("Could not replace the driver in " + f, e);
}
} else if (f.getName().equals("driver") && WebDriver.class.isAssignableFrom(f.getType())) {
try {
if (!f.isAccessible())
f.setAccessible(true);
f.set(target, driver);
} catch (IllegalAccessException e) {
throw new IllegalStateException("Could not replace the " + f.getName() + " in class " + target.getClass().getName(), e);
}
} else if (f.getName().equals("oauth") && OAuthClient.class.isAssignableFrom(f.getType())) {
try {
if (!f.isAccessible())
f.setAccessible(true);
Object o = f.get(target);
((OAuthClient) o).setDriver(driver);
} catch (IllegalAccessException e) {
throw new IllegalStateException("Could not replace the " + f.getName() + " in class " + target.getClass().getName(), e);
}
}
}
DroneUtils.removeWebDriver();
}
Aggregations