diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java index b8e0760c76..93af89a142 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java @@ -584,53 +584,56 @@ public class AuthServerTestEnricher { public static void setJsseSecurityProviderForOutboundSslConnectionsOfElytronClient(@Observes(precedence = 100) StartSuiteContainers event) { log.info( "Determining the JSSE security provider to use for outbound " + - "SSL/TLS connections of the Elytron client..." + "SSL/TLS connections of the Elytron client" ); - /** First locate the wildfly-config.xml to use. Per: - * https://docs.wildfly.org/21/Client_Guide.html#wildfly-config-xml-discovery - * - * 1) try to load it from the 'wildfly.config.url' property - */ - String wildflyConfigXmlPath = System.getProperty("wildfly.config.url"); - // 2) If not set, scan the classpath + // Use path to wildfly-config.xml directly if specified + String wildflyConfigXmlPath = + System.getProperty("wildfly-client.config.path"); + + // Otherwise scan the classpath to determine its location if (wildflyConfigXmlPath == null) { - log.debug("Scanning classpath to locate wildfly-config.xml..."); + log.debug("Scanning classpath to locate wildfly-config.xml"); final String javaClassPath = System.getProperty("java.class.path"); - for (String dir : javaClassPath.split(":")) { + for (String dir : javaClassPath.split(File.pathSeparator)) { if (!dir.isEmpty()) { String candidatePath = dir + File.separator + "wildfly-config.xml"; if (new File(candidatePath).exists()) { wildflyConfigXmlPath = candidatePath; log.debugf( - "Using wildfly-config.xml at '%s' location!", + "Found wildfly-config.xml at '%s' location", wildflyConfigXmlPath ); break; } } } + } + + final File wildflyConfigXml = ( wildflyConfigXmlPath != null ) ? + new File(wildflyConfigXmlPath) : + null; + + // Throw an error if wildfly-config.xml path specified directly via the + // 'wildfly-client.config.path' property doesn't represent a regular file + // on the file system, or if it wasn't found by scanning the classpath + if ( wildflyConfigXml == null || ! wildflyConfigXml.exists() ) { + throw new RuntimeException( + "Failed to locate the wildfly-config.xml to use for " + + "the configuration of Elytron client" + ); } else { log.debugf( - "Using wildfly-config.xml from 'wildfly.config.url' " + - "property at '%s' location", + "Using wildfly-config.xml from '%s' location", wildflyConfigXmlPath ); } - // If still not found, that's an error - if (wildflyConfigXmlPath == null) { - throw new RuntimeException( - "Failed to locate the wildfly-config.xml to use for " + - "the configuration of Elytron client!" - ); - } + /** Determine the name of the system property from wildfly-config.xml * holding the name of the security provider which is used by Elytron * client to define its SSL context for outbound SSL connections. */ - final File wildflyConfigXml = new File(wildflyConfigXmlPath); - String jsseSecurityProviderSystemProperty = null; try { DocumentBuilder documentBuilder = DocumentBuilderFactory @@ -642,7 +645,7 @@ public class AuthServerTestEnricher { if (nodeList.getLength() != 1) { throw new RuntimeException( "Failed to locate the 'provider-name' element " + - "in wildfly-config.xml XML file!" + "in wildfly-config.xml XML file" ); } String providerNameElement = nodeList.item(0).getAttributes() @@ -655,12 +658,12 @@ public class AuthServerTestEnricher { } catch (IOException e) { throw new RuntimeException(String.format( "Error reading the '%s' file. Please make sure the provided " + - "path is correct and retry!", + "path is correct and retry", wildflyConfigXml.getAbsolutePath() )); } catch (ParserConfigurationException|SAXException e) { throw new RuntimeException(String.format( - "Failed to parse the '%s' XML file!", + "Failed to parse the '%s' XML file", wildflyConfigXml.getAbsolutePath() )); } @@ -677,7 +680,7 @@ public class AuthServerTestEnricher { } else { throw new RuntimeException( "Failed to determine the name of system property " + - "holding JSSE security provider's name for Elytron client!" + "holding JSSE security provider's name for Elytron client" ); } @@ -725,7 +728,7 @@ public class AuthServerTestEnricher { } else { throw new RuntimeException( "The SunJSSE provider is not present " + - "on the platform!" + "on the platform" ); } } @@ -738,11 +741,11 @@ public class AuthServerTestEnricher { } else { throw new RuntimeException( "Cannot identify a security provider for Elytron client " + - "offering the TLSv1.2 capability!" + "offering the TLSv1.2 capability" ); } log.infof( - "Using the '%s' JSSE provider!", platformJsseProvider.getName() + "Using the '%s' JSSE provider", platformJsseProvider.getName() ); } } @@ -780,7 +783,7 @@ public class AuthServerTestEnricher { administration.reloadIfRequired(); } else { - log.info("## The Auth Server has already configured TLS. Skipping... ##"); + log.info("## The Auth Server has already configured TLS. Skipping ##"); } } diff --git a/testsuite/integration-arquillian/tests/pom.xml b/testsuite/integration-arquillian/tests/pom.xml index a506ee104e..9857c5fdaa 100755 --- a/testsuite/integration-arquillian/tests/pom.xml +++ b/testsuite/integration-arquillian/tests/pom.xml @@ -659,7 +659,7 @@ ~ Used for Wildfly Elytron 1.13.0.CR3+ RESTEasy client SSL truststore configuration. ~ See KEYCLOAK-15692, ELY-1891 issues & PRs of EAP7-1219 issue for details. --> - ${project.build.directory}/dependency/wildfly-config.xml + ${project.build.directory}${file.separator}dependency${file.separator}wildfly-config.xml