package com.intel.mtwilson.as.rest.data; import com.intel.mountwilson.as.common.ASException; import com.intel.mountwilson.as.common.ValidationException; import com.intel.mtwilson.i18n.ErrorCode; import com.intel.mtwilson.datatypes.OpenStackHostTrustLevelQuery; import com.intel.mtwilson.model.*; //import static com.jayway.restassured.path.json.JsonPath.with; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; //import org.codehaus.jackson.JsonGenerationException; //import org.codehaus.jackson.map.JsonMappingException; //import org.codehaus.jackson.map.ObjectMapper; import static org.junit.Assert.*; import org.junit.Test; /** * These tests verify that the data model serializes and de-serializes properly. * * @author jbuhacoff */ public class HostTrustInputTest { private static ObjectMapper mapper = new ObjectMapper(); /** * Sample serialized object. * {"count":2,"pcrmask":"some pcr mask","hosts":["test-host-1","ESX host 2"]} * * @throws JsonGenerationException * @throws JsonMappingException * @throws IOException */ @Test public void writeJSON() throws JsonGenerationException, JsonMappingException, IOException { OpenStackHostTrustLevelQuery test = new OpenStackHostTrustLevelQuery(); test.count = 2; test.pcrMask = "some pcr mask"; test.hosts = new Hostname[] { new Hostname("test-host-1"), new Hostname("ESX host 2") }; ByteArrayOutputStream stream = new ByteArrayOutputStream(); mapper.writeValue(stream, test); String json = stream.toString(); System.out.println(json); /* assertEquals(2, with(json).getInt("count")); with(json).getString("pcrmask").equals("userName"); Arrays.asList(with(json).getList("hosts")).containsAll(Arrays.asList(new String[] { "test-host-1", "ESX host 2" })); */ } /** * Sample serialized object. * {"count":2,"pcrmask":"some pcr mask","hosts":["test-host-1","ESX host 2"]} * * @throws JsonGenerationException * @throws JsonMappingException * @throws IOException */ @Test public void readJSON() throws JsonGenerationException, JsonMappingException, IOException { InputStream in = getClass().getResourceAsStream("HostTrustInputTest.sample.json"); try { OpenStackHostTrustLevelQuery obj = mapper.readValue(in, OpenStackHostTrustLevelQuery.class); assertEquals(2, obj.count); assertEquals("some pcr mask",obj.pcrMask); assertEquals("test-host-1",obj.hosts[0].toString()); assertEquals("ESX host 2",obj.hosts[1].toString()); } finally { if( in != null ) in.close(); } } @Test(expected=ValidationException.class) public void nullHostnameThrowsException() { // datatype.Hostname Hostname h = new Hostname(null); System.err.println(h.toString()); } @Test(expected=ValidationException.class) public void emptyHostnameThrowsException() { // datatype.Hostname Hostname h = new Hostname(""); System.err.println(h.toString()); } @Test(expected=ValidationException.class) public void invalidHostnameThrowsException() { // datatype.Hostname Hostname h = new Hostname("invalid, hostname has comma in it"); System.err.println(h.toString()); } @Test(expected=ASException.class) public void convertIllegalArgumentExceptionToASException() { try { Hostname h = new Hostname(""); System.err.println(h.toString()); } catch(IllegalArgumentException e) { throw new ASException(ErrorCode.AS_MISSING_INPUT, e.getMessage()); } } }