package org.rest.rapa;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import org.rest.rapa.resource.ResourceImpl;
public class GetResourceRestClientTest extends AbstractHttpMethodTest {
@Before
public void before() {
super.before();
}
@Test
public void shouldGetRequestedResource() throws Exception {
when(httpMethodExecutor.get("http://test.com/1", emptyRequestHeaders)).thenReturn(
"<test>1</test>");
when(formatHandler.deserialize("<test>1</test>", ResourceImpl.class))
.thenReturn(resource);
client.getById(1, ResourceImpl.class);
}
@Test
public void shouldHttpGetResource() throws Exception {
client.getById(1, ResourceImpl.class);
verify(httpMethodExecutor).get("http://test.com/1", emptyRequestHeaders);
}
@Test
public void shouldDeserializeResource() throws Exception {
when(httpMethodExecutor.get("http://test.com/1", emptyRequestHeaders)).thenReturn(
"<test>1</test>");
client.getById(1, ResourceImpl.class);
verify(formatHandler).deserialize("<test>1</test>", ResourceImpl.class);
}
@Test(expected = RestClientException.class)
public void shouldFailToGetResourceIfUnableToDeSerializeTheResource()
throws Exception {
when(httpMethodExecutor.get("http://test.com/1", emptyRequestHeaders)).thenReturn(
"<test>1</test>");
doThrow(new Exception()).when(formatHandler).deserialize(
"<test>1</test>", ResourceImpl.class);
client.getById(1, ResourceImpl.class);
}
@Test(expected = RestClientException.class)
public void shouldFailToGetIfUnableToHttpGetRemoteResource()
throws Exception {
doThrow(new IOException()).when(httpMethodExecutor).get(
"http://test.com/1", emptyRequestHeaders);
client.getById(1, ResourceImpl.class);
}
}