gcube-cms-suite/geoportal-service/src/test/java/org/gcube/application/geoportal/service/profiledDocuments/ProfiledConcessioniTests.java

160 lines
6.0 KiB
Java

package org.gcube.application.geoportal.service.profiledDocuments;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.gcube.application.cms.serialization.Serialization;
import org.gcube.application.cms.tests.model.BasicTests;
import org.gcube.application.geoportal.common.model.document.Project;
import org.gcube.application.geoportal.common.model.document.identification.SpatialReference;
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.Field;
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
import org.gcube.application.geoportal.common.utils.StorageUtils;
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
import org.gcube.application.geoportal.service.utils.UserUtils;
import org.junit.Test;
import javax.management.relation.Relation;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import java.time.LocalDateTime;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
@Slf4j
public class ProfiledConcessioniTests extends AbstractProfiledDocumentsTests{
@Override
protected WebTarget baseTarget() {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
String testProfileId="profiledConcessioni";
return super.baseTarget().path(testProfileId);
}
@Test
public void testSDI() throws Exception {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
UserUtils.DEFAULT_ROLES.add("Data-Manager");
// Create new
Document theDoc=Document.parse("{" +
"\"posizionamentoScavo\" :{\"titolo\" : \"mio titolo\"},\"nome\":\"TEST SDI Extensions\"}");
theDoc.put("startTime", LocalDateTime.now());
log.debug("Sending {}",theDoc);
log.debug("AS JSON : {}",Serialization.write(theDoc));
Project doc = createNew(theDoc);
log.debug("Received : {}",doc);
log.debug("AS JSON : {}",Serialization.write(doc));
// register filesets
doc = upload(
new StorageUtils(),
doc.getId(),
"$.posizionamentoScavo",
"fileset",
"$.posizionamentoScavo."+ Field.CHILDREN+"[?(@.fileset)]",
null,
RegisterFileSetRequest.ClashOptions.MERGE_EXISTING,
"concessioni/pos.SHP");
System.out.println("Registered posizionamento, result is "+ Serialization.write(doc));
// invoke step SUBMIT-FOR-REVIEW
StepExecutionRequest submitReq=new StepExecutionRequest();
submitReq.setStepID("SUBMIT-FOR-REVIEW");
// doc=step(doc.getId(),submitReq);
doc=step(doc.getId(),submitReq);
System.out.println(doc);
assertTrue(doc.getLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.OK));
// invoke step Publish
StepExecutionRequest approveDraftReq=new StepExecutionRequest();
approveDraftReq.setStepID("APPROVE-SUBMITTED");
doc=step(doc.getId(),approveDraftReq);
System.out.println(doc);
assertTrue(doc.getLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.OK));
assertTrue(doc.getIdentificationReferenceByType(SpatialReference.SPATIAL_REFERENCE_TYPE).size()==1);
System.out.println("Project "+doc.getId()+" published with spatial reference "+doc.getIdentificationReferenceByType(SpatialReference.SPATIAL_REFERENCE_TYPE).get(0));
}
@Test
public void testRelations() throws Exception {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
Document theDoc=Document.parse("{\n" +
"\"posizionamentoScavo\" :{\n" +
"\t\"titolo\" : \"mio titolo\"}}");
Project doc1 = createNew(theDoc);
Project doc2 = createNew(theDoc);
String rel = "follows";
String reverse = "precedes";
log.info("Creating relation ");
doc1 = setRelation(doc1,doc2.getId(),null,rel);
log.debug("JSON Doc 1 : {}",Serialization.write(doc1));
// check relation
assertTrue(doc1.getRelationships().size()==1);
assertEquals(doc1.getRelationships().get(0).getTargetID(),doc2.getId());
assertEquals(doc1.getRelationships().get(0).getTargetUCD(),doc2.getProfileID());
assertEquals(doc1.getRelationships().get(0).getRelationshipName(),rel);
// check reverse
doc2=getById(doc2.getId());
log.debug("JSON Doc 2 : {}",Serialization.write(doc2));
assertTrue(doc2.getRelationships().size()==1);
assertEquals(doc2.getRelationships().get(0).getTargetID(),doc1.getId());
assertEquals(doc2.getRelationships().get(0).getTargetUCD(),doc1.getProfileID());
assertEquals(doc2.getRelationships().get(0).getRelationshipName(),reverse);
StepExecutionRequest stepReq = new StepExecutionRequest();
stepReq.setStepID("SUBMIT-FOR-REVIEW");
step(doc1.getId(),stepReq);
// clean
doc2 = deleteRelation(doc2, doc1.getId(), doc1.getProfileID(),reverse);
log.debug("JSON Doc 2 : {}",Serialization.write(doc2));
assertTrue(doc2.getRelationships()==null || doc2.getRelationships().isEmpty());
doc1 = getById(doc1.getId());
log.debug("JSON Doc 1 : {}",Serialization.write(doc1));
assertTrue(doc1.getRelationships()==null || doc1.getRelationships().isEmpty());
}
@Test
public void delete() throws Exception {
Document theDoc=Document.parse("{\n" +
"\"posizionamentoScavo\" :{\n" +
"\t\"titolo\" : \"mio titolo\"}}");
theDoc.put("startTime", LocalDateTime.now());
log.debug("sendi");
Project doc = createNew(theDoc);
}
}