package org.easysoa.registry.test; import java.net.URL; import java.net.URLConnection; import junit.framework.Assert; import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.rules.TestName; import org.junit.runner.RunWith; import org.nuxeo.ecm.core.api.ClientException; import org.nuxeo.ecm.core.api.CoreSession; import org.nuxeo.ecm.core.test.annotations.Granularity; import org.nuxeo.ecm.core.test.annotations.RepositoryConfig; import org.nuxeo.runtime.test.runner.Features; import org.nuxeo.runtime.test.runner.FeaturesRunner; import com.google.inject.Inject; /** * To be extended by WebEngine tests. * * To test consecutive steps of a workflow, add * @RepositoryConfig(cleanup = Granularity.CLASS) * in order to keep Nuxeo repository state between test methods. * * @author mdutoo * */ @RunWith(FeaturesRunner.class) @Features({EasySOAFeature.class, EasySOAWebEngineFeature.class}) @RepositoryConfig(cleanup = Granularity.METHOD) // truly unitary tests : // don't keep Nuxeo repository state between test methods public abstract class AbstractWebEngineTest { private static final Logger logger = Logger.getLogger(AbstractWebEngineTest.class); @Inject protected CoreSession documentManager; protected RepositoryLogger repositoryLogger; protected boolean logRepositoryAfterEachTest = false; protected static String defaultSubprojectId = "/default-domain" + "/MyProject" + "/Realisation" + "_v"; // static because initialized once (if any) @Rule public TestName name = new TestName(); @Before public void setUp() { repositoryLogger = new RepositoryLogger(documentManager); } @After public void logRepository() throws ClientException { if (logRepositoryAfterEachTest) { documentManager.save(); repositoryLogger.setTitle(name.getMethodName()); repositoryLogger.logAllRepository(); } } public void setLogRepositoryAfterEachTest(boolean logRepositoryAfterEachTest) { this.logRepositoryAfterEachTest = logRepositoryAfterEachTest; } @Before public void testAvailability() { try { URLConnection connection = new URL(EasySOAWebEngineFeature.NUXEO_SITES_URL).openConnection(); connection.connect(); } catch (Exception e) { String message = "Testing environment issue: cannot reach test WebEngine URL"; logger.error(message, e); Assert.fail(message); } } public String getURL(Class<?> c) { return EasySOAWebEngineFeature.NUXEO_SITES_URL + PathExtractor.getPath(c); } public String getURL(Class<?> c, String methodName, Class<?>... parameterTypes) throws SecurityException, NoSuchMethodException { return EasySOAWebEngineFeature.NUXEO_SITES_URL + PathExtractor.getPath(c, methodName, parameterTypes); } public void logTestName(Logger logger) { logger.debug("--------------------"); logger.debug(name.getMethodName()); logger.debug("--------------------"); } }