From 6847d71108388c49bd96e5efffd5476378c1022e Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Fri, 20 Nov 2020 17:03:42 +0100 Subject: [PATCH] Test concessioni --- .settings/.gitignore | 5 + .../rest/AddSectionToConcessioneRequest.java | 17 +- .../geoportal/service/rest/Concessioni.java | 21 +- ...{Concessioni.java => ConcessioniTest.java} | 201 +++++------------- src/test/resources/log4j.properties | 2 +- 5 files changed, 93 insertions(+), 153 deletions(-) rename src/test/java/org/gcube/application/geoportal/service/legacy/{Concessioni.java => ConcessioniTest.java} (64%) diff --git a/.settings/.gitignore b/.settings/.gitignore index 0b3fc44..a6ce31a 100644 --- a/.settings/.gitignore +++ b/.settings/.gitignore @@ -4,3 +4,8 @@ /org.eclipse.m2e.core.prefs /org.eclipse.wst.common.project.facet.core.prefs.xml /org.eclipse.wst.common.project.facet.core.xml +/.jsdtscope +/org.eclipse.wst.common.component +/org.eclipse.wst.jsdt.ui.superType.container +/org.eclipse.wst.jsdt.ui.superType.name +/org.eclipse.wst.validation.prefs diff --git a/src/main/java/org/gcube/application/geoportal/service/model/internal/rest/AddSectionToConcessioneRequest.java b/src/main/java/org/gcube/application/geoportal/service/model/internal/rest/AddSectionToConcessioneRequest.java index 11ccafc..a26a5a9 100644 --- a/src/main/java/org/gcube/application/geoportal/service/model/internal/rest/AddSectionToConcessioneRequest.java +++ b/src/main/java/org/gcube/application/geoportal/service/model/internal/rest/AddSectionToConcessioneRequest.java @@ -1,10 +1,18 @@ package org.gcube.application.geoportal.service.model.internal.rest; +import java.util.ArrayList; import java.util.List; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlRootElement; +import org.gcube.application.geoportal.model.concessioni.LayerConcessione; +import org.gcube.application.geoportal.model.concessioni.RelazioneScavo; import org.gcube.application.geoportal.model.content.AssociatedContent; +import org.gcube.application.geoportal.model.content.OtherContent; +import org.gcube.application.geoportal.model.content.UploadedImage; +import org.gcube.application.geoportal.model.gis.SDILayerDescriptor; import lombok.Data; @@ -25,7 +33,14 @@ public class AddSectionToConcessioneRequest { private Section section; + @XmlElements({ + @XmlElement(type=OtherContent.class), + @XmlElement(type=RelazioneScavo.class), + @XmlElement(type=SDILayerDescriptor.class), + @XmlElement(type=LayerConcessione.class), + @XmlElement(type=UploadedImage.class), + }) private AssociatedContent toRegister; - private List streams; + private List streams=new ArrayList(); } diff --git a/src/main/java/org/gcube/application/geoportal/service/rest/Concessioni.java b/src/main/java/org/gcube/application/geoportal/service/rest/Concessioni.java index ed6cd38..3970bc2 100644 --- a/src/main/java/org/gcube/application/geoportal/service/rest/Concessioni.java +++ b/src/main/java/org/gcube/application/geoportal/service/rest/Concessioni.java @@ -4,7 +4,6 @@ import java.util.Collection; import javax.ws.rs.Consumes; import javax.ws.rs.GET; -import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @@ -36,19 +35,21 @@ public class Concessioni { - @POST + @PUT @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @Path("publish/{"+InterfaceConstants.Parameters.PROJECT_ID+"}") public String publish(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id) { try { - log.info("Loading Concessione by id {} ",id); + log.info("Publishing Concessione by id {} ",id); Concessione conc=(Concessione) ConcessioneManager.getByID(Long.parseLong(id)); ConcessioneManager manager=ManagerFactory.getByRecord(conc); log.debug("Loaded object {} ",conc); PublicationReport rep=manager.commitSafely(true); - return rep.prettyPrint(); + String toReturn=rep.prettyPrint(); + log.debug("Publication report to send is "+toReturn); + return toReturn; }catch(WebApplicationException e){ log.warn("Unable to serve request",e); throw e; @@ -99,15 +100,15 @@ public class Concessioni { @PUT @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) - @Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}") - public String modify(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id, + @Path("section/{"+InterfaceConstants.Parameters.PROJECT_ID+"}") + public String addSection(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id, AddSectionToConcessioneRequest request) { try { log.info("Adding section to Concessione {} ",id); Concessione toReturn=(Concessione) ConcessioneManager.getByID(Long.parseLong(id)); ConcessioneManager manager=ManagerFactory.getByRecord(toReturn); log.debug("Loaded object {} ",toReturn); - + log.debug("Request is {}",request); InputStreamDescriptor[] streams=new InputStreamDescriptor[request.getStreams().size()]; @@ -131,8 +132,10 @@ public class Concessioni { default : throw new Exception("Unrecognized section"); } - PublicationReport report=manager.commitSafely(false); - return report.prettyPrint(); +// PublicationReport report=manager.commitSafely(false); + Concessione c=manager.commit(false); + log.debug("Published "+c.asJson()); + return c.validate().prettyPrint(); }catch(WebApplicationException e){ log.warn("Unable to serve request",e); throw e; diff --git a/src/test/java/org/gcube/application/geoportal/service/legacy/Concessioni.java b/src/test/java/org/gcube/application/geoportal/service/legacy/ConcessioniTest.java similarity index 64% rename from src/test/java/org/gcube/application/geoportal/service/legacy/Concessioni.java rename to src/test/java/org/gcube/application/geoportal/service/legacy/ConcessioniTest.java index 7ea66be..6b959f5 100644 --- a/src/test/java/org/gcube/application/geoportal/service/legacy/Concessioni.java +++ b/src/test/java/org/gcube/application/geoportal/service/legacy/ConcessioniTest.java @@ -1,23 +1,14 @@ package org.gcube.application.geoportal.service.legacy; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.UncheckedIOException; -import java.net.URL; -import java.util.Arrays; import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Properties; import javax.persistence.EntityManagerFactory; -import javax.persistence.SharedCacheMode; -import javax.persistence.ValidationMode; -import javax.persistence.spi.ClassTransformer; -import javax.persistence.spi.PersistenceUnitInfo; -import javax.persistence.spi.PersistenceUnitTransactionType; -import javax.sql.DataSource; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Application; @@ -34,6 +25,7 @@ import org.gcube.application.geoportal.model.content.AssociatedContent; import org.gcube.application.geoportal.model.content.UploadedImage; import org.gcube.application.geoportal.model.fault.ConfigurationException; import org.gcube.application.geoportal.model.report.PublicationReport; +import org.gcube.application.geoportal.model.report.ValidationReport.ValidationStatus; import org.gcube.application.geoportal.service.GeoportalService; import org.gcube.application.geoportal.service.engine.ImplementationProvider; import org.gcube.application.geoportal.service.engine.StorageClientProvider; @@ -51,7 +43,7 @@ import org.junit.Test; import lombok.extern.slf4j.Slf4j; @Slf4j -public class Concessioni extends JerseyTest { +public class ConcessioniTest extends JerseyTest { @Override @@ -84,14 +76,6 @@ public class Concessioni extends JerseyTest { } - @Test - public void failPublish() throws com.fasterxml.jackson.core.JsonProcessingException, IOException { - Concessione toCreate=TestModel.prepareEmptyConcessione(); - - Concessione conc=pushConcessione(toCreate); - System.out.println(publish(conc.getId()+"").prettyPrint()); - } - @Test public void list() throws JsonProcessingException, IOException{ WebTarget target=target(InterfaceConstants.Methods.CONCESSIONI); @@ -108,6 +92,15 @@ public class Concessioni extends JerseyTest { } + @Test + public void failPublish() throws com.fasterxml.jackson.core.JsonProcessingException, IOException { + Concessione toCreate=TestModel.prepareEmptyConcessione(); + + Concessione conc=pushConcessione(toCreate); + System.out.println(publish(conc.getId()+"").prettyPrint()); + } + + @Test public void createNew() throws IOException { @@ -119,28 +112,49 @@ public class Concessioni extends JerseyTest { @Test public void publishNew() throws IOException, RemoteBackendException, ConfigurationException { Concessione toCreate=TestModel.prepareEmptyConcessione(); - WebTarget target=target(InterfaceConstants.Methods.CONCESSIONI); - Response resp=target.request(MediaType.APPLICATION_JSON).put(Entity.entity(toCreate.asJson(), MediaType.APPLICATION_JSON)); - String resString=resp.readEntity(String.class); - System.out.println("Resp String is "+resString); - Concessione registered=Serialization.read(resString, Concessione.class); - System.out.println("Registered concessione at : "+registered); + Concessione registered = pushConcessione(toCreate); + System.out.println("Registered at "+registered.asJson()); Concessione fullTemplate=TestModel.prepareConcessione(); + + //Push Relazione publishSection(registered.getId()+"",formRequest(Section.RELAZIONE,fullTemplate.getRelazioneScavo(),"concessioni/relazione.pdf")); + assertNotNull(getById(registered.getId()+"").getRelazioneScavo()); + + //Push Immagini for(UploadedImage img:fullTemplate.getImmaginiRappresentative()) publishSection(registered.getId()+"",formRequest(Section.UPLOADED_IMG,img,"concessioni/immagine.png")); + assertNotNull(getById(registered.getId()+"").getImmaginiRappresentative()); + assertTrue(getById(registered.getId()+"").getImmaginiRappresentative().size()==fullTemplate.getImmaginiRappresentative().size()); + //Push Posizinamento publishSection(registered.getId()+"",formRequest(Section.POSIZIONAMENTO,fullTemplate.getPosizionamentoScavo(),"concessioni/pos.dbf","concessioni/pos.shp")); + assertNotNull(getById(registered.getId()+"").getPosizionamentoScavo()); + //Push piante for(LayerConcessione l:fullTemplate.getPianteFineScavo()) publishSection(registered.getId()+"",formRequest(Section.PIANTA,l,"concessioni/pos.dbf","concessioni/pos.shp")); + assertNotNull(getById(registered.getId()+"").getPianteFineScavo()); + assertTrue(getById(registered.getId()+"").getPianteFineScavo().size()==fullTemplate.getPianteFineScavo().size()); + - System.out.println("REPORT IS "+publish(registered.getId()+"")); + + Concessione reloaded = getById(registered.getId()+""); + System.out.println("Goind to publish "+reloaded.asJson()); + PublicationReport report=publish(registered.getId()+""); + System.out.println("REPORT IS "+report.prettyPrint()+""); +// System.out.println("Concessione is "+report.getTheRecord().asJson()); + assertTrue(report.getStatus().equals(ValidationStatus.PASSED)); } + + // ACTUAL METHODS + + private PublicationReport publish(String id) throws com.fasterxml.jackson.core.JsonProcessingException, IOException { WebTarget target=target(InterfaceConstants.Methods.CONCESSIONI); - Response resp=target.path(id).request(MediaType.APPLICATION_JSON).post(null); + Response resp=target.path("publish").path(id).request(MediaType.APPLICATION_JSON).put(Entity.entity("sopmething", MediaType.APPLICATION_JSON)); + if(resp.getStatus()<200||resp.getStatus()>=300) + System.err.println("RESP STATUS IS "+resp.getStatus()); String resString=resp.readEntity(String.class); System.out.println("Resp String is "+resString); PublicationReport registered=Serialization.read(resString, PublicationReport.class); @@ -158,13 +172,19 @@ public class Concessioni extends JerseyTest { String sId=ImplementationProvider.get().getStorageProvider().store( new FileInputStream(Files.getFileFromResources(f))); desc.setShubID(sId); + toReturn.getStreams().add(desc); } return toReturn; } private Response publishSection(String id, AddSectionToConcessioneRequest request) { WebTarget target=target(InterfaceConstants.Methods.CONCESSIONI); - return target.path(id).request(MediaType.APPLICATION_JSON).put(Entity.entity(request, MediaType.APPLICATION_JSON)); + Response resp=target.path("section").path(id).request(MediaType.APPLICATION_JSON).put(Entity.entity(request, MediaType.APPLICATION_JSON)); + if(resp.getStatus()<200||resp.getStatus()>=300) { + System.err.println("RESP STATUS IS "+resp.getStatus()); + System.err.println("RESP IS "+resp.readEntity(String.class)); + } + return resp; } private Concessione pushConcessione(Concessione c) throws com.fasterxml.jackson.core.JsonProcessingException, IOException { @@ -177,118 +197,15 @@ public class Concessioni extends JerseyTest { return registered; } + private Concessione getById(String id) throws com.fasterxml.jackson.core.JsonProcessingException, IOException { + WebTarget target=target(InterfaceConstants.Methods.CONCESSIONI); + Response resp=target.path(id).request(MediaType.APPLICATION_JSON).get(); + if(resp.getStatus()<200||resp.getStatus()>=300) + System.err.println("RESP STATUS IS "+resp.getStatus()); + String resString=resp.readEntity(String.class); + System.out.println("Resp String is "+resString); + return Serialization.read(resString, Concessione.class); + } - private static PersistenceUnitInfo archiverPersistenceUnitInfo() { - - final List MANAGED_CLASSES=Arrays.asList(new String[] { - "org.gcube.application.geoportal.model.Record", - "org.gcube.application.geoportal.model.concessioni.Concessione", - "org.gcube.application.geoportal.model.concessioni.LayerConcessione", - "org.gcube.application.geoportal.model.concessioni.RelazioneScavo", - - "org.gcube.application.geoportal.model.content.AssociatedContent", - "org.gcube.application.geoportal.model.content.GeoServerContent", - "org.gcube.application.geoportal.model.content.OtherContent", - "org.gcube.application.geoportal.model.content.PersistedContent", - "org.gcube.application.geoportal.model.content.UploadedImage", - "org.gcube.application.geoportal.model.content.WorkspaceContent", - - "org.gcube.application.geoportal.model.gis.ShapeFileLayerDescriptor", - "org.gcube.application.geoportal.model.gis.SDILayerDescriptor"}); - - - return new PersistenceUnitInfo() { - @Override - public String getPersistenceUnitName() { - return "ApplicationPersistenceUnit"; - } - - @Override - public String getPersistenceProviderClassName() { - return "org.hibernate.jpa.HibernatePersistenceProvider"; - } - - @Override - public PersistenceUnitTransactionType getTransactionType() { - return PersistenceUnitTransactionType.RESOURCE_LOCAL; - } - - @Override - public DataSource getJtaDataSource() { - return null; - } - - @Override - public DataSource getNonJtaDataSource() { - return null; - } - - @Override - public List getMappingFileNames() { - return Collections.emptyList(); - } - - @Override - public List getJarFileUrls() { - try { - return Collections.list(this.getClass() - .getClassLoader() - .getResources("")); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - @Override - public URL getPersistenceUnitRootUrl() { - return null; - } - - @Override - public List getManagedClassNames() { - return MANAGED_CLASSES; - } - - @Override - public boolean excludeUnlistedClasses() { - return true; - } - - @Override - public SharedCacheMode getSharedCacheMode() { - return null; - } - - @Override - public ValidationMode getValidationMode() { - return null; - } - - @Override - public Properties getProperties() { - return new Properties(); - } - - @Override - public String getPersistenceXMLSchemaVersion() { - return null; - } - - @Override - public ClassLoader getClassLoader() { - return null; - } - - @Override - public void addTransformer(ClassTransformer transformer) { - - } - - @Override - public ClassLoader getNewTempClassLoader() { - return null; - } - }; - } } diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties index 719fa38..8696f85 100644 --- a/src/test/resources/log4j.properties +++ b/src/test/resources/log4j.properties @@ -2,7 +2,7 @@ log4j.rootLogger=DEBUG, stdout #CONSOLE log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Threshold=INFO +log4j.appender.stdout.Threshold=DEBUG log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%t] %-5p %c %d{dd MMM yyyy ;HH:mm:ss.SSS} - %m%n