From 1d33bfefcb6f531b11ad00c050935e2b6357eb78 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Sun, 24 Jan 2021 23:32:19 +0100 Subject: [PATCH] Added test --- .../gcat/persistence/ckan/CKANGroupTest.java | 59 ++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/gcube/gcat/persistence/ckan/CKANGroupTest.java b/src/test/java/org/gcube/gcat/persistence/ckan/CKANGroupTest.java index a6001f5..0ce4152 100644 --- a/src/test/java/org/gcube/gcat/persistence/ckan/CKANGroupTest.java +++ b/src/test/java/org/gcube/gcat/persistence/ckan/CKANGroupTest.java @@ -1,15 +1,23 @@ package org.gcube.gcat.persistence.ckan; +import java.io.IOException; import java.util.Arrays; +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.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; - public class CKANGroupTest extends ContextTest { private static Logger logger = LoggerFactory.getLogger(CKANGroupTest.class); @@ -69,4 +77,51 @@ public class CKANGroupTest extends ContextTest { ckanGroup.delete(true); } } + + private void create(Set createdGroup, Map groups, String name) throws JsonProcessingException, IOException { + if(createdGroup.contains(name)) { + return; + } + String sysAdminAPI = "522557b4-f709-4935-be81-947e13afa2a7"; // 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 { + // Setting GRSF ADMIN token of grsf.publisher user to read groups + ContextTest.setContext("5213d3d8-6ea3-4d55-bf1c-da25ed3aba43-843339462"); + String key = CKANUtility.getSysAdminAPI(); + List groupNames = listGroup(); + Map 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 createdGroup = new HashSet<>(); + + // Setting GRSF_PRE token of grsf.publisher user to create groups + ContextTest.setContext("17f72d12-5fe0-48a4-90d3-c398c41aedfe-843339462"); + for(String name : groupNames) { + create(createdGroup, groups, name); + } + + } }