Added new Data_Handler and UCD test cases

This commit is contained in:
Francesco Mangiacrapa 2022-09-14 16:50:59 +02:00
parent ab11f34bee
commit 1593755ee2
3 changed files with 182 additions and 34 deletions

View File

@ -3,28 +3,57 @@ package org.gcube.application.geoportalcommon.geoportal;
import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.useCaseDescriptors;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import org.bson.Document;
import org.gcube.application.geoportal.common.model.configuration.Archive;
import org.gcube.application.geoportal.common.model.configuration.Configuration;
import org.gcube.application.geoportal.common.model.document.Project;
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
import org.gcube.application.geoportal.common.rest.Projects;
import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.spi.json.JsonOrgJsonProvider;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
/**
* The Class UseCaseDescriptorCaller.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Sep 14, 2022
*/
public class UseCaseDescriptorCaller {
private static Logger LOG = LoggerFactory.getLogger(UseCaseDescriptorCaller.class);
/**
* Use case descriptors client.
*
* @return the use case descriptors I
*/
public UseCaseDescriptorsI useCaseDescriptorsClient() {
LOG.info("useCaseDescriptorsClient called");
return useCaseDescriptors().build();
}
/**
* Gets the list.
*
* @return the list
* @throws Exception the exception
*/
public List<UseCaseDescriptor> getList() throws Exception {
LOG.info("getList called");
UseCaseDescriptorsI client = useCaseDescriptorsClient();
@ -40,11 +69,26 @@ public class UseCaseDescriptorCaller {
return listUCD;
}
/**
* Gets the list for handler ids.
*
* @param listHandlersIds the list handlers ids
* @return the list for handler ids
* @throws Exception the exception
*/
public List<UseCaseDescriptor> getListForHandlerIds(List<String> listHandlersIds) throws Exception {
LOG.info("getListForHandlerIds called");
return getListForJSONPath("_handlers._id", listHandlersIds);
}
/**
* Gets the list for JSON path.
*
* @param jsonPath the json path
* @param listValues the list values
* @return the list for JSON path
* @throws Exception the exception
*/
public List<UseCaseDescriptor> getListForJSONPath(String jsonPath, List<String> listValues) throws Exception {
LOG.info("getListForJSONPath called for jsonPath: {}, with listValues: {}", jsonPath, listValues);
UseCaseDescriptorsI client = useCaseDescriptorsClient();
@ -93,6 +137,13 @@ public class UseCaseDescriptorCaller {
return listUCD;
}
/**
* Gets the UCD for id.
*
* @param profileID the profile ID
* @return the UCD for id
* @throws Exception the exception
*/
public UseCaseDescriptor getUCDForId(String profileID) throws Exception {
LOG.info("getUCDForId called for profileID: {}", profileID);
UseCaseDescriptorsI client = useCaseDescriptorsClient();
@ -117,4 +168,19 @@ public class UseCaseDescriptorCaller {
return ucd;
}
/**
* Gets the handlers by type.
*
* @param profileID the profile ID
* @param theHandlerType the the handler type
* @return the handlers by type
* @throws Exception the exception
*/
public List<HandlerDeclaration> getHandlersByType(String profileID, String theHandlerType) throws Exception {
LOG.info("getHandlersByType called for profileID: {}", profileID);
UseCaseDescriptorsI client = useCaseDescriptorsClient();
UseCaseDescriptor ucd = client.getById(profileID);
return ucd.getHandlersByType(theHandlerType);
}
}

View File

@ -4,7 +4,8 @@ public enum GEOPORTAL_DATA_HANDLER {
geoportal_data_list("org.gcube.portlets.user.geoportal-data-list", "DATA_LIST_GUI"),
geoportal_data_entry("org.gcube.portlets.user.geoportal-data-entry-app", "DATA_ENTRY_GUI"),
geoportal_workflow_action_list("org.gcube.portlets.user.geoportal-workflow-action-list", "WORKFLOW_ACTION_LIST_GUI");
geoportal_workflow_action_list("org.gcube.portlets.user.geoportal-workflow-action-list","WORKFLOW_ACTION_LIST_GUI"),
gna_concessionio_lc("GNA-CONCESSIONI-LC", "LifecycleManagement");
String id;
String type;

View File

@ -2,8 +2,11 @@ package org.gcube.application;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.HandlerDeclaration;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
import org.gcube.application.geoportalcommon.ConvertToDataValueObjectModel;
import org.gcube.application.geoportalcommon.geoportal.GeoportalClientCaller;
@ -17,9 +20,14 @@ import org.gcube.application.geoportalcommon.shared.geoportal.ucd.HandlerDeclara
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.scope.api.ScopeProvider;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.spi.json.JsonOrgJsonProvider;
/**
* The Class UCD_Tests.
*
@ -58,7 +66,7 @@ public class UCD_Tests {
* @return the list
* @throws Exception the exception
*/
@Test
//@Test
public void getList() throws Exception {
ScopeProvider.instance.set(CONTEXT);
SecurityTokenProvider.instance.set(TOKEN);
@ -115,7 +123,7 @@ public class UCD_Tests {
SecurityTokenProvider.instance.set(TOKEN);
List<String> handlersIds = null;
List<UseCaseDescriptor> listUseCaseDescriptor;
List<UseCaseDescriptor> listUseCaseDescriptor = null;
try {
UseCaseDescriptorCaller client = GeoportalClientCaller.useCaseDescriptors();
@ -125,10 +133,7 @@ public class UCD_Tests {
}
listUseCaseDescriptor = client.getListForHandlerIds(handlersIds);
} catch (Exception e) {
String error = "Error on contacting the Geoportal service";
System.out.println(error + " for handlers: " + handlersIds);
throw new Exception(
"Error when contacting the Geoportal service. Refresh and try again or contact the support", e);
e.printStackTrace();
}
if (listUseCaseDescriptor == null) {
@ -159,6 +164,7 @@ public class UCD_Tests {
List<String> handlersIds = null;
List<UseCaseDescriptor> listUseCaseDescriptor;
try {
UseCaseDescriptorCaller client = GeoportalClientCaller.useCaseDescriptors();
@ -168,10 +174,8 @@ public class UCD_Tests {
}
listUseCaseDescriptor = client.getListForHandlerIds(handlersIds);
} catch (Exception e) {
String error = "Error on contacting the Geoportal service";
System.out.println(error + " for handlers: " + handlersIds);
throw new Exception(
"Error when contacting the Geoportal service. Refresh and try again or contact the support", e);
e.printStackTrace();
return;
}
if (listUseCaseDescriptor == null) {
@ -187,6 +191,84 @@ public class UCD_Tests {
}
/**
* Gets the UCD for handler types.
*
* @return the UCD for handler types
* @throws Exception the exception
*/
// @Test
public void getUCDForHandlerTypes() throws Exception {
ScopeProvider.instance.set(CONTEXT);
SecurityTokenProvider.instance.set(TOKEN);
UseCaseDescriptor ucd = null;
List<HandlerDeclaration> handlers = null;
try {
UseCaseDescriptorCaller client = GeoportalClientCaller.useCaseDescriptors();
ucd = client.getUCDForId(PROFILE_ID);
handlers = client.getHandlersByType(PROFILE_ID, GEOPORTAL_DATA_HANDLER.gna_concessionio_lc.getType());
} catch (Exception e) {
e.printStackTrace();
return;
}
for (HandlerDeclaration handlerDeclaration : handlers) {
System.out.println(handlerDeclaration);
}
}
/**
* Gets the roles for STEP id.
*
* @return the roles for STEP id
* @throws Exception the exception
*/
@Test
public void getRolesForSTEPId() throws Exception {
ScopeProvider.instance.set(CONTEXT);
SecurityTokenProvider.instance.set(TOKEN);
try {
UseCaseDescriptor ucd = null;
List<HandlerDeclaration> handlers = null;
String stepID = "REJECT-DRAFT";
UseCaseDescriptorCaller client = GeoportalClientCaller.useCaseDescriptors();
ucd = client.getUCDForId(PROFILE_ID);
handlers = client.getHandlersByType(PROFILE_ID, GEOPORTAL_DATA_HANDLER.gna_concessionio_lc.getType());
com.jayway.jsonpath.Configuration configuration = com.jayway.jsonpath.Configuration.builder()
.jsonProvider(new JsonOrgJsonProvider()).build();
for (HandlerDeclaration handler : handlers) {
String toJSON = handler.getConfiguration().toJson();
System.out.println("Handler to JSON: " + toJSON);
JSONObject jObject = new JSONObject(toJSON);
JsonPath jsonPath = JsonPath.compile("$.step_access[?(@.STEP == '"+ stepID +"' )].roles");
System.out.println("jsonPath: " + jsonPath.getPath());
// $..book[?(@.price <= $['expensive'])]
JSONArray data = jsonPath.read(jObject, configuration);
System.out.println("matching data lenght: " + data.length());
HashSet<String> listdata = new HashSet<String>(data.length());
for (int i = 0; i < data.length(); i++) {
listdata.add(data.get(i).toString());
}
List<String> roles = listdata.stream().collect(Collectors.toList());
System.out.println("getRole returning: " + roles);
}
} catch (Exception e) {
e.printStackTrace();
return;
}
}
/**
* Gets the configurations for UC D data handlers.
*
@ -199,21 +281,21 @@ public class UCD_Tests {
SecurityTokenProvider.instance.set(TOKEN);
List<String> handlersIds = null;
List<UseCaseDescriptor> listUseCaseDescriptor;
List<UseCaseDescriptor> listUseCaseDescriptor = null;
try {
UseCaseDescriptorCaller client = GeoportalClientCaller.useCaseDescriptors();
if (handlersIds == null) {
//handlersIds = Arrays.asList(GEOPORTAL_DATA_HANDLER.geoportal_data_list.getId(), GEOPORTAL_DATA_HANDLER.geoportal_data_entry.getId());
// handlersIds =
// Arrays.asList(GEOPORTAL_DATA_HANDLER.geoportal_data_list.getId(),
// GEOPORTAL_DATA_HANDLER.geoportal_data_entry.getId());
handlersIds = Arrays.asList(GEOPORTAL_DATA_HANDLER.geoportal_workflow_action_list.getId());
System.out.println("handlersIds is null, so using default: " + handlersIds);
}
listUseCaseDescriptor = client.getListForHandlerIds(handlersIds);
} catch (Exception e) {
String error = "Error on contacting the Geoportal service";
System.out.println(error + " for handlers: " + handlersIds);
throw new Exception(
"Error when contacting the Geoportal service. Refresh and try again or contact the support", e);
e.printStackTrace();
return;
}
if (listUseCaseDescriptor == null) {
@ -291,7 +373,6 @@ public class UCD_Tests {
return null;
}
/**
* To list actions definition.
*