package org.jembi.openhim.transformers;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.HashMap;
import java.util.Map;
import org.jembi.openhim.RestfulHttpResponse;
import org.jembi.openhim.transformers.HttpResponseToRestfulHttpResponseTransformer;
import org.junit.Test;
import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.api.transport.PropertyScope;
public class HttpResponseToRestfulHttpResponseTransformerTest {
private MuleMessage msg;
private Map<String, String> sampleHttpHeaders;
public HttpResponseToRestfulHttpResponseTransformerTest() {
this.sampleHttpHeaders = new HashMap();
this.sampleHttpHeaders.put("TEST1", "VAL1");
this.sampleHttpHeaders.put("Content-Type", "application/xml");
}
private void setupMocks(String httpStatus, String body, String uuid, Map<String, String> httpHeaders) throws Exception {
msg = mock(MuleMessage.class);
when(msg.getProperty("http.status", PropertyScope.INBOUND)).thenReturn(httpStatus);
when(msg.getProperty("http.headers", PropertyScope.INBOUND)).thenReturn(httpHeaders);
when(msg.getPayloadAsString()).thenReturn(body);
when(msg.getProperty("uuid", PropertyScope.SESSION)).thenReturn(uuid);
}
/**
* Test transformMessage method with valid data
*/
@Test
public void testTransformMessageMuleMessageString_validData() throws Exception {
excecuteTestCase("201", "Test Response", "d72ea800-beea-11e2-9e96-0800200c9a66", sampleHttpHeaders);
}
/**
* Test transformMessage method with null Response
*/
@Test
public void testTransformMessageMuleMessageString_nullResponse() throws Exception {
excecuteTestCase("500", null, "d72ea800-beea-11e2-9e96-0800200c9a66", sampleHttpHeaders);
}
/**
* Test transformMessage method with null uuid
*/
@Test
public void testTransformMessageMuleMessageString_nullUUID() throws Exception {
excecuteTestCase("200", "Test Response", null, sampleHttpHeaders);
}
/**
* Test transformMessage method with null status code
*/
@Test
public void testTransformMessageMuleMessageString_nullStatusCode() throws Exception {
try {
excecuteTestCase(null, "Test Response", "d72ea800-beea-11e2-9e96-0800200c9a66", sampleHttpHeaders);
} catch (TransformerException e) {
// this is supposed to happen
}
}
private void excecuteTestCase(String httpStatus, String body, String uuid, Map<String, String> httpHeaders)
throws Exception, TransformerException {
setupMocks(httpStatus, body, uuid, httpHeaders);
HttpResponseToRestfulHttpResponseTransformer trans = new HttpResponseToRestfulHttpResponseTransformer();
RestfulHttpResponse res = (RestfulHttpResponse) trans.transformMessage(msg, "UTF-8");
assertEquals(Integer.parseInt(httpStatus), res.getHttpStatus());
assertEquals(body, res.getBody());
assertEquals(uuid, res.getUuid());
assertEquals(httpHeaders, res.getHttpHeaders());
}
}