package org.opennaas.core.resources.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.StringReader; import java.io.StringWriter; import java.util.ArrayList; import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import org.opennaas.core.resources.IResourceIdentifier; import org.opennaas.core.resources.ResourceIdentifier; import org.opennaas.core.resources.descriptor.CapabilityDescriptor; import org.opennaas.core.resources.descriptor.ResourceDescriptor; import org.opennaas.core.resources.helpers.ResourceHelper; public class ResourceIdentifierAndDescriptorTest { private IResourceIdentifier resourceIdentifier = null; private ResourceDescriptor resourceDescriptor = null; @Before public void setUp() { resourceIdentifier = new ResourceIdentifier("Simple"); CapabilityDescriptor queueCapabDesc = ResourceHelper.newCapabilityDescriptor("junos", "10.10", "queue", "uri"); CapabilityDescriptor chassisCapabDesc = ResourceHelper.newCapabilityDescriptor("junos", "10.10", "chassis", "uri"); List<CapabilityDescriptor> capabilityDescriptors = new ArrayList<CapabilityDescriptor>(); capabilityDescriptors.add(chassisCapabDesc); capabilityDescriptors.add(queueCapabDesc); resourceDescriptor = ResourceHelper.newResourceDescriptor(capabilityDescriptors, "router", "http://example.org/resources/testRouter", "testRouter"); } @Test public void testIsURIWellFormed() { Assert.assertNotNull(resourceIdentifier.getURI()); } @Test public void testGetTypeIsNotNull() { Assert.assertNotNull(resourceIdentifier.getType()); } @Test public void testMarshalling() throws Exception { JAXBContext context = JAXBContext.newInstance(ResourceIdentifier.class); // using jaxb.index file Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.marshal(resourceIdentifier, System.out); } @Test public void testMarshallingUnMarshalling() throws Exception { JAXBContext context = JAXBContext.newInstance(ResourceIdentifier.class); // using jaxb.index file StringWriter writer = new StringWriter(); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.marshal(resourceIdentifier, writer); Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader reader = new StringReader(writer.toString()); ResourceIdentifier loaded = (ResourceIdentifier) unmarshaller.unmarshal(reader); assertEquals(resourceIdentifier, loaded); } @Test public void testMarshallingUnMarshallingDescriptor() throws JAXBException { JAXBContext context = JAXBContext.newInstance(ResourceDescriptor.class); // using jaxb.index file StringWriter writer = new StringWriter(); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.marshal(resourceDescriptor, writer); Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader reader = new StringReader(writer.toString()); ResourceDescriptor loaded = (ResourceDescriptor) unmarshaller.unmarshal(reader); assertEquals(resourceDescriptor.getId(), loaded.getId()); assertEquals(resourceDescriptor.getInformation(), loaded.getInformation()); for (String key : resourceDescriptor.getProperties().keySet()) { assertEquals(resourceDescriptor.getProperties().get(key), loaded.getProperties().get(key)); } for (String key : loaded.getProperties().keySet()) { assertTrue(resourceDescriptor.getProperties().containsKey(key)); } assertEquals(resourceDescriptor.getCapabilityDescriptors().size(), loaded.getCapabilityDescriptors().size()); for (CapabilityDescriptor capabDesc : resourceDescriptor.getCapabilityDescriptors()) { assertTrue(loaded.getCapabilityDescriptors().contains(capabDesc)); } } }