package glaze.client.handlers;
import glaze.GlazeException;
import glaze.client.handlers.MapperResponseHandler;
import glaze.test.data.Bar;
import java.io.IOException;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicStatusLine;
import org.mockito.Mockito;
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestMapperResponseHandler
{
@Test
public void handle() throws IOException
{
HttpResponse response = Mockito.mock(HttpResponse.class);
Mockito.when(response.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, 200, "OK"));
Mockito.when(response.getEntity()).thenReturn(new StringEntity("{\"hi\":1}", ContentType.TEXT_PLAIN));
Mockito.when(response.getFirstHeader(HttpHeaders.CONTENT_TYPE)).thenReturn(new BasicHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType()));
MapperResponseHandler<Bar> mrh = new MapperResponseHandler<Bar>(Bar.class);
Assert.assertFalse(mrh.isOverriden());
Assert.assertEquals(mrh.handleResponse(response).hi, 1);
}
@Test(expectedExceptions = GlazeException.class, expectedExceptionsMessageRegExp = "Unable to resolve mapper for type 'text/plain' in namespace 'default'")
public void handleDefaultMime() throws IOException
{
HttpResponse response = Mockito.mock(HttpResponse.class);
Mockito.when(response.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, 200, "OK"));
Mockito.when(response.getEntity()).thenReturn(new StringEntity("{\"hi\":1}"));
MapperResponseHandler<Bar> mrh = new MapperResponseHandler<Bar>(Bar.class);
Assert.assertFalse(mrh.isOverriden());
Assert.assertEquals(mrh.handleResponse(response).hi, 1);
}
@Test(expectedExceptions = GlazeException.class)
public void handleError() throws IOException
{
HttpResponse response = Mockito.mock(HttpResponse.class);
Mockito.when(response.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, 401, "Unauth"));
MapperResponseHandler<Bar> mrh = new MapperResponseHandler<Bar>(Bar.class);
mrh.handleResponse(response);
}
@Test
public void handleOverride() throws IOException
{
HttpResponse response = Mockito.mock(HttpResponse.class);
Mockito.when(response.getStatusLine()).thenReturn(new BasicStatusLine(HttpVersion.HTTP_1_1, 200, "OK"));
Mockito.when(response.getEntity()).thenReturn(new StringEntity("{\"hi\":1}", ContentType.TEXT_PLAIN));
Mockito.when(response.getFirstHeader(HttpHeaders.CONTENT_TYPE)).thenReturn(new BasicHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_XML.getMimeType()));
MapperResponseHandler<Bar> mrh = new MapperResponseHandler<Bar>(Bar.class, ContentType.APPLICATION_JSON);
Assert.assertTrue(mrh.isOverriden());
Assert.assertEquals(mrh.handleResponse(response).hi, 1);
}
}