gcube-cms-suite/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatelessClientTests.java

302 lines
11 KiB
Java
Raw Normal View History

2022-05-31 13:46:41 +02:00
package org.gcube.application.geoportal.clients.legacy;
2021-09-20 16:47:35 +02:00
2021-12-01 12:02:48 +01:00
import org.gcube.application.cms.tests.model.concessioni.TestConcessioniFilters;
import org.gcube.application.cms.tests.model.concessioni.TestConcessioniModel;
import org.gcube.application.cms.tests.model.concessioni.TestConcessioniQueries;
2022-05-25 18:07:20 +02:00
import org.gcube.application.geoportal.client.utils.ConcessioniUtils;
2021-09-20 16:47:35 +02:00
import org.gcube.application.geoportal.client.utils.Queries;
2021-11-12 16:41:25 +01:00
import org.gcube.application.geoportal.client.utils.Serialization;
2022-05-31 13:46:41 +02:00
import org.gcube.application.geoportal.clients.BasicVreTests;
2021-10-12 15:43:35 +02:00
import org.gcube.application.geoportal.common.model.legacy.*;
2021-09-20 16:47:35 +02:00
import org.gcube.application.geoportal.common.model.legacy.Concessione.Paths;
import org.gcube.application.geoportal.common.model.legacy.report.ValidationReport.ValidationStatus;
import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest;
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
2021-09-21 17:45:18 +02:00
import org.gcube.application.geoportal.common.utils.FileSets;
2021-09-20 16:47:35 +02:00
import org.gcube.application.geoportal.common.utils.StorageUtils;
2022-05-31 13:46:41 +02:00
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
2021-09-20 16:47:35 +02:00
import org.junit.Test;
2022-05-31 13:46:41 +02:00
import java.io.File;
import java.util.Iterator;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.mongoConcessioni;
import static org.junit.Assert.*;
import static org.junit.Assume.assumeTrue;
public class StatelessClientTests extends BasicVreTests {
2021-09-20 16:47:35 +02:00
2022-05-31 13:46:41 +02:00
private final MongoConcessioni client=mongoConcessioni().build();
2021-09-20 16:47:35 +02:00
@Test
public void getConfiguration() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
2021-09-20 16:47:35 +02:00
System.out.println(client.getCurrentConfiguration());
}
@Test
public void searches() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
2021-12-01 12:02:48 +01:00
TestConcessioniFilters.filters.forEach((k, v)->{
2021-09-21 17:45:18 +02:00
try {
System.out.println("Count for " + k + "\t" + count(client.search(v)));
}catch (Exception e){
throw new RuntimeException(e);
}
});
2021-12-01 11:13:34 +01:00
2021-09-20 16:47:35 +02:00
}
@Test
public void query() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
2021-12-01 12:25:51 +01:00
System.out.println("FRA "+ count(client.query(
Queries.parse(TestConcessioniQueries.queries.get("emptyresult.json")))));
2021-12-01 11:13:34 +01:00
2021-09-20 16:47:35 +02:00
// No Transformation
System.out.print("First Registered \t");
Iterator<Concessione> queriedDocuments=client.query(
2021-12-01 12:02:48 +01:00
Queries.parse(TestConcessioniQueries.queries.get("firstRegistered.json")));
2021-09-20 16:47:35 +02:00
// Expected one result
assertTrue(count(queriedDocuments)==1);
System.out.print("Last Registered \t");
// Expected one result
queriedDocuments=client.query(
2021-12-01 12:02:48 +01:00
Queries.parse(TestConcessioniQueries.queries.get("lastRegistered.json")));
2021-09-20 16:47:35 +02:00
assertTrue(count(queriedDocuments)==1);
queriedDocuments.forEachRemaining((Concessione c)->{System.out.println(c.getNome());});
// Transformations
System.out.println(
client.queryForJSON(
2021-12-01 12:02:48 +01:00
Queries.parse(TestConcessioniQueries.queries.get("lastNameRegisteredByFabio.json"))));
2021-09-20 16:47:35 +02:00
System.out.println(
client.queryForJSON(
2021-12-01 12:02:48 +01:00
Queries.parse(TestConcessioniQueries.queries.get("publicationWarningMessages.json"))));
2021-09-20 16:47:35 +02:00
// String query=Files.readFileAsString(filterFile.getAbsolutePath(), Charset.defaultCharset());
// System.out.println("Count for "+filterFile.getName()+"\t"+ count(client.search(query)));
// }
}
@Test
2021-09-27 15:23:03 +02:00
public void testList() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
2021-09-27 15:23:03 +02:00
final AtomicLong counter=new AtomicLong();
long before=System.currentTimeMillis();
client.getList().forEachRemaining((Concessione c)-> {counter.addAndGet(1);});
System.out.println("Loaded "+counter+" in "+(System.currentTimeMillis()-before)+" ms");
}
@Test
public void testCreateNew() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
2021-12-01 12:02:48 +01:00
Concessione c= client.createNew(TestConcessioniModel.prepareEmptyConcessione());
2021-09-27 15:23:03 +02:00
assertNotNull(c);
assertNotNull(c.getMongo_id());
}
2022-05-25 18:07:20 +02:00
@Test
public void testClone() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
//Concessione c= prepare();
Concessione c = client.getById("6165af0102ad3d60e1d26edd");
2022-05-25 18:07:20 +02:00
Concessione copied = ConcessioniUtils.clone(client,c.getMongo_id());
assertEquals(copied.getNome(),c.getNome());
2022-05-27 14:26:50 +02:00
checkCopied(copied.getRelazioneScavo(),c.getRelazioneScavo());
checkCopied(copied.getAbstractRelazione(),c.getAbstractRelazione());
checkCopied(copied.getPosizionamentoScavo(),c.getPosizionamentoScavo());
2022-05-25 18:07:20 +02:00
assertEquals(copied.getPianteFineScavo().size(),c.getPianteFineScavo().size());
2022-05-27 14:26:50 +02:00
for(int i=0;i<c.getPianteFineScavo().size();i++)
checkCopied(copied.getPianteFineScavo().get(i),c.getPianteFineScavo().get(i));
assertEquals(copied.getImmaginiRappresentative().size(),c.getImmaginiRappresentative().size());
for(int i=0;i<c.getImmaginiRappresentative().size();i++)
checkCopied(copied.getImmaginiRappresentative().get(i),c.getImmaginiRappresentative().get(i));
2022-05-31 13:46:41 +02:00
// checking publish outcome
if(c.getReport()!=null && c.getReport().getStatus().equals(ValidationStatus.PASSED)){
copied = client.publish(copied.getMongo_id());
assertEquals(c.getReport().getStatus(),copied.getReport().getStatus());
}
2022-05-25 18:07:20 +02:00
}
2022-05-27 14:26:50 +02:00
private static void checkCopied(AssociatedContent copied,AssociatedContent original){
assertEquals(copied.getPolicy(),original.getPolicy());
assertEquals(copied.getLicenseID(),original.getLicenseID());
assertEquals(copied.getTitolo(),original.getTitolo());
if(copied instanceof LayerConcessione){
2022-05-31 13:46:41 +02:00
assertNull(((LayerConcessione)copied).getLayerName());
assertNull(((LayerConcessione)copied).getLayerID());
assertNull(((LayerConcessione)copied).getLayerUUID());
assertNull(((LayerConcessione)copied).getWorkspace());
assertNull(((LayerConcessione)copied).getWmsLink());
2022-05-27 14:26:50 +02:00
}
if(original.getActualContent()!=null){
assertNotNull(copied.getActualContent());
// count only workspace content
int oriringalCount= original.getActualContent().stream().
filter(persistedContent -> persistedContent instanceof WorkspaceContent).
collect(Collectors.toList()).size();
assertEquals(copied.getActualContent().size(),oriringalCount);
}
}
2022-05-25 18:07:20 +02:00
2021-09-27 15:23:03 +02:00
@Test
public void testReplace() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
2021-12-01 12:02:48 +01:00
Concessione testObject= client.createNew(TestConcessioniModel.prepareEmptyConcessione());
2021-09-27 15:23:03 +02:00
String title="My new shiny Title";
testObject.setNome(title);
Concessione c1=client.replace(testObject);
assertEquals(title, c1.getNome());
}
@Test
public void testUploadFileSet() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
2021-12-01 12:02:48 +01:00
Concessione testObject= client.createNew(TestConcessioniModel.prepareConcessione());
2021-09-27 15:23:03 +02:00
AddSectionToConcessioneRequest request=
2022-05-31 13:46:41 +02:00
Serialization.convert(
2021-12-01 12:02:48 +01:00
// FileSets.prepareRequest(new StorageUtils(),Paths.RELAZIONE,new File(TestConcessioniModel.getBaseFolder(),"relazione.pdf"));
2022-05-31 13:46:41 +02:00
FileSets.build(Paths.ABSTRACT_RELAZIONE,null,null).add(
new StorageUtils().putOntoStorage(new File(TestConcessioniModel.getBaseFolder(),"relazione.pdf"),"San Mauro_drone totale.JPG"))
.getTheRequest(),AddSectionToConcessioneRequest.class);
2021-09-27 15:23:03 +02:00
testObject= client.registerFileSet(testObject.getMongo_id(), request);
2021-09-20 16:47:35 +02:00
2021-09-27 15:23:03 +02:00
assertNotNull(testObject.getContentByPath(Paths.ABSTRACT_RELAZIONE).getActualContent());
assertNotNull(testObject.getContentByPath(Paths.ABSTRACT_RELAZIONE).getActualContent().get(0));
}
@Test
public void testDeleteById() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
2021-12-01 12:02:48 +01:00
Concessione c= client.createNew(TestConcessioniModel.prepareEmptyConcessione());
2021-09-27 15:23:03 +02:00
client.deleteById(c.getMongo_id());
}
@Test
2021-11-12 16:41:25 +01:00
public void testPublish() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
Concessione c=prepare();
2021-09-27 15:23:03 +02:00
assertTrue(c.getReport().getStatus().equals(ValidationStatus.PASSED));
2021-09-27 15:23:03 +02:00
}
@Test
public void testCleanFileSet() throws Exception {
2022-05-31 13:46:41 +02:00
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
Concessione testObject=prepare();
2021-10-12 15:43:35 +02:00
System.out.println("Object is "+testObject.getPosizionamentoScavo());
2021-09-20 16:47:35 +02:00
//Precheck to be sure
2021-09-27 15:23:03 +02:00
assertFalse(testObject.getPosizionamentoScavo().getActualContent().isEmpty());
assertFalse(testObject.getPianteFineScavo().get(0).getActualContent().isEmpty());
2021-09-20 16:47:35 +02:00
client.unPublish(testObject.getMongo_id());
2021-10-12 15:43:35 +02:00
// check unpublish
testObject= client.getById(testObject.getMongo_id());
for(LayerConcessione l:testObject.getPianteFineScavo())
for(PersistedContent pc: l.getActualContent())
if(pc instanceof GeoServerContent) throw new Exception ("Concessione not properly unpublished");
for(PersistedContent pc: testObject.getPosizionamentoScavo().getActualContent())
if(pc instanceof GeoServerContent) throw new Exception ("Concessione not properly unpublished");
2021-09-20 16:47:35 +02:00
//Clear pos
2021-09-27 15:23:03 +02:00
testObject=client.cleanFileSet(testObject.getMongo_id(),Paths.POSIZIONAMENTO);
assertTrue(testObject.getPosizionamentoScavo().getActualContent().isEmpty());
2021-09-20 16:47:35 +02:00
//Clear pianta [0]
2021-09-27 15:23:03 +02:00
testObject =client.cleanFileSet(testObject.getMongo_id(),Paths.piantaByIndex(0));
assertTrue(testObject.getPianteFineScavo().get(0).getActualContent().isEmpty());
2021-09-20 16:47:35 +02:00
}
private Concessione prepare() throws Exception {
2021-10-12 15:43:35 +02:00
int numImgs=1;
2021-12-01 12:02:48 +01:00
Concessione c= client.createNew(TestConcessioniModel.prepareConcessione(1,numImgs));
StorageUtils storage = new StorageUtils();
2021-11-12 16:41:25 +01:00
c.getRelazioneScavo().setPolicy(AccessPolicy.EMBARGOED);
String mongoId=c.getMongo_id();
2021-11-12 16:41:25 +01:00
c=client.update(mongoId, Serialization.write(c));
2021-11-12 16:41:25 +01:00
assertEquals(AccessPolicy.EMBARGOED,c.getRelazioneScavo().getPolicy());
2021-11-12 16:41:25 +01:00
c=client.registerFileSet(mongoId,
2022-05-31 13:46:41 +02:00
Serialization.convert(FileSets.prepareRequest(storage,Paths.RELAZIONE,null,null,
new File(TestConcessioniModel.getBaseFolder(),"relazione.pdf")), AddSectionToConcessioneRequest.class));
2021-11-12 16:41:25 +01:00
assertEquals(AccessPolicy.EMBARGOED,c.getRelazioneScavo().getPolicy());
c=client.registerFileSet(mongoId,
2022-05-31 13:46:41 +02:00
Serialization.convert(
FileSets.prepareRequest(storage,Paths.ABSTRACT_RELAZIONE,null, null, new File(TestConcessioniModel.getBaseFolder(),"relazione.pdf")),AddSectionToConcessioneRequest.class));
2021-10-12 15:43:35 +02:00
2021-11-12 16:41:25 +01:00
assertEquals(AccessPolicy.EMBARGOED,c.getRelazioneScavo().getPolicy());
2021-10-12 15:43:35 +02:00
for(int i=0;i<numImgs;i++)
2021-11-12 16:41:25 +01:00
c=client.registerFileSet(mongoId,
2022-05-31 13:46:41 +02:00
Serialization.convert(
FileSets.build(Paths.imgByIndex(i),null,null).
add(storage.putOntoStorage(new File(TestConcessioniModel.getBaseFolder(),"immagine"+(i+1)+".png"),
i+"San Mauro_drone totale.JPG")).getTheRequest(),AddSectionToConcessioneRequest.class));
2021-11-12 16:41:25 +01:00
assertEquals(AccessPolicy.EMBARGOED,c.getRelazioneScavo().getPolicy());
2021-11-12 16:41:25 +01:00
c=client.registerFileSet(mongoId,
2022-05-31 13:46:41 +02:00
Serialization.convert(
FileSets.prepareRequest(storage,Paths.POSIZIONAMENTO,null,null,new File(TestConcessioniModel.getBaseFolder(),
"pos.shp")),AddSectionToConcessioneRequest.class));
2021-11-12 16:41:25 +01:00
assertEquals(AccessPolicy.EMBARGOED,c.getRelazioneScavo().getPolicy());
c=client.registerFileSet(mongoId,
2022-05-31 13:46:41 +02:00
Serialization.convert(
FileSets.prepareRequest(storage,Paths.piantaByIndex(0),null,null,
new File(TestConcessioniModel.getBaseFolder(),"pianta.shp")),AddSectionToConcessioneRequest.class));
2021-11-12 16:41:25 +01:00
assertEquals(AccessPolicy.EMBARGOED,c.getRelazioneScavo().getPolicy());
c=client.publish(mongoId);
2021-11-12 16:41:25 +01:00
assertEquals(AccessPolicy.EMBARGOED,c.getRelazioneScavo().getPolicy());
return c;
}
2021-09-20 16:47:35 +02:00
// UTILS
public static long count(Iterator<?> iterator){
AtomicLong l=new AtomicLong(0);
iterator.forEachRemaining(el->{l.incrementAndGet();});
return l.get();
}
}