Automatic tests

This commit is contained in:
Fabio Sinibaldi 2021-03-18 16:39:32 +01:00
parent 8257714f2e
commit b8a0f83d14
9 changed files with 140 additions and 44 deletions

View File

@ -1,8 +1,12 @@
package org.gcube.spatial.data.sdi;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@ -77,31 +81,31 @@ public class LocalConfiguration {
static LocalConfiguration instance=null;
// @Synchronized
// public static LocalConfiguration init(URL propertiesURL){
// if(instance==null)
// instance=new LocalConfiguration(propertiesURL);
// return instance;
// }
@Synchronized
public static LocalConfiguration get(){
if(instance==null)
instance=new LocalConfiguration();
return instance;
}
private Properties props=new Properties();
private LocalConfiguration() {
try{
String propertiesURL="/config.properties";
String propertiesURL="config.properties";
log.debug("Loading {} ",propertiesURL);
props.load(new URL(propertiesURL).openStream());
props.load(open(propertiesURL));
}catch(Exception e){
throw new RuntimeException(e);
}
}
public static String getProperty(String property){
return instance.props.getProperty(property);
return get().props.getProperty(property);
}
public static String getProperty(String property,String defaultValue){
return instance.props.getProperty(property, defaultValue);
return get().props.getProperty(property, defaultValue);
}
public static Long getTTL(String property) {
@ -116,4 +120,31 @@ public class LocalConfiguration {
public static Object getTemplateConfigurationObject() {return templateConfiguration;}
public static void setTemplateConfigurationObject(Object obj) {templateConfiguration=obj;}
public static File getFileFromResources(String fileName) {
ClassLoader classLoader =LocalConfiguration.class.getClassLoader();
URL resource = classLoader.getResource(fileName);
if (resource == null) {
throw new IllegalArgumentException("file is not found!");
} else {
return new File(resource.getFile());
}
}
public static InputStream open(String fileName) throws IOException {
ClassLoader classLoader =LocalConfiguration.class.getClassLoader();
URL resource = classLoader.getResource(fileName);
if (resource == null) {
throw new IllegalArgumentException("file "+fileName+" is not found!");
} else {
return resource.openStream();
}
}
}

View File

@ -1,12 +1,9 @@
package org.gcube.spatial.data.sdi;
import java.net.URL;
import javax.ws.rs.ApplicationPath;
import org.aopalliance.reflect.Metadata;
import org.gcube.smartgears.ContextProvider;
import org.gcube.smartgears.configuration.container.ContainerConfiguration;
import org.gcube.smartgears.context.application.ApplicationContext;
import org.gcube.spatial.data.sdi.engine.GISManager;
import org.gcube.spatial.data.sdi.engine.GeoNetworkManager;
@ -43,21 +40,21 @@ public class SDIService extends ResourceConfig{
//
public SDIService() {
super();
log.warn("Initializing App : Properties.. ");
ApplicationContext context=ContextProvider.get();
ContainerConfiguration configuration=context.container().configuration();
try{
URL resourceUrl = context.application().getResource("/WEB-INF/config.properties");
// LocalConfiguration.init(resourceUrl).
LocalConfiguration.setTemplateConfigurationObject(ContextProvider.get());
}catch(Throwable t){
log.debug("Listing available paths");
for(Object obj:context.application().getResourcePaths("/WEB-INF"))
log.debug("OBJ : {} ",obj);
throw new RuntimeException("Unable to load configuration properties",t);
}
// log.warn("Initializing App : Properties.. ");
// ApplicationContext context=ContextProvider.get();
//// ContainerConfiguration configuration=context.container().configuration();
// try{
//// URL resourceUrl = context.application().getResource("/WEB-INF/config.properties");
//// LocalConfiguration.init(resourceUrl).
// LocalConfiguration.setTemplateConfigurationObject(ContextProvider.get());
//
// }catch(Throwable t){
// log.debug("Listing available paths");
// for(Object obj:context.application().getResourcePaths("/WEB-INF"))
// log.debug("OBJ : {} ",obj);
//
// throw new RuntimeException("Unable to load configuration properties",t);
// }

View File

@ -5,7 +5,9 @@ import org.gcube.spatial.data.sdi.engine.impl.metadata.MetadataTemplateManagerIm
import org.glassfish.hk2.api.Factory;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class MetadataTemplateManagerFactory implements Factory<TemplateManager>{
@Override
public TemplateManager provide() {
@ -28,7 +30,7 @@ public class MetadataTemplateManagerFactory implements Factory<TemplateManager>{
try {
((MetadataTemplateManagerImpl)instance).defaultInit();
}catch(Exception e) {
throw new RuntimeException("Unable to init temp ",e);
log.error("Unable to init temp ",e);
}
}
return instance;

View File

@ -18,6 +18,7 @@ import javax.inject.Singleton;
import javax.xml.transform.TransformerException;
import org.apache.commons.io.IOUtils;
import org.gcube.smartgears.ContextProvider;
import org.gcube.smartgears.context.application.ApplicationContext;
import org.gcube.spatial.data.sdi.LocalConfiguration;
import org.gcube.spatial.data.sdi.engine.TemplateManager;
@ -50,6 +51,8 @@ public class MetadataTemplateManagerImpl implements TemplateManager {
@PostConstruct
public void defaultInit() {
log.info("Default Initialization");
init(LocalConfiguration.getTemplateConfigurationObject());
}
@ -67,7 +70,9 @@ public class MetadataTemplateManagerImpl implements TemplateManager {
if(configurationObject instanceof ApplicationContext){
log.debug("Configuration is Context : {} ",configurationObject);
cfg.setServletContextForTemplateLoading(((ApplicationContext)configurationObject).application(),
LocalConfiguration.getProperty(LocalConfiguration.TEMPLATE_FOLDER));
LocalConfiguration.getProperty(LocalConfiguration.TEMPLATE_FOLDER));
}else if (configurationObject instanceof File){
try{
cfg.setDirectoryForTemplateLoading((File)configurationObject);

View File

@ -3,20 +3,23 @@ package org.gcube.spatial.data.sdi.test;
import static org.junit.Assume.assumeTrue;
import java.net.MalformedURLException;
import java.nio.file.Paths;
import java.net.URL;
import java.util.List;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import org.gcube.data.transfer.library.client.AuthorizationFilter;
import org.gcube.sdi.test.GCubeSDITest;
import org.gcube.spatial.data.sdi.LocalConfiguration;
import org.gcube.spatial.data.clients.model.engine.Engine;
import org.gcube.spatial.data.sdi.SDIService;
import org.gcube.spatial.data.sdi.model.ScopeConfiguration;
import org.gcube.spatial.data.sdi.model.ServiceConstants;
import org.gcube.spatial.data.sdi.model.metadata.TemplateDescriptor;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.BeforeClass;
import org.junit.Before;
import org.junit.Test;
public class MainTest extends JerseyTest implements GCubeSDITest{
@ -29,33 +32,55 @@ public class MainTest extends JerseyTest implements GCubeSDITest{
@Override
protected Application configure() {
return new SDIService();
return new SDIService().register(RequestFilter.class);
}
@Override
protected void configureClient(ClientConfig config) {
// TODO Auto-generated method stub
super.configureClient(config);
config.register(AuthorizationFilter.class);
}
@Before
public void setContext() {
assumeTrue(isTestInfrastructureEnabled());
setTestContext();
}
@Test
public void getConfiguration(){
assumeTrue(isTestInfrastructureEnabled());
System.out.println(target(ServiceConstants.INTERFACE).request(MediaType.APPLICATION_JSON_TYPE).get(String.class));
ScopeConfiguration conf=target(ServiceConstants.INTERFACE).request(MediaType.APPLICATION_JSON_TYPE).get(ScopeConfiguration.class);
}
//
@Test
public void getGeoServer(){
public void getGeoServer() throws MalformedURLException{
assumeTrue(isTestInfrastructureEnabled());
System.out.println(target(ServiceConstants.GeoServer.INTERFACE).path("configuration/geoserver1.dev.d4science.org").request(MediaType.APPLICATION_JSON_TYPE).get(String.class));
ScopeConfiguration conf=target(ServiceConstants.INTERFACE).request(MediaType.APPLICATION_JSON_TYPE).get(ScopeConfiguration.class);
assumeTrue(!conf.getByEngine(Engine.GS_ENGINE).isEmpty());
String hostname=new URL(conf.getByEngine(Engine.GS_ENGINE).get(0).getBaseEndpoint()).getHost();
System.out.println(target(ServiceConstants.GeoServer.INTERFACE).
path("configuration/"+hostname).request(MediaType.APPLICATION_JSON_TYPE).get(String.class));
}
@Test
public void testGetTemplateList(){
assumeTrue(isTestInfrastructureEnabled());
List<TemplateDescriptor> result=target(ServiceConstants.Metadata.INTERFACE).
target(ServiceConstants.Metadata.INTERFACE).
path(ServiceConstants.Metadata.LIST_METHOD).
request(MediaType.APPLICATION_JSON_TYPE).get().
readEntity(new GenericType<List<TemplateDescriptor>>() {});
System.out.println(result);
request(MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON).
get(new GenericType<List<TemplateDescriptor>>() {});
// System.out.println(result);
}
@Test

View File

@ -11,14 +11,22 @@ import org.gcube.sdi.test.GCubeSDITest;
import org.gcube.spatial.data.sdi.engine.impl.metadata.MetadataTemplateManagerImpl;
import org.gcube.spatial.data.sdi.engine.impl.metadata.TemplateApplicationReport;
import org.gcube.spatial.data.sdi.model.metadata.TemplateInvocationBuilder;
import org.junit.Before;
import org.junit.Test;
public class MetadataApplicationTest implements GCubeSDITest{
@Before
public void setContext() {
setTestContext();
}
@Test
public void apply() throws IOException, TransformerException{
assumeTrue(isTestInfrastructureEnabled());
TokenSetter.set("/gcube/devNext/NextNext");
// TokenSetter.set("/gcube/devNext/NextNext");
MetadataTemplateManagerImpl manager=new MetadataTemplateManagerImpl();
// LocalConfiguration.init(Paths.get("src/main/webapp/WEB-INF/config.properties").toUri().toURL())
// .setTemplateConfigurationObject(Paths.get("src/main/webapp/WEB-INF/metadataTemplates").toFile());

View File

@ -0,0 +1,21 @@
package org.gcube.spatial.data.sdi.test;
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.ext.Provider;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Provider
public class RequestFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext ctx) throws IOException {
String token=ctx.getHeaderString("gcube-token");
log.debug("Catched token : "+token);
TokenSetter.setToken(token);
}
}

View File

@ -33,6 +33,8 @@ private static Properties props=new Properties();
}
public static void setToken(String token) {
SecurityTokenProvider.instance.set(token);
}
}

View File

@ -10,7 +10,12 @@ import org.junit.BeforeClass;
public interface GCubeSDITest {
public default String getContext() {
String testContext=System.getProperty("testContext");
String testContext=System.getProperty("testContext");
if(testContext==null) {
// trying with env
testContext=System.getenv("testContext");
}
System.out.println("TEST CONTEXT = "+testContext);
return testContext;
}