gcat/src/test/java/org/gcube/gcat/persistence/ckan/GRSFUtilities.java

118 lines
3.6 KiB
Java

package org.gcube.gcat.persistence.ckan;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
import org.gcube.common.authorization.client.exceptions.ObjectNotFound;
import org.gcube.gcat.ContextTest;
import org.junit.Assert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class GRSFUtilities extends ContextTest {
private static Logger logger = LoggerFactory.getLogger(CKANGroupTest.class);
private void create(Set<String> createdGroup, Map<String, String> groups, String name) throws JsonProcessingException, IOException {
if(createdGroup.contains(name)) {
return;
}
String sysAdminAPI = ""; // CKANUtility.getSysAdminAPI();
CKANGroup ckanGroupToCreate = new CKANGroup();
ckanGroupToCreate.setApiKey(sysAdminAPI);
ckanGroupToCreate.setName(name);
// ckanGroupToCreate.purge();
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(groups.get(name));
ArrayNode array = (ArrayNode) jsonNode.get("groups");
for(JsonNode node : array) {
String parentName = node.get("name").asText();
if(!createdGroup.contains(parentName)) {
create(createdGroup, groups, parentName);
}
}
ckanGroupToCreate.create(groups.get(name));
createdGroup.add(name);
}
// @Test
public void createGRSFGroups() throws ObjectNotFound, Exception {
// Set grsf.publisher user
ContextTest.setContext("");
String key = CKANUtility.getSysAdminAPI();
List<String> groupNames = CKANGroupTest.listGroup();
Map<String, String> groups = new HashMap<>();
for(String name : groupNames) {
CKANGroup ckanGroup = new CKANGroup();
ckanGroup.setApiKey(key);
ckanGroup.setName(name);
String read = ckanGroup.read();
groups.put(name, read);
}
Set<String> createdGroup = new HashSet<>();
// Setting GRSF_PRE token of grsf.publisher user to create groups
ContextTest.setContext("");
for(String name : groupNames) {
create(createdGroup, groups, name);
}
}
// @Test
public void associateUserToAllCKANGroups() throws ObjectNotFound, Exception {
// Set grsf.publisher user
ContextTest.setContext("");
String sysAdminAPI = CKANUtility.getSysAdminAPI();
List<String> groupNames = CKANGroupTest.listGroup();
for(String groupName : groupNames) {
CKANUser ckanUser = new CKANUser();
ckanUser.setApiKey(sysAdminAPI);
ckanUser.setName("grsf_publisher");
ckanUser.addToGroup(CKANGroup.getCKANGroupName(groupName));
}
}
// @Test
public void purgeAllGRSFRecords() throws Exception {
ContextTest.setContextByName("/d4science.research-infrastructures.eu/FARM/GRSF_Pre");
logger.debug("Going to purge all records");
CKANPackage ckanPackage = new CKANPackage();
ObjectMapper mapper = new ObjectMapper();
boolean go = true;
while(go) {
String ret = ckanPackage.list(10, 0);
JsonNode gotList = mapper.readTree(ret);
Assert.assertTrue(gotList instanceof ArrayNode);
ArrayNode itemsArray = (ArrayNode) gotList;
if(itemsArray.size()>0) {
for(JsonNode jsonNode : itemsArray) {
String name = jsonNode.asText();
logger.debug("Going to purge record with name {}", name);
ckanPackage.setName(name);
// ckanPackage.delete(true);
if(go) {
break;
}
Thread.sleep(500);
}
}else {
go=false;
}
}
}
}