package org.gcube.application.geoportal.service; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.FileInputStream; import java.util.Collections; import java.util.List; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.gcube.application.geoportal.common.model.legacy.Concessione.Paths; import org.gcube.application.geoportal.common.rest.AddSectionToConcessioneRequest; import org.gcube.application.geoportal.common.rest.TempFile; import org.gcube.application.geoportal.common.utils.Files; import org.gcube.application.geoportal.common.utils.StorageUtils; import org.gcube.application.geoportal.service.legacy.TokenSetter; import org.gcube.application.geoportal.service.utils.Serialization; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class ConcessioniOverMongoTest extends BasicServiceTestUnit{ private static final String PATH="mongo-concessioni"; private static final String PUBLISH_PATH="publish"; private static final String FILES_PATH="registerFiles"; @Before public void setContext() { TokenSetter.set("/gcube/devsec/devVRE"); } @Test public void list() { WebTarget target=target(PATH); System.out.println(target.request(MediaType.APPLICATION_JSON).get(List.class)); } @Test public void createNew() throws Exception { WebTarget target=target(PATH); Concessione conc=TestModel.prepareConcessione(); Response resp=target.request(MediaType.APPLICATION_JSON).post(Entity.entity(Serialization.write(conc), MediaType.APPLICATION_JSON)); Concessione c=check(resp,Concessione.class); Assert.assertTrue(c.getMongo_id()!=null&&!c.getMongo_id().isEmpty()); System.out.println("ID IS "+c.getMongo_id()); } @Test public void delete() throws Exception { WebTarget target=target(PATH); Concessione conc=TestModel.prepareConcessione(); Response resp=target.request(MediaType.APPLICATION_JSON).post(Entity.entity(Serialization.write(conc), MediaType.APPLICATION_JSON)); Concessione c=check(resp,Concessione.class); System.out.println("ID IS "+c.getMongo_id()); Assert.assertTrue(c.getMongo_id()!=null&&!c.getMongo_id().isEmpty()); resp=target.path(c.getMongo_id()).request(MediaType.APPLICATION_JSON).delete(); check(resp,null); } @Test public void getById() throws Exception { WebTarget target=target(PATH); Concessione conc=TestModel.prepareConcessione(); Response resp=target.request(MediaType.APPLICATION_JSON).post(Entity.entity(Serialization.write(conc), MediaType.APPLICATION_JSON)); Concessione c=check(resp,Concessione.class); Assert.assertTrue(c.getMongo_id()!=null&&!c.getMongo_id().isEmpty()); resp=target.path(c.getMongo_id()).request(MediaType.APPLICATION_JSON).get(); Concessione loaded=check(resp,Concessione.class); System.out.println("Got by ID "+loaded); Assert.assertTrue(loaded.getMongo_id()!=null&&!loaded.getMongo_id().isEmpty()); } @Test public void update() throws Exception { WebTarget target=target(PATH); Concessione conc=TestModel.prepareConcessione(); Response resp=target.request(MediaType.APPLICATION_JSON).post(Entity.entity(Serialization.write(conc), MediaType.APPLICATION_JSON)); Concessione c=check(resp,Concessione.class); resp=target.path(c.getMongo_id()).request(MediaType.APPLICATION_JSON).get(); Concessione loaded=check(resp,Concessione.class); Assert.assertTrue(c.getMongo_id()!=null&&!c.getMongo_id().isEmpty()); System.out.println("Modifying "+loaded); String newTitle="Questo titolo l'ho modificato mo'"; loaded.setNome(newTitle); resp=target.request(MediaType.APPLICATION_JSON).put(Entity.entity(Serialization.write(loaded), MediaType.APPLICATION_JSON)); Assert.assertTrue(check(resp,Concessione.class).getNome().equals(newTitle)); } @Test public void uploadFile() throws Exception { WebTarget target=target(PATH); Response resp=target.request(MediaType.APPLICATION_JSON).post(Entity.entity(Serialization.write(TestModel.prepareEmptyConcessione()), MediaType.APPLICATION_JSON)); Concessione c=check(resp,Concessione.class); Assert.assertTrue(c.getMongo_id()!=null&&!c.getMongo_id().isEmpty()); System.out.println("ID IS "+c.getMongo_id()); // Insert section c.setRelazioneScavo(TestModel.prepareConcessione().getRelazioneScavo()); // c.getRelazioneScavo().setMongo_id(TestModel.rnd()); resp=target.request(MediaType.APPLICATION_JSON).put(Entity.entity(Serialization.write(c), MediaType.APPLICATION_JSON)); c=check(resp,Concessione.class); // Add file TempFile f=new StorageUtils().putOntoStorage(new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")), "relazione.pdf"); AddSectionToConcessioneRequest request=new AddSectionToConcessioneRequest(); request.setDestinationPath(Paths.RELAZIONE); request.setStreams(Collections.singletonList(f)); resp=target.path(FILES_PATH).path(c.getMongo_id()).request(MediaType.APPLICATION_JSON).post(Entity.entity(Serialization.write(request), MediaType.APPLICATION_JSON)); c=check(resp,Concessione.class); assertNotNull(c.getRelazioneScavo().getActualContent()); assertTrue(c.getRelazioneScavo().getActualContent().size()>0); System.out.println("ADDED FILE TO "+c); } @Test public void publish() throws Exception { WebTarget target=target(PATH); Concessione conc=TestModel.prepareConcessione(); Response resp=target.request(MediaType.APPLICATION_JSON).post(Entity.entity(Serialization.write(conc), MediaType.APPLICATION_JSON)); Concessione c=check(resp,Concessione.class); // System.out.println("ID IS "+c.getMongo_id()); resp=target.path(c.getMongo_id()).request(MediaType.APPLICATION_JSON).get(); Concessione loaded=check(resp,Concessione.class); System.out.println("Modifying "+loaded); String newTitle="Questo titolo l'ho modificato mo'"; loaded.setNome(newTitle); resp=target.path(PUBLISH_PATH).path(c.getMongo_id()).request(MediaType.APPLICATION_JSON). put(Entity.entity(Serialization.write(conc), MediaType.APPLICATION_JSON)); // TODO Validation // Assert.assertTrue(check(resp,Concessione.class).getNome().equals(newTitle)); } }