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

178 lines
7.0 KiB
Java

package org.gcube.application.geoportal.service.profiledDocuments;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.jayway.jsonpath.JsonPath;
import org.bson.Document;
import org.gcube.application.cms.serialization.Serialization;
import org.gcube.application.cms.tests.TokenSetter;
import org.gcube.application.cms.tests.model.concessioni.TestConcessioniModel;
import org.gcube.application.geoportal.common.model.JSONPathWrapper;
import org.gcube.application.geoportal.common.model.document.ProfiledDocument;
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
import org.gcube.application.geoportal.common.model.document.lifecycle.LifecycleInformation;
import org.gcube.application.geoportal.common.model.rest.Configuration;
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
import org.gcube.application.geoportal.common.utils.FileSets;
import org.gcube.application.geoportal.common.utils.StorageUtils;
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
import org.gcube.application.geoportal.service.BasicServiceTestUnit;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
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 java.io.File;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
public abstract class AbstractProfiledDocumentsTests extends BasicServiceTestUnit {
@Before
public void setContext(){
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
TokenSetter.set(GCubeTest.getContext());
}
protected abstract WebTarget baseTarget();
@Test
public void getAll() {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
System.out.println(baseTarget().request(MediaType.APPLICATION_JSON).get(List.class));
}
@Test
public void getByID(){
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
baseTarget().request(MediaType.APPLICATION_JSON).get(List.class).forEach(d ->{
try {
check(baseTarget().path((Serialization.convert(d,ProfiledDocument.class)).getId())
.request(MediaType.APPLICATION_JSON).get(),ProfiledDocument.class);
} catch (Exception e) {
e.printStackTrace(System.err);
Assert.fail(e.getMessage());
}
});
}
@Test
public void getConfiguration() {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
System.out.println(baseTarget().path(InterfaceConstants.Methods.CONFIGURATION_PATH).request(MediaType.APPLICATION_JSON).get(Configuration.class));
}
// Queries
@Test
public void query() throws JsonProcessingException {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
System.out.println(baseTarget().path(InterfaceConstants.Methods.QUERY_PATH).
request(MediaType.APPLICATION_JSON).
post(Entity.entity(Serialization.write(new QueryRequest()),MediaType.APPLICATION_JSON)));
}
// CREATE / edit / delete
// @@@@@@@@@@@@@@@ Routines
protected ProfiledDocument createNew(Document content) throws Exception {
ProfiledDocument doc =check(baseTarget().request(MediaType.APPLICATION_JSON).
post(Entity.entity(content, MediaType.APPLICATION_JSON)),ProfiledDocument.class);
validate(doc);
assertTrue(doc.getLifecycleInformation().getPhase().equals(LifecycleInformation.DRAFT_PHASE));
return doc;
}
protected void validate (ProfiledDocument doc){
assertTrue(doc!=null);
assertTrue(doc.getId()!=null);
assertTrue(doc.getLifecycleInformation().getPhase()!=null);
assertTrue(doc.getLifecycleInformation().getLastOperationStatus()!=null);
if(doc.getLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.ERROR))
assertTrue(doc.getLifecycleInformation().getErrorMessages().size()>0);
if(doc.getLifecycleInformation().getLastOperationStatus().equals(LifecycleInformation.Status.WARNING))
assertTrue(doc.getLifecycleInformation().getWarningMessages().size()>0);
if(doc.getLifecycleInformation().getTriggeredEvents()!=null)
doc.getLifecycleInformation().getTriggeredEvents().forEach(triggeredEvents -> {
assertTrue(triggeredEvents.getEvent()!=null);
assertTrue(triggeredEvents.getLastOperationStatus()!=null);
if(triggeredEvents.getLastOperationStatus().equals(LifecycleInformation.Status.ERROR))
assertTrue(triggeredEvents.getErrorMessages().size()>0);
if(triggeredEvents.getLastOperationStatus().equals(LifecycleInformation.Status.WARNING))
assertTrue(triggeredEvents.getWarningMessages().size()>0);
});
assertTrue(doc.getInfo()!=null);
assertTrue(doc.getInfo().getCreationInfo()!=null);
assertTrue(doc.getInfo().getCreationInfo().getContext()!=null);
assertTrue(doc.getInfo().getCreationInfo().getContext().getId()!=null);
assertTrue(doc.getInfo().getCreationInfo().getContext().getName()!=null);
assertTrue(doc.getInfo().getCreationInfo().getInstant()!=null);
assertTrue(doc.getInfo().getCreationInfo().getInstant()!=null);
assertTrue(doc.getInfo().getCreationInfo().getUser()!=null);
assertTrue(doc.getInfo().getCreationInfo().getUser().getUsername()!=null);
assertTrue(doc.getTheDocument()!=null);
}
protected ProfiledDocument update(String id, Document newContent)throws Exception {
ProfiledDocument doc = check(baseTarget().path(id).request(MediaType.APPLICATION_JSON).
put(Entity.entity(newContent, MediaType.APPLICATION_JSON)),ProfiledDocument.class);
validate(doc);
return doc;
}
protected ProfiledDocument upload(StorageUtils storage,
String id,
String parentPath,
String fieldName,
String fieldDefinitionPath,
Document attributes,
RegisterFileSetRequest.ClashOptions clashPolicy,
String ...files) throws Exception {
FileSets.RequestBuilder builder = FileSets.build(parentPath,fieldName,fieldDefinitionPath);
builder.setClashPolicy(clashPolicy).setAttributes(attributes);
for(String file:files)
builder.add(storage.putOntoStorage(new File(TestConcessioniModel.getBaseFolder(),file),file));
ProfiledDocument doc = check(baseTarget().path(InterfaceConstants.Methods.REGISTER_FILES_PATH).path(id).request(MediaType.APPLICATION_JSON).
post(Entity.entity(Serialization.write(builder.getTheRequest()),
MediaType.APPLICATION_JSON)),ProfiledDocument.class);
validate(doc);
return doc;
}
protected ProfiledDocument step(String id, StepExecutionRequest request) throws Exception {
ProfiledDocument toReturn= check(baseTarget().
path(InterfaceConstants.Methods.STEP).path(id).request(MediaType.APPLICATION_JSON).
post(Entity.entity(Serialization.write(request),
MediaType.APPLICATION_JSON)),ProfiledDocument.class);
validate(toReturn);
assertTrue(toReturn.getLifecycleInformation().getLastInvokedStep().equals(request.getStepID()));
return toReturn;
}
}