This is an automated email from the git hooks/post-receive script. New commit to branch feature/7463 in repository observe. See http://git.codelutin.com/observe.git commit dd37e614f4edbe50745d824d62e3608fe24c0041 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Sep 4 07:35:26 2015 +0200 Début de tests sur le client rest (See #7563) --- observe-services-rest/pom.xml | 6 + .../fr/ird/observe/services/TestClassResource.java | 136 +++++++++++++++++++++ .../ird/observe/services/TestMethodResource.java | 97 +++++++++++++++ .../service/DataSourceServiceRestTest.java | 72 +++++++++++ 4 files changed, 311 insertions(+) diff --git a/observe-services-rest/pom.xml b/observe-services-rest/pom.xml index d294413..20ea2ab 100644 --- a/observe-services-rest/pom.xml +++ b/observe-services-rest/pom.xml @@ -38,6 +38,12 @@ <artifactId>observe-services-configuration-rest</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>observe-test-data</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> <!-- commons dependencies --> diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java b/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java new file mode 100644 index 0000000..8639cf2 --- /dev/null +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/TestClassResource.java @@ -0,0 +1,136 @@ +package fr.ird.observe.services; + +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestNotAuthenticated; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; +import fr.ird.observe.services.dto.constants.ReferentialLocale; +import fr.ird.observe.test.TestHelper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.rules.TestRule; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Path; +import java.util.Locale; + +/** + * Created on 03/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class TestClassResource implements TestRule { + + /** Logger. */ + private static final Log log = LogFactory.getLog(TestClassResource.class); + + protected final ObserveServiceFactoryRest serviceFactory; + + private File testDirectory; + + private Path temporaryDirectoryRoot; + + protected final URL serverUrl; + + public TestClassResource() { + this("http://localhost:8080/observeweb/v1/api"); + } + + public TestClassResource(String serverUrl) { + try { + this.serverUrl = new URL(serverUrl); + } catch (MalformedURLException e) { + throw new IllegalStateException("Could not convert serverUrl: " + serverUrl, e); + } + this.serviceFactory = new ObserveServiceFactoryRest() { + +// @Override +// protected ObserveServiceContextTopia createServiceContext(ObserveServiceInitializer observeServiceInitializer) { +// ObserveServiceContextTopiaTaiste serviceContext = new ObserveServiceContextTopiaTaiste(observeServiceInitializer, mainServiceFactory, this); +// return serviceContext; +// } + }; + serviceFactory.setMainServiceFactory(serviceFactory); + } + + public <S extends ObserveService> S newService(ObserveDataSourceConfiguration dataSourceConfiguration, Class<S> serviceType) { + ObserveServiceInitializer observeServiceInitializer = ObserveServiceInitializer.create( + Locale.FRANCE, + ReferentialLocale.FR, + temporaryDirectoryRoot.toFile(), + dataSourceConfiguration + ); + return serviceFactory.newService(observeServiceInitializer, serviceType); + } + + public void closeServiceFactory() { + serviceFactory.close(); + } + + public void setTemporaryDirectoryRoot(Path temporaryDirectoryRoot) { + this.temporaryDirectoryRoot = temporaryDirectoryRoot; + } + + @Override + public Statement apply(final Statement base, final Description description) { + return new Statement() { + + @Override + public void evaluate() throws Throwable { + before(description); + try { + base.evaluate(); + } finally { + after(description); + } + } + }; + } + + protected void before(Description description) { + + Class<?> testClass = description.getTestClass(); + if (log.isDebugEnabled()) { + log.debug("Starts " + testClass.getName()); + } + + TestHelper.initTest(testClass); + + } + + protected void after(Description description) { + + Class<?> testClass = description.getTestClass(); + if (log.isDebugEnabled()) { + log.debug("Ends " + testClass.getName()); + } + + closeServiceFactory(); + setTemporaryDirectoryRoot(null); + + } + + public File getTestDirectory() { + return testDirectory; + } + + public void setTestDirectory(File testDirectory) { + this.testDirectory = testDirectory; + } + + public ObserveDataSourceConfigurationRestSupport createDataSourceConfigurationRest(Class<?> testClass, String login, char... password) { + + ObserveDataSourceConfigurationRestNotAuthenticated configurationRest = new ObserveDataSourceConfigurationRestNotAuthenticated(); + configurationRest.setLabel(testClass.getSimpleName() + "#" + serverUrl); + configurationRest.setServerUrl(serverUrl); + configurationRest.setLogin(login); + configurationRest.setPassword(password); + + return configurationRest; + + } + +} diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java b/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java new file mode 100644 index 0000000..9e2627e --- /dev/null +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/TestMethodResource.java @@ -0,0 +1,97 @@ +package fr.ird.observe.services; + +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; +import fr.ird.observe.test.TestHelper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.rules.TestRule; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; + +/** + * Created on 03/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class TestMethodResource implements TestRule { + + /** Logger. */ + private static final Log log = LogFactory.getLog(TestMethodResource.class); + + protected final TestClassResource testClassResource; + + protected final String login; + + protected final char[] password; + + protected ObserveDataSourceConfigurationRestSupport dataSourceConfiguration; + + public TestMethodResource(TestClassResource testClassResource) { + this(testClassResource, "admin", 'a'); + } + + public TestMethodResource(TestClassResource testClassResource, String login, char... password) { + this.testClassResource = testClassResource; + this.login = login; + this.password = password; + } + + @Override + public Statement apply(final Statement base, final Description description) { + return new Statement() { + + @Override + public void evaluate() throws Throwable { + before(description); + try { + base.evaluate(); + } finally { + after(description); + } + } + }; + } + + public ObserveDataSourceConfigurationRestSupport getDataSourceConfiguration() { + return dataSourceConfiguration; + } + + protected void before(Description description) throws Throwable { + + Class<?> testClass = description.getTestClass(); + String methodName = description.getMethodName(); + if (log.isDebugEnabled()) { + log.debug("Starts " + testClass.getName() + "::" + methodName); + } + + File testDirectory = TestHelper.newFile(methodName); + + testClassResource.setTestDirectory(testDirectory); + + Path temporaryDirectoryRoot = new File(testDirectory, "tmp").toPath(); + + Files.createDirectories(temporaryDirectoryRoot); + + testClassResource.setTemporaryDirectoryRoot(temporaryDirectoryRoot); + + dataSourceConfiguration = testClassResource.createDataSourceConfigurationRest(testClass, "admin", 'a'); + + } + + protected void after(Description description) { + + Class<?> testClass = description.getTestClass(); + String methodName = description.getMethodName(); + if (log.isDebugEnabled()) { + log.debug("Ends " + testClass.getName() + "::" + methodName); + } + + testClassResource.closeServiceFactory(); + testClassResource.setTemporaryDirectoryRoot(null); + + } +} diff --git a/observe-services-rest/src/test/java/fr/ird/observe/services/service/DataSourceServiceRestTest.java b/observe-services-rest/src/test/java/fr/ird/observe/services/service/DataSourceServiceRestTest.java new file mode 100644 index 0000000..e9a1b83 --- /dev/null +++ b/observe-services-rest/src/test/java/fr/ird/observe/services/service/DataSourceServiceRestTest.java @@ -0,0 +1,72 @@ +package fr.ird.observe.services.service; + +import fr.ird.observe.services.TestClassResource; +import fr.ird.observe.services.TestMethodResource; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestSupport; +import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; +import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; +import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; +import org.junit.Assume; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; + +import java.io.IOException; + +/** + * Created on 03/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DataSourceServiceRestTest { + + @ClassRule + public static final TestClassResource testClassResource = new TestClassResource(); + + @Rule + public final TestMethodResource testMethodResource = new TestMethodResource(testClassResource); + + protected DataSourceService service; + + @Before + public void setUp() throws Exception { + + ObserveDataSourceConfigurationRestSupport dataSourceConfiguration = testMethodResource.getDataSourceConfiguration(); + service = testClassResource.newService(dataSourceConfiguration, DataSourceService.class); + + //TODO Tester si le serveur est accessible si non + boolean serverExist = false; + Assume.assumeTrue("Serveur " + dataSourceConfiguration.getServerUrl() + " no found", serverExist); + + } + + @Test(expected = DatabaseNotFoundException.class) + public void testOpenNotExistingDatabase() throws IOException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + + service.open(); + + } + + @Test + public void testOpen() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException { + + DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); + dataSourceCreateConfiguration.setCanCreateEmptyDatabase(true); + service.create(dataSourceCreateConfiguration); + + service.open(); + + } + + @Test + public void testCreateEmptyDataSource() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException { + + DataSourceCreateConfigurationDto dataSourceCreateConfiguration = new DataSourceCreateConfigurationDto(); + dataSourceCreateConfiguration.setCanCreateEmptyDatabase(true); + + service.create(dataSourceCreateConfiguration); + + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.