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

217 lines
6.9 KiB
Java

package org.gcube.application.geoportal.clients;
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni;
import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni;
import static org.junit.Assert.*;
import java.io.File;
import java.io.FileInputStream;
import java.nio.charset.Charset;
import java.util.Collections;
import java.util.Iterator;
import java.util.concurrent.atomic.AtomicLong;
import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI;
import org.gcube.application.geoportal.client.utils.Queries;
import org.gcube.application.geoportal.client.utils.Serialization;
import org.gcube.application.geoportal.common.model.TestModel;
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.model.legacy.report.ValidationReport.ValidationStatus;
import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest;
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
import org.gcube.application.geoportal.common.utils.Files;
import org.gcube.application.geoportal.common.utils.StorageUtils;
import org.junit.Test;
public class StatelessClientTests extends BasicVreTests{
private MongoConcessioni client=mongoConcessioni().build();
@Test
public void testCreateNew() throws Exception {
Concessione c= client.createNew(TestModel.prepareEmptyConcessione());
assertNotNull(c);
assertNotNull(c.getMongo_id());
}
@Test
public void testDeleteById() throws Exception {
Concessione c= client.createNew(TestModel.prepareEmptyConcessione());
client.deleteById(c.getMongo_id());
}
@Test
public void testList() throws Exception {
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 testReplace() throws Exception {
Concessione c= client.createNew(TestModel.prepareEmptyConcessione());
String title="My new shiny Title";
c.setNome(title);
Concessione c1=client.replace(c);
assertEquals(title, c1.getNome());
}
@Test
public void testUploadFileSet() throws Exception {
Concessione c= client.createNew(TestModel.prepareConcessione());
assertNotNull(c.getRelazioneScavo());
AddSectionToConcessioneRequest request=
new AddSectionToConcessioneRequest(Paths.RELAZIONE,
Collections.singletonList(new StorageUtils().putOntoStorage(
new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")), "relazione.pdf")));
c= client.registerFileSet(c.getMongo_id(), request);
assertNotNull(c.getRelazioneScavo().getActualContent());
assertNotNull(c.getRelazioneScavo().getActualContent().get(0));
}
@Test
public void testPublsh() throws Exception {
publish(true);
}
public Concessione publish(Boolean verify) throws Exception {
return publish(verify,client);
}
public static Concessione publish(Boolean verify,MongoConcessioni client) throws Exception {
Concessione c= client.createNew(TestModel.prepareConcessione());
String mongoId=c.getMongo_id();
AddSectionToConcessioneRequest request=
new AddSectionToConcessioneRequest(Paths.RELAZIONE,
Collections.singletonList(new StorageUtils().putOntoStorage(
new FileInputStream(Files.getFileFromResources("concessioni/relazione.pdf")), "relazione.pdf")));
client.registerFileSet(mongoId, request);
request=
new AddSectionToConcessioneRequest(Paths.imgByIndex(0),
Collections.singletonList(new StorageUtils().putOntoStorage(
new FileInputStream(Files.getFileFromResources("concessioni/immagine.png")), "immagine.png")));
client.registerFileSet(mongoId, request);
request=
new AddSectionToConcessioneRequest(Paths.POSIZIONAMENTO,
Collections.singletonList(new StorageUtils().putOntoStorage(
new FileInputStream(Files.getFileFromResources("concessioni/pos.shp")), "pos.shp")));
client.registerFileSet(mongoId, request);
request=
new AddSectionToConcessioneRequest(Paths.piantaByIndex(0),
Collections.singletonList(new StorageUtils().putOntoStorage(
new FileInputStream(Files.getFileFromResources("concessioni/pianta.shp")), "pianta.shp")));
client.registerFileSet(mongoId, request);
c=client.publish(mongoId);
if(verify)
assertTrue(c.getReport().getStatus().equals(ValidationStatus.PASSED));
return c;
}
@Test
public void getConfiguration() throws Exception {
System.out.println(client.getCurrentConfiguration());
}
@Test
public void searches() throws Exception {
for(File filterFile:new File("src/test/resources/concessioni/filters").listFiles()) {
String query=Files.readFileAsString(filterFile.getAbsolutePath(), Charset.defaultCharset());
System.out.println("Count for "+filterFile.getName()+"\t"+ count(client.search(query)));
}
}
@Test
public void query() throws Exception {
// No Transformation
System.out.print("First Registered \t");
Iterator<Concessione> queriedDocuments=client.query(
Queries.readPath("src/test/resources/concessioni/queries/firstRegistered.json"));
// Expected one result
assertTrue(count(queriedDocuments)==1);
System.out.print("Last Registered \t");
// Expected one result
queriedDocuments=client.query(
Queries.readPath("src/test/resources/concessioni/queries/lastRegistered.json"));
assertTrue(count(queriedDocuments)==1);
queriedDocuments.forEachRemaining((Concessione c)->{System.out.println(c.getNome());});
// Transformations
System.out.println(
client.queryForJSON(
Queries.readPath("src/test/resources/concessioni/queries/lastNameRegisteredByFabio.json")));
System.out.println(
client.queryForJSON(
Queries.readPath("src/test/resources/concessioni/queries/publicationWarningMessages.json")));
// String query=Files.readFileAsString(filterFile.getAbsolutePath(), Charset.defaultCharset());
// System.out.println("Count for "+filterFile.getName()+"\t"+ count(client.search(query)));
// }
}
@Test
public void testCleanFileSet() throws Exception {
Concessione c=publish(false);
client.unPublish(c.getMongo_id());
//Precheck to be sure
assertFalse(c.getPosizionamentoScavo().getActualContent().isEmpty());
assertFalse(c.getPianteFineScavo().get(0).getActualContent().isEmpty());
//Clear pos
c=client.cleanFileSet(c.getMongo_id(),Paths.POSIZIONAMENTO);
assertTrue(c.getPosizionamentoScavo().getActualContent().isEmpty());
//Clear pianta [0]
c=client.cleanFileSet(c.getMongo_id(),Paths.piantaByIndex(0));
assertTrue(c.getPianteFineScavo().get(0).getActualContent().isEmpty());
}
// UTILS
public static long count(Iterator<?> iterator){
AtomicLong l=new AtomicLong(0);
iterator.forEachRemaining(el->{l.incrementAndGet();});
return l.get();
}
}