summaryrefslogtreecommitdiffstats
path: root/quantum-model/src/test/java/com/woorea/openstack/quantum/model/PortTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'quantum-model/src/test/java/com/woorea/openstack/quantum/model/PortTest.java')
-rw-r--r--quantum-model/src/test/java/com/woorea/openstack/quantum/model/PortTest.java155
1 files changed, 155 insertions, 0 deletions
diff --git a/quantum-model/src/test/java/com/woorea/openstack/quantum/model/PortTest.java b/quantum-model/src/test/java/com/woorea/openstack/quantum/model/PortTest.java
new file mode 100644
index 0000000..bce5044
--- /dev/null
+++ b/quantum-model/src/test/java/com/woorea/openstack/quantum/model/PortTest.java
@@ -0,0 +1,155 @@
+package com.woorea.openstack.quantum.model;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.hasItem;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertThat;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
+import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
+import org.hamcrest.CustomMatcher;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.woorea.openstack.quantum.model.Port.Ip;
+
+public class PortTest {
+
+ private static final String TENANT_ID = "tenantId";
+
+ private static final String STATUS = "status";
+
+ private static final String NETWORK_ID = "networkId";
+
+ private static final String NAME = "name";
+
+ private static final String MAC_ADDRESS = "macAddress";
+
+ private static final String DEVICE_OWNER = "deviceOwner";
+
+ private static final String DEVICE_ID = "deviceId";
+
+ private static final String IP_SUBNET_ID = "ipSubnetId";
+
+ private static final String IP_ADDRESS = "10.0.0.1";
+
+ private static final boolean ADMIN_STATE_UP = true;
+
+ private static final String SEC_GROUP = "secGroup";
+
+ private static final String ID = "testId";
+
+ /**
+ * JSON with read only attributes.
+ */
+ private static final String PORT_JSON = "{"
+ + " \"port\" : {"
+ + " \"id\" : \"" + ID + "\","
+ + " \"status\" : \"" + STATUS + "\""
+ + " }"
+ + "}";
+
+ private ObjectMapper objectMapper;
+
+ private String serializedPort;
+
+ @Before
+ public void setUp() throws Exception {
+ objectMapper = initializeObjectMapper();
+ }
+
+ public static ObjectMapper initializeObjectMapper() {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.setSerializationInclusion(Inclusion.NON_NULL)
+ .enable(SerializationConfig.Feature.INDENT_OUTPUT)
+ .enable(SerializationConfig.Feature.WRAP_ROOT_VALUE)
+ .enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE)
+ .enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
+ return objectMapper;
+ }
+
+ @Test
+ public void testSerialization() throws Exception {
+ Port port = new Port();
+ port.setId(ID);
+ port.setAdminStateUp(ADMIN_STATE_UP);
+ port.setSecurityGroups(Arrays.asList(SEC_GROUP));
+ port.setDeviceId(DEVICE_ID);
+ port.setDeviceOwner(DEVICE_OWNER);
+ port.setMacAddress(MAC_ADDRESS);
+ port.setName(NAME);
+ port.setNetworkId(NETWORK_ID);
+ port.setStatus(STATUS);
+ port.setTenantId(TENANT_ID);
+
+ List<Ip> ips = new ArrayList<Port.Ip>();
+ Ip ip = new Ip();
+ ip.setAddress(IP_ADDRESS);
+ ip.setSubnetId(IP_SUBNET_ID);
+ ips.add(ip);
+ port.setList(ips);
+
+ serializedPort = objectMapper.writeValueAsString(port);
+ assertThat(serializedPort, not(containsString(ID)));
+ assertThat(serializedPort, not(containsString(STATUS)));
+ assertThat(serializedPort, containsString("\"admin_state_up\" : " + ADMIN_STATE_UP));
+ assertThat(serializedPort, containsString(SEC_GROUP));
+ assertThat(serializedPort, containsString(IP_ADDRESS));
+ assertThat(serializedPort, containsString(DEVICE_ID));
+ assertThat(serializedPort, containsString(DEVICE_OWNER));
+ assertThat(serializedPort, containsString(MAC_ADDRESS));
+ assertThat(serializedPort, containsString(NAME));
+ assertThat(serializedPort, containsString(NETWORK_ID));
+ assertThat(serializedPort, containsString(TENANT_ID));
+ }
+
+ @Test
+ public void testSerializationEmpty() throws Exception {
+ Port port = new Port();
+ serializedPort = objectMapper.writeValueAsString(port);
+
+ assertThat(serializedPort, containsString("\"port\" : { }"));
+ }
+
+ @Test
+ public void testDeserializationReadOnlyFields() throws Exception {
+ Port port = objectMapper.readValue(PORT_JSON, Port.class);
+
+ assertThat(port.getId(), is(equalTo(ID)));
+ assertThat(port.getStatus(), is(equalTo(STATUS)));
+ }
+
+ @Test
+ public void testDeserializationAfterSerialization() throws Exception {
+ testSerialization();
+ Port port = objectMapper.readValue(serializedPort, Port.class);
+
+ assertThat(port.getAdminStateUp(), is(equalTo(ADMIN_STATE_UP)));
+ assertThat(port.getDeviceId(), is(equalTo(DEVICE_ID)));
+ assertThat(port.getDeviceOwner(), is(equalTo(DEVICE_OWNER)));
+ assertThat(port.getMacAddress(), is(equalTo(MAC_ADDRESS)));
+ assertThat(port.getName(), is(equalTo(NAME)));
+ assertThat(port.getNetworkId(), is(equalTo(NETWORK_ID)));
+ assertThat(port.getTenantId(), is(equalTo(TENANT_ID)));
+
+ assertThat(port.getSecurityGroups(), hasItem(equalTo(SEC_GROUP)));
+ assertThat(port.getList(), hasItem(new CustomMatcher<Ip>(
+ "an Ip object with address " + IP_ADDRESS + " and subnet id " + IP_SUBNET_ID) {
+
+ @Override
+ public boolean matches(Object ip) {
+ return ip instanceof Ip
+ && IP_ADDRESS.equals(((Ip) ip).getAddress())
+ && IP_SUBNET_ID.equals(((Ip) ip).getSubnetId());
+ }
+ }));
+ }
+}