resource-registry/src/test/java/org/gcube/informationsystem/resourceregistry/er/multicontext/RuleTest.java

131 lines
4.8 KiB
Java

package org.gcube.informationsystem.resourceregistry.er.multicontext;
import java.util.UUID;
import org.gcube.informationsystem.model.impl.relations.IsIdentifiedByImpl;
import org.gcube.informationsystem.model.reference.entities.Facet;
import org.gcube.informationsystem.model.reference.relations.IsIdentifiedBy;
import org.gcube.informationsystem.resourceregistry.ContextTest;
import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.facet.FacetAlreadyPresentException;
import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceAlreadyPresentException;
import org.gcube.informationsystem.resourceregistry.instances.model.entity.FacetManagement;
import org.gcube.informationsystem.resourceregistry.instances.model.entity.ResourceManagement;
import org.gcube.informationsystem.utils.ISMapper;
import org.gcube.resourcemanagement.model.impl.entities.facets.SoftwareFacetImpl;
import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet;
import org.gcube.resourcemanagement.model.reference.entities.resources.EService;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RuleTest extends ContextTest {
private static Logger logger = LoggerFactory
.getLogger(RuleTest.class);
public EService createEservice() throws Exception {
EService eService = new EServiceImpl();
SoftwareFacet softwareFacet = new SoftwareFacetImpl();
softwareFacet.setGroup("InformationSystem");
softwareFacet.setName("resource-registry");
softwareFacet.setVersion("1.1.0");
IsIdentifiedBy<EService, Facet> isIdentifiedBy = new IsIdentifiedByImpl<EService, Facet>(
eService, softwareFacet, null);
eService.addFacet(isIdentifiedBy);
ResourceManagement resourceManagement = new ResourceManagement();
resourceManagement.setElementType(EService.NAME);
resourceManagement.setJson(ISMapper.marshal(eService));
String json = resourceManagement.create();
logger.debug("Created : {}", json);
eService = ISMapper.unmarshal(EService.class, json);
logger.debug("Unmarshalled {} {}", EService.NAME, eService);
return eService;
}
public UUID checkEServiceCreation(EService eService) throws Exception{
UUID eServiceUUID = eService.getHeader().getUUID();
ResourceManagement resourceManagement = new ResourceManagement();
resourceManagement.setUUID(eServiceUUID);
String json = resourceManagement.read();
EService readEService = ISMapper.unmarshal(EService.class, json);
Assert.assertTrue(readEService.getHeader().getUUID().compareTo(eServiceUUID) == 0);
return eServiceUUID;
}
public UUID checkFacetCreation(EService eService) throws Exception {
UUID softwareFacetUUID = eService.getIdentificationFacets().get(0).getHeader().getUUID();
FacetManagement facetManagement = new FacetManagement();
facetManagement.setUUID(softwareFacetUUID);
String json = facetManagement.read();
SoftwareFacet readSoftwareFacet = ISMapper.unmarshal(SoftwareFacet.class, json);
Assert.assertTrue(readSoftwareFacet.getHeader().getUUID().compareTo(softwareFacetUUID) == 0);
return softwareFacetUUID;
}
@Test
public void test() throws Exception {
EService eService = createEservice();
@SuppressWarnings("unused")
UUID eServiceUUID = checkEServiceCreation(eService);
@SuppressWarnings("unused")
UUID softwareFacetUUID = checkFacetCreation(eService);
SoftwareFacet softwareFacet = (SoftwareFacet) eService.getIdentificationFacets().get(0);
String softwareFacetString = ISMapper.marshal(softwareFacet);
// Trying to recreate SoftwareFacet
FacetManagement softwareFacetManagement = new FacetManagement();
softwareFacetManagement.setElementType(SoftwareFacet.NAME);
softwareFacetManagement.setJson(softwareFacetString);
try{
softwareFacetManagement.create();
}catch (FacetAlreadyPresentException e) {
// OK
logger.debug("As expected {} cannot be recreated", softwareFacetString, e);
}catch (Exception e) {
throw e;
}
// Trying to recreate EService
String eServiceString = ISMapper.marshal(eService);
ResourceManagement eServiceManagement = new ResourceManagement();
eServiceManagement.setElementType(EService.NAME);
eServiceManagement.setJson(eServiceString);
try{
eServiceManagement.create();
}catch (ResourceAlreadyPresentException e) {
// OK
logger.debug("As expected {} cannot be recreated", eServiceString, e);
}catch (Exception e) {
throw e;
}
// TODO continue with checks
eServiceManagement = new ResourceManagement();
eServiceManagement.setElementType(EService.NAME);
eServiceManagement.setJson(eServiceString);
boolean deleted = eServiceManagement.delete();
Assert.assertTrue(deleted);
}
}