/** * */ package org.gcube.informationsystem.resourceregistry.instances; import java.net.URI; import java.net.URL; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import org.gcube.common.security.providers.SecretManagerProvider; import org.gcube.informationsystem.base.reference.Element; import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.model.impl.properties.EncryptedImpl; import org.gcube.informationsystem.model.impl.properties.PropagationConstraintImpl; import org.gcube.informationsystem.model.impl.relations.ConsistsOfImpl; import org.gcube.informationsystem.model.reference.entities.Facet; import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.informationsystem.model.reference.properties.Encrypted; import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint.AddConstraint; import org.gcube.informationsystem.model.reference.properties.PropagationConstraint.RemoveConstraint; import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.entities.resource.ResourceNotFoundException; import org.gcube.informationsystem.resourceregistry.api.utils.Utility; import org.gcube.informationsystem.resourceregistry.instances.base.ElementManagementUtility; import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; import org.gcube.informationsystem.resourceregistry.instances.model.entities.ResourceManagement; import org.gcube.informationsystem.resourceregistry.instances.model.relations.ConsistsOfManagement; import org.gcube.informationsystem.resourceregistry.instances.model.relations.IsRelatedToManagement; import org.gcube.informationsystem.resourceregistry.utils.HeaderUtility; import org.gcube.informationsystem.utils.ElementMapper; import org.gcube.resourcemanagement.model.impl.entities.facets.AccessPointFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.CPUFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.EventFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.IdentifierFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.LicenseFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.MemoryFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.NetworkingFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.SoftwareFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.facets.StateFacetImpl; import org.gcube.resourcemanagement.model.impl.entities.resources.ConfigurationImpl; import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl; import org.gcube.resourcemanagement.model.impl.entities.resources.HostingNodeImpl; import org.gcube.resourcemanagement.model.impl.properties.ValueSchemaImpl; import org.gcube.resourcemanagement.model.impl.relations.consistsof.HasPersistentMemoryImpl; import org.gcube.resourcemanagement.model.impl.relations.consistsof.HasVolatileMemoryImpl; import org.gcube.resourcemanagement.model.impl.relations.consistsof.IsIdentifiedByImpl; import org.gcube.resourcemanagement.model.impl.relations.isrelatedto.ActivatesImpl; import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet; import org.gcube.resourcemanagement.model.reference.entities.facets.CPUFacet; import org.gcube.resourcemanagement.model.reference.entities.facets.EventFacet; import org.gcube.resourcemanagement.model.reference.entities.facets.IdentifierFacet; import org.gcube.resourcemanagement.model.reference.entities.facets.IdentifierFacet.IdentificationType; import org.gcube.resourcemanagement.model.reference.entities.facets.LicenseFacet; import org.gcube.resourcemanagement.model.reference.entities.facets.MemoryFacet; import org.gcube.resourcemanagement.model.reference.entities.facets.MemoryFacet.MemoryUnit; import org.gcube.resourcemanagement.model.reference.entities.facets.NetworkingFacet; import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet; import org.gcube.resourcemanagement.model.reference.entities.facets.StateFacet; import org.gcube.resourcemanagement.model.reference.entities.resources.Configuration; import org.gcube.resourcemanagement.model.reference.entities.resources.EService; import org.gcube.resourcemanagement.model.reference.entities.resources.HostingNode; import org.gcube.resourcemanagement.model.reference.properties.ValueSchema; import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasPersistentMemory; import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasVolatileMemory; import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; import org.gcube.resourcemanagement.model.reference.relations.isrelatedto.Activates; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.orientechnologies.orient.core.exception.ODatabaseException; /** * @author Luca Frosini (ISTI - CNR) */ public class ERManagementTest extends ContextTest { private static Logger logger = LoggerFactory.getLogger(ERManagementTest.class); public static final String GROUP = "InformationSystem"; public static final String NAME = "resource-registry"; public static final String VERSION = "1.0.0"; public static final String NEW_VERSION = "2.0.0"; // @Before // @After // public void cleanInstances() throws Exception { // // Clean the environment first to avoid error if a previous tests fails without cleaning the env // ResourceManagement rm = (ResourceManagement) ElementManagementUtility.getERManagement(Resource.NAME); // String all = rm.all(true); // List allResources = ElementMapper.unmarshalList(Resource.class, all); // for(Resource r : allResources) { // try { // ERManagementTest.deleteResource(r); // }catch (ResourceNotFoundException e) { // // A resource could be already deleted deleting another resource giving the propagation constraint // }catch (ODatabaseException e) { // // could occur // } // } // } public static SoftwareFacet getSoftwareFacet() { SoftwareFacet softwareFacet = new SoftwareFacetImpl(); softwareFacet.setGroup(GROUP); softwareFacet.setName(NAME); softwareFacet.setVersion(VERSION); return softwareFacet; } public static void checkSoftwareFacetAssertion(SoftwareFacet softwareFacet, SoftwareFacet gotSoftwareFacet) { Assert.assertTrue(gotSoftwareFacet.getGroup().compareTo(softwareFacet.getGroup()) == 0); Assert.assertTrue(gotSoftwareFacet.getName().compareTo(softwareFacet.getName()) == 0); Assert.assertTrue(gotSoftwareFacet.getVersion().compareTo(softwareFacet.getVersion()) == 0); } public static Configuration instantiateValidConfiguration() throws Exception { Configuration configuration = new ConfigurationImpl(); IdentifierFacet identifierFacet = new IdentifierFacetImpl(); identifierFacet.setType(IdentificationType.STRING); identifierFacet.setValue("MyID"); identifierFacet.setPersistent(false); IsIdentifiedBy isIdentifiedBy = new IsIdentifiedByImpl( configuration, identifierFacet); configuration.addFacet(isIdentifiedBy); return configuration; } public static EService instantiateValidEService() throws Exception { EService eService = new EServiceImpl(); SoftwareFacet softwareFacet = getSoftwareFacet(); IsIdentifiedBy isIdentifiedBy = new IsIdentifiedByImpl(eService, softwareFacet, null); eService.addFacet(isIdentifiedBy); AccessPointFacet accessPointFacet = new AccessPointFacetImpl(); accessPointFacet.setEndpoint(new URI("https://localhost")); accessPointFacet.setEntryName("port1"); eService.addFacet(accessPointFacet); EventFacet eventFacet = new EventFacetImpl(); eventFacet.setDate(Calendar.getInstance().getTime()); eventFacet.setEvent("Created"); eService.addFacet(eventFacet); StateFacet stateFacet = new StateFacetImpl(); stateFacet.setValue("ready"); eService.addFacet(stateFacet); LicenseFacet licenseFacet = new LicenseFacetImpl(); licenseFacet.setName("EUPL"); licenseFacet.setTextURL( new URL("https://joinup.ec.europa.eu/community/etestAddToContextFromDifferentSourceContextupl/og_page/european-union-public-licence-eupl-v11")); eService.addFacet(licenseFacet); return eService; } public static HostingNode instantiateValidHostingNode() throws Exception { HostingNode hostingNode = new HostingNodeImpl(); NetworkingFacet networkingFacet = new NetworkingFacetImpl(); networkingFacet.setIPAddress("146.48.87.183"); networkingFacet.setHostName("pc-frosini.isti.cnr.it"); networkingFacet.setDomainName("isti.cnr.it"); networkingFacet.setMask("255.255.248.0"); networkingFacet.setBroadcastAddress("146.48.87.255"); IsIdentifiedBy isIdentifiedBy = new IsIdentifiedByImpl( hostingNode, networkingFacet); hostingNode.addFacet(isIdentifiedBy); CPUFacet cpuFacet = new CPUFacetImpl(); cpuFacet.setClockSpeed("1 GHz"); cpuFacet.setModel("Opteron"); cpuFacet.setVendor("AMD"); hostingNode.addFacet(cpuFacet); MemoryFacet persistentMemoryFacet = new MemoryFacetImpl(); persistentMemoryFacet.setSize(1024); persistentMemoryFacet.setUnit(MemoryUnit.GB); persistentMemoryFacet.setUsed(512); HasPersistentMemory hasPersistentMemory = new HasPersistentMemoryImpl( hostingNode, persistentMemoryFacet); hostingNode.addFacet(hasPersistentMemory); MemoryFacet volatileMemoryFacet = new MemoryFacetImpl(); volatileMemoryFacet.setSize(8); volatileMemoryFacet.setUnit(MemoryUnit.GB); volatileMemoryFacet.setUsed(4); HasVolatileMemory hasVolatileMemory = new HasVolatileMemoryImpl( hostingNode, volatileMemoryFacet); hostingNode.addFacet(hasVolatileMemory); StateFacet hnStateFacet = new StateFacetImpl(); hnStateFacet.setValue("certified"); hostingNode.addFacet(hnStateFacet); EventFacet hnEventFacet = new EventFacetImpl(); hnEventFacet.setDate(Calendar.getInstance().getTime()); hnEventFacet.setEvent("Created"); hostingNode.addFacet(hnEventFacet); return hostingNode; } public static void checkHeader(IdentifiableElement identifiableElement, IdentifiableElement createdIdentifiableElement) { Header createdHeader = createdIdentifiableElement.getHeader(); Assert.assertTrue(createdHeader!=null); UUID createdUUID = createdHeader.getUUID(); Assert.assertTrue(createdUUID!=null); String createdBy = createdHeader.getCreatedBy(); Assert.assertTrue(createdBy!=null); String lastUpdateBy = createdHeader.getLastUpdateBy(); Assert.assertTrue(lastUpdateBy!=null); Date creationTime = createdHeader.getCreationTime(); Assert.assertTrue(creationTime!=null); Date lastUpdateTime = createdHeader.getLastUpdateTime(); Assert.assertTrue(lastUpdateTime!=null); Assert.assertTrue(lastUpdateTime.equals(creationTime) || lastUpdateTime.equals(lastUpdateTime)); Header header = identifiableElement.getHeader(); if(header!=null) { if(header.getUUID()!=null) { Assert.assertTrue(createdUUID.compareTo(header.getUUID())==0); } if(header.getCreatedBy()!=null) { Assert.assertTrue(createdBy.compareTo(header.getCreatedBy())==0); }else { Assert.assertTrue(createdBy.compareTo(HeaderUtility.getUser())==0); } if(header.getLastUpdateBy()!=null) { Assert.assertTrue(lastUpdateBy.compareTo(header.getLastUpdateBy())==0); }else { Assert.assertTrue(lastUpdateBy.compareTo(HeaderUtility.getUser())==0); } if(header.getLastUpdateTime()!=null) { Assert.assertTrue(lastUpdateTime.after(header.getLastUpdateTime())); } } } public static void checkPropagationConstraint(PropagationConstraint propagationConstraint, PropagationConstraint gotPropagationConstraint) { Assert.assertTrue(propagationConstraint.getAddConstraint()==gotPropagationConstraint.getAddConstraint()); Assert.assertTrue(propagationConstraint.getRemoveConstraint()==gotPropagationConstraint.getRemoveConstraint()); } public static void checkConsistOf(ConsistsOf consistsOf, ConsistsOf gotConsistsOf) { checkHeader(consistsOf, gotConsistsOf); if(consistsOf.getPropagationConstraint()==null) { PropagationConstraint propagationConstraint = gotConsistsOf.getPropagationConstraint(); Assert.assertTrue(propagationConstraint.getAddConstraint()==AddConstraint.propagate); Assert.assertTrue(propagationConstraint.getRemoveConstraint()==RemoveConstraint.cascade); checkPropagationConstraint(propagationConstraint, gotConsistsOf.getPropagationConstraint()); }else { checkPropagationConstraint(consistsOf.getPropagationConstraint(), gotConsistsOf.getPropagationConstraint()); } Map additionalProperties = new HashMap<>(consistsOf.getAdditionalProperties()); additionalProperties.remove(Element.SUPERCLASSES_PROPERTY); Map gotAdditionalProperties = new HashMap<>(gotConsistsOf.getAdditionalProperties()); gotAdditionalProperties.remove(Element.SUPERCLASSES_PROPERTY); Assert.assertTrue(additionalProperties.size()==gotAdditionalProperties.size()); for(String key : additionalProperties.keySet()) { Assert.assertTrue(gotAdditionalProperties.containsKey(key)); Object additionalProperty = additionalProperties.get(key); Object gotAdditionalProperty = gotAdditionalProperties.get(key); Assert.assertTrue(additionalProperty.getClass() == gotAdditionalProperty.getClass()); Assert.assertTrue(additionalProperty.equals(gotAdditionalProperty)); } } public static void checkFacet(Facet facet, Facet gotFacet) throws Exception { checkHeader(facet, gotFacet); Class clz = facet.getClass(); Class gotClz = gotFacet.getClass(); Assert.assertTrue(clz==gotClz); if(clz == SoftwareFacet.class) { checkSoftwareFacetAssertion((SoftwareFacet) facet, (SoftwareFacet) gotFacet); } } protected static void checkResource(R resource, R gotResource) throws Exception { Assert.assertTrue(resource.getClass() == gotResource.getClass()); checkHeader(resource, gotResource); List> resourceConsistsOf = resource.getConsistsOf(); List> gotResourceConsistsOf = gotResource.getConsistsOf(); Assert.assertTrue(resourceConsistsOf.size() == gotResourceConsistsOf.size()); for(ConsistsOf consistsOf : resourceConsistsOf) { @SuppressWarnings("unchecked") ConsistsOf gotConsistsOf = (ConsistsOf) gotResource.getConsistsOf(consistsOf.getClass(), consistsOf.getTarget().getClass()).get(0); checkConsistOf(consistsOf, gotConsistsOf); Facet facet = consistsOf.getTarget(); Facet gotFacet = gotConsistsOf.getTarget(); checkFacet(facet, gotFacet); } } public static ResourceManagement getResourceManagement(R r) throws Exception { ResourceManagement resourceManagement = new ResourceManagement(); resourceManagement.setElementType(Utility.getTypeName(r)); resourceManagement.setJson(ElementMapper.marshal(r)); if(r.getHeader()!=null && r.getHeader().getUUID()!=null) { resourceManagement.setUUID(r.getHeader().getUUID()); } return resourceManagement; } public static IsRelatedToManagement getIsRelatedToManagement(IsRelatedTo isRelatedTo) throws Exception { IsRelatedToManagement isRelatedToManagement = new IsRelatedToManagement(); isRelatedToManagement.setElementType(Utility.getTypeName(isRelatedTo)); isRelatedToManagement.setJson(ElementMapper.marshal(isRelatedTo)); if(isRelatedTo.getHeader()!=null && isRelatedTo.getHeader().getUUID()!=null) { isRelatedToManagement.setUUID(isRelatedTo.getHeader().getUUID()); } return isRelatedToManagement; } public static R createResource(R r) throws Exception { ResourceManagement resourceManagement = getResourceManagement(r); String json = resourceManagement.create(); @SuppressWarnings("unchecked") R createdR = (R) ElementMapper.unmarshal(r.getClass(), json); checkResource(r, createdR); return createdR; } public static EService createEService() throws Exception { EService eService = ERManagementTest.instantiateValidEService(); return createResource(eService); } public static HostingNode createHostingNode() throws Exception { return createHostingNode(null); } public static HostingNode createHostingNode(EService eService) throws Exception { return createHostingNode(eService, RemoveConstraint.cascade); } public static HostingNode createHostingNode(EService eService, RemoveConstraint removeConstraint) throws Exception { HostingNode hostingNode = ERManagementTest.instantiateValidHostingNode(); if(eService!=null) { PropagationConstraint propagationConstraint = new PropagationConstraintImpl(); propagationConstraint.setRemoveConstraint(removeConstraint); Activates activates = new ActivatesImpl(hostingNode, eService, propagationConstraint); hostingNode.attachResource(activates); } return createResource(hostingNode); } public static Configuration createConfiguration() throws Exception { Configuration configuration = ERManagementTest.instantiateValidConfiguration(); return createResource(configuration); } public static Map createHostingNodeAndEService() throws Exception { Map map = new HashMap<>(); EService eService = createEService(); map.put(EService.NAME, eService); HostingNode hostingNode = createHostingNode(eService); map.put(HostingNode.NAME, hostingNode); return map; } public static void deleteResource(R r) throws Exception { if(r!=null) { ResourceManagement resourceManagement = getResourceManagement(r); resourceManagement.delete(); } } @Test public void testCreateEService() throws Exception { EService eService = null; try { eService = createEService(); }finally { deleteResource(eService); } } /* @Test public void testReadResource() throws Exception { ResourceManagement resourceManagement = new ResourceManagement(); resourceManagement.setUUID(UUID.fromString("26da57ee-33bd-4c4b-8aef-9206b61c329e")); String read = resourceManagement.read().toString(); logger.debug(read); } */ /* @Test public void testDeleteResource() throws Exception { ResourceManagement resourceManagement = new ResourceManagement(); resourceManagement.setUUID(UUID.fromString("64635295-7ced-4931-a55f-40fc8199b280")); boolean deleted = resourceManagement.delete(); Assert.assertTrue(deleted); } */ @Test public void testCreateHostingNode() throws Exception { HostingNode hostingNode = null; try { hostingNode = createHostingNode(); }finally { deleteResource(hostingNode); } } @Test public void testCreateHostingNodeAndEService() throws Exception { Map map = ERManagementTest.createHostingNodeAndEService(); deleteResource(map.get(HostingNode.NAME)); } @Test public void testCreateReadUpdateDeleteFacet() throws Exception { EService eService = createEService(); try { CPUFacet cpuFacet = new CPUFacetImpl(); cpuFacet.setClockSpeed("1 GHz"); cpuFacet.setModel("Opteron"); cpuFacet.setVendor("AMD"); ConsistsOf consistsOf = new ConsistsOfImpl(eService, cpuFacet); ConsistsOfManagement consistsOfManagement = new ConsistsOfManagement(); consistsOfManagement.setElementType(Utility.getTypeName(consistsOf)); consistsOfManagement.setJson(ElementMapper.marshal(consistsOf)); String createdConsistsOfString = consistsOfManagement.create(); @SuppressWarnings("unchecked") ConsistsOf createdConsistsOf = ElementMapper.unmarshal(ConsistsOf.class, createdConsistsOfString); CPUFacet createdCpuFacet = createdConsistsOf.getTarget(); Assert.assertTrue(cpuFacet.getClockSpeed().compareTo(createdCpuFacet.getClockSpeed()) == 0); Assert.assertTrue(cpuFacet.getModel().compareTo(createdCpuFacet.getModel()) == 0); Assert.assertTrue(cpuFacet.getVendor().compareTo(createdCpuFacet.getVendor()) == 0); UUID uuid = createdCpuFacet.getHeader().getUUID(); FacetManagement facetManagement = new FacetManagement(); facetManagement.setElementType(Utility.getTypeName(createdCpuFacet)); facetManagement.setUUID(uuid); String readJson = facetManagement.read().toString(); CPUFacet readCpuFacet = ElementMapper.unmarshal(CPUFacet.class, readJson); logger.debug("Read:\nRaw Json : {}\nUnmarshalled : {}", readJson, readCpuFacet); Assert.assertTrue(cpuFacet.getClockSpeed().compareTo(readCpuFacet.getClockSpeed()) == 0); Assert.assertTrue(cpuFacet.getModel().compareTo(readCpuFacet.getModel()) == 0); Assert.assertTrue(cpuFacet.getVendor().compareTo(readCpuFacet.getVendor()) == 0); Assert.assertTrue(uuid.compareTo(readCpuFacet.getHeader().getUUID()) == 0); String newVendor = "Intel"; String newClockSpeed = "2 GHz"; readCpuFacet.setVendor(newVendor); readCpuFacet.setClockSpeed(newClockSpeed); String additionPropertyKey = "My"; String additionPropertyValue = "Test"; readCpuFacet.setAdditionalProperty(additionPropertyKey, additionPropertyValue); facetManagement = new FacetManagement(); facetManagement.setElementType(Utility.getTypeName(readCpuFacet)); facetManagement.setUUID(uuid); facetManagement.setJson(ElementMapper.marshal(readCpuFacet)); String updatedJson = facetManagement.update(); CPUFacet updatedCpuFacet = ElementMapper.unmarshal(CPUFacet.class, updatedJson); logger.debug("Updated:\nRaw Json : {}\nUnmarshalled : {}", updatedJson, updatedCpuFacet); Assert.assertTrue(updatedCpuFacet.getClockSpeed().compareTo(newClockSpeed) == 0); Assert.assertTrue(readCpuFacet.getModel().compareTo(updatedCpuFacet.getModel()) == 0); Assert.assertTrue(updatedCpuFacet.getVendor().compareTo(newVendor) == 0); Assert.assertTrue(((String) updatedCpuFacet.getAdditionalProperty(additionPropertyKey)) .compareTo((String) readCpuFacet.getAdditionalProperty(additionPropertyKey)) == 0); Assert.assertTrue(uuid.compareTo(updatedCpuFacet.getHeader().getUUID()) == 0); String user = SecretManagerProvider.instance.get().getOwner().getId(); Assert.assertTrue(updatedCpuFacet.getHeader().getLastUpdateBy().compareTo(user) == 0); facetManagement = new FacetManagement(); facetManagement.setElementType(Utility.getTypeName(updatedCpuFacet)); facetManagement.setUUID(uuid); String readUpdatedJson = facetManagement.read().toString(); CPUFacet readUpdatedCpuFacet = ElementMapper.unmarshal(CPUFacet.class, readUpdatedJson); logger.debug("Read Updated:\nRaw Json : {}\nUnmarshalled : {}", readUpdatedJson, readUpdatedCpuFacet); Assert.assertTrue(updatedCpuFacet.getClockSpeed().compareTo(readUpdatedCpuFacet.getClockSpeed()) == 0); Assert.assertTrue(updatedCpuFacet.getModel().compareTo(readUpdatedCpuFacet.getModel()) == 0); Assert.assertTrue(updatedCpuFacet.getVendor().compareTo(readUpdatedCpuFacet.getVendor()) == 0); Assert.assertTrue(((String) updatedCpuFacet.getAdditionalProperty(additionPropertyKey)) .compareTo((String) readUpdatedCpuFacet.getAdditionalProperty(additionPropertyKey)) == 0); Assert.assertTrue(uuid.compareTo(updatedCpuFacet.getHeader().getUUID()) == 0); facetManagement = new FacetManagement(); facetManagement.setElementType(Utility.getTypeName(readCpuFacet)); facetManagement.setUUID(uuid); facetManagement.delete(); } finally { deleteResource(eService); } } @Test public void testCreatePropertyTypeNotInSchema() throws Exception { /* * A facet cannot be created per se. Going to create a Configuration which does * not impose any particular constraint except the IdentifierFact */ Configuration configuration = instantiateValidConfiguration(); AccessPointFacet accessPointFacet = new AccessPointFacetImpl(); accessPointFacet.setEndpoint(new URI("https://localhost")); accessPointFacet.setEntryName("port1"); ValueSchema authorization = new ValueSchemaImpl(); authorization.setValue("pwd"); URI uri = new URI("https://www.gcube-system.org"); authorization.setSchema(uri); accessPointFacet.setAuthorization(authorization); String additionlaPropertyKey = "Test"; String additionlaPropertyValue = "MyTest"; accessPointFacet.setAdditionalProperty(additionlaPropertyKey, additionlaPropertyValue); Encrypted encrypted = new EncryptedImpl(); String plainValue = "Encrypted"; String encryptedValue = EncryptedImpl.encrypt(plainValue); encrypted.setEncryptedValue(encryptedValue); String encryptedKey = "Enc"; accessPointFacet.setAdditionalProperty(encryptedKey, encrypted); configuration.addFacet(accessPointFacet); String marshalled = ElementMapper.marshal(configuration); logger.debug(marshalled); Configuration createdConfiguration = createResource(configuration); AccessPointFacet apf = configuration.getFacets(AccessPointFacet.class).get(0); Assert.assertTrue(apf.getAuthorization() instanceof ValueSchema); Assert.assertTrue(apf.getAdditionalProperty(encryptedKey) instanceof Encrypted); Encrypted enc = (Encrypted) apf.getAdditionalProperty(encryptedKey); String encValue = enc.getEncryptedValue(); Assert.assertTrue(encValue.compareTo(encryptedValue) == 0); String decryptedValue = EncryptedImpl.decrypt(encValue); Assert.assertTrue(decryptedValue.compareTo(plainValue) == 0); Assert.assertTrue(((String) apf.getAdditionalProperty(additionlaPropertyKey)).compareTo(additionlaPropertyValue) == 0); deleteResource(createdConfiguration); } @Test public void testUpdateFacetValue() throws Exception { EService eService =null; try { eService = createEService(); final String newVersion = "1.2.0"; eService.getFacets(SoftwareFacet.class).get(0).setVersion(newVersion); ResourceManagement resourceManagement = getResourceManagement(eService); String json = resourceManagement.update(); EService updatedEService = ElementMapper.unmarshal(EService.class, json); checkResource(eService, updatedEService); SoftwareFacet softwareFacet = updatedEService.getFacets(SoftwareFacet.class).get(0); Assert.assertTrue(softwareFacet.getVersion().compareTo(newVersion) == 0); }finally { deleteResource(eService); } } // public static final String TEST_RESOURCE = "test-resource.json"; // // // @Test // public void testUpdateResourceFromFile() // throws JsonParseException, JsonMappingException, IOException, ResourceRegistryException { // File file = new File("src/test/resources/" + TEST_RESOURCE); // // logger.debug("{}", file.getAbsolutePath()); // // FileInputStream fileInputStream = new FileInputStream(file); // EService eService = ElementMapper.unmarshal(EService.class, fileInputStream); // // ResourceManagement resourceManagement = new ResourceManagement(); // resourceManagement.setUUID(eService.getHeader().getUUID()); // resourceManagement.setJson(ElementMapper.marshal(eService)); // // resourceManagement.update(); // // } @Test public void getAllHostingNode() throws ResourceRegistryException { ResourceManagement resourceManagement = new ResourceManagement(); resourceManagement.setElementType(HostingNode.NAME); String ret = resourceManagement.all(true); logger.debug("{}", ret); } }