package org.jembi.openhim.integration; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.xmlbeans.XmlException; import org.junit.Ignore; import org.junit.Test; import org.mule.tck.junit4.FunctionalTestCase; import com.eviware.soapui.impl.wsdl.WsdlProject; import com.eviware.soapui.model.support.PropertiesMap; import com.eviware.soapui.model.testsuite.TestRunner; import com.eviware.soapui.model.testsuite.TestRunner.Status; import com.eviware.soapui.model.testsuite.TestSuite; import com.eviware.soapui.support.SoapUIException; public abstract class AbstractOpenHIMIntegration extends FunctionalTestCase { protected final Log log = LogFactory.getLog(this.getClass()); protected Process wiremockProcess; /** * The test suite project to use (xml). * The project must be located in src/test/resources/integration-tests */ protected abstract String getTestSuiteProject(); /** * The test suite to run. */ protected abstract String getTestSuiteName(); @Override protected void doSetUp() throws Exception { Logger.getRootLogger().setLevel(Level.INFO); ProcessBuilder pb = new ProcessBuilder("java", "-jar", "wiremock-1.33-standalone.jar"); pb.directory(new File("src/test/resources/integration-tests")); wiremockProcess = pb.start(); super.doSetUp(); } @Override protected void doTearDown() throws Exception { Logger.getRootLogger().setLevel(Level.WARN); super.doTearDown(); wiremockProcess.destroy(); } @Override protected String getConfigResources() { Properties prop = new Properties(); ClassLoader loader = Thread.currentThread().getContextClassLoader(); InputStream stream = loader.getResourceAsStream("mule-deploy.properties"); try { prop.load(stream); String config = prop.getProperty("config.resources"); return config; } catch (IOException e) { e.printStackTrace(); } return null; } //TODO Integration tests need to be fixed @Ignore @Test public void soapUITestRunner() { log.info("Running soapUI integration tests..."); log.warn("Integration tests have been disabled"); WsdlProject project = null; try { project = new WsdlProject("src/test/resources/integration-tests/" + getTestSuiteProject()); } catch (XmlException | IOException | SoapUIException e1) { fail(); e1.printStackTrace(); } TestSuite testSuite = project.getTestSuiteByName(getTestSuiteName()); TestRunner runner = testSuite.run(new PropertiesMap(), false); assertEquals(Status.FINISHED, runner.getStatus()); } }