import de.juplo.facebook.errors.GraphApiException.Type;
+import okhttp3.mockwebserver.MockResponse;
+import okhttp3.mockwebserver.MockWebServer;
+import org.junit.After;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Before;
private static final Logger LOG =
LoggerFactory.getLogger(GraphApiErrorResponseErrorHandlerIntegrationTest.class);
+ private MockWebServer server;
+ private String uri;
private RestTemplate clientTemplate;
- private MockClientHttpRequestFactory requestFactory;
+
+
+ @Before
+ public void setup()
+ {
+ server = new MockWebServer();
+ uri = server.url("/egal").toString();
+ clientTemplate = new RestTemplate();
+ clientTemplate.setErrorHandler(new GraphApiErrorResponseErrorHandler(clientTemplate.getErrorHandler()));
+ }
+
+ @After
+ public void shutdown() throws Exception
+ {
+ this.server.shutdown();
+ }
@Test
public void testNoError()
{
- requestFactory.setBody("{ \"message\": \"Hello World!\" }");
-
+ //server
+ // .enqueue(new MockResponse()
+ // .setResponseCode(HttpStatus.CONTINUE.value())
+ // .setHeader("Content-Type", "application/json")
+ // .setBody("Hallo Welt!"));
+ //
+ //try
+ //{
+ // String result = clientTemplate.getForObject(uri, String.class);
+ // assertEquals("Hallo Welt!", result);
+ //}
+ //catch(Exception e)
+ //{
+ // LOG.debug("{}", e.toString());
+ // fail("Unexpected error: " + e);
+ //}
+
+
+ server
+ .enqueue(new MockResponse()
+ .setResponseCode(HttpStatus.OK.value())
+ .setHeader("Content-Type", "text/plain")
+ .setBody("Hallo Welt!"));
- requestFactory.setStatus(HttpStatus.CONTINUE);
try
{
- clientTemplate.getForObject("ANY", SOME.class);
+ String result = clientTemplate.getForObject(uri, String.class);
+ assertEquals("Hallo Welt!", result);
}
catch(Exception e)
{
fail("Unexpected error: " + e);
}
- requestFactory.setStatus(HttpStatus.OK);
- try
- {
- clientTemplate.getForObject("ANY", SOME.class);
- }
- catch(Exception e)
- {
- LOG.debug("{}", e.toString());
- fail("Unexpected error: " + e);
- }
- requestFactory.setStatus(HttpStatus.TEMPORARY_REDIRECT);
- try
- {
- clientTemplate.getForObject("ANY", SOME.class);
- }
- catch(Exception e)
- {
- LOG.debug("{}", e.toString());
- fail("Unexpected error: " + e);
- }
+ server
+ .enqueue(new MockResponse()
+ .setResponseCode(HttpStatus.TEMPORARY_REDIRECT.value())
+ .setHeader("Content-Type", "text/plain")
+ .setBody("Hallo Welt!"));
- requestFactory.setStatus(HttpStatus.BAD_REQUEST);
try
{
- clientTemplate.getForObject("ANY", SOME.class);
- fail("The parent handler should have raised an exception!");
- }
- catch(HttpClientErrorException e)
- {
- LOG.debug("Expexted error: {}", e.toString());
+ String result = clientTemplate.getForObject(uri, String.class);
+ assertEquals("Hallo Welt!", result);
}
catch(Exception e)
{
fail("Unexpected error: " + e);
}
- requestFactory.setStatus(HttpStatus.INTERNAL_SERVER_ERROR);
+
+ server
+ .enqueue(new MockResponse()
+ .setResponseCode(HttpStatus.INTERNAL_SERVER_ERROR.value())
+ .setHeader("Content-Type", "text/plain")
+ .setBody("Hallo Welt!"));
+
try
{
- clientTemplate.getForObject("ANY", SOME.class);
+ clientTemplate.getForObject(uri, String.class);
fail("The parent handler should have raised an exception!");
}
catch(HttpServerErrorException e)
@Test
public void testValidError()
{
- requestFactory.setBody(
- "{\n" +
- " \"error\":\n" +
- " {\n" +
- " \"message\": \"(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.\",\n" +
- " \"type\": \"OAuthException\",\n" +
- " \"code\": 613\n" +
- " }\n" +
- "}");
+ server
+ .enqueue(new MockResponse()
+ .setResponseCode(HttpStatus.BAD_REQUEST.value())
+ .setHeader("Content-Type", "application/json")
+ .setBody(
+ "{\n" +
+ " \"error\":\n" +
+ " {\n" +
+ " \"message\": \"(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.\",\n" +
+ " \"type\": \"OAuthException\",\n" +
+ " \"code\": 613\n" +
+ " }\n" +
+ "}"));
try
{
- clientTemplate.getForObject("ANY", SOME.class);
+ clientTemplate.getForObject(uri, String.class);
fail("The expected exception was not thrown");
}
catch(RateLimitExceededException e)
@Test
public void testUnmappedError()
{
- requestFactory.setBody(
- "{\n" +
- " \"error\":\n" +
- " {\n" +
- " \"message\": \"This error does not exist.\",\n" +
- " \"type\": \"NonexistentTypeException\",\n" +
- " \"code\": 999999999\n" +
- " }\n" +
- "}");
+ server
+ .enqueue(new MockResponse()
+ .setResponseCode(HttpStatus.BAD_REQUEST.value())
+ .setHeader("Content-Type", "application/json")
+ .setBody(
+ "{\n" +
+ " \"error\":\n" +
+ " {\n" +
+ " \"message\": \"This error does not exist.\",\n" +
+ " \"type\": \"NonexistentTypeException\",\n" +
+ " \"code\": 999999999\n" +
+ " }\n" +
+ "}"));
try
{
- clientTemplate.getForObject("ANY", SOME.class);
+ clientTemplate.getForObject(uri, String.class);
fail("The expected exception was not thrown");
}
catch(GraphApiException e)
@Test
public void testInvlalidError()
{
- requestFactory.setBody(
- "{\n" +
- " \"error\":\n" +
- " {\n" +
- " \"message\": \"Not a Graph-Api-Exception.\",\n" +
- " \"type\": \"Whatever\",\n" +
- " \"code\": \"some string\"\n" +
- " }\n" +
- "}");
+ server
+ .enqueue(new MockResponse()
+ .setResponseCode(HttpStatus.BAD_REQUEST.value())
+ .setHeader("Content-Type", "application/json")
+ .setBody(
+ "{\n" +
+ " \"error\":\n" +
+ " {\n" +
+ " \"message\": \"Not a Graph-Api-Exception.\",\n" +
+ " \"type\": \"Whatever\",\n" +
+ " \"code\": \"some string\"\n" +
+ " }\n" +
+ "}"));
try
{
- clientTemplate.getForObject("ANY", SOME.class);
- fail("The expected exception was not thrown");
+ clientTemplate.getForObject(uri, String.class);
+ fail("The parent handler should have raised an exception!");
}
catch(HttpClientErrorException e)
{
- LOG.debug("{}", e.toString());
+ LOG.debug("Expexted error: {}", e.toString());
}
catch(Exception e)
{
- fail("A wrong exception was thrown: " + e.toString());
+ LOG.debug("{}", e.toString());
+ fail("Unexpected error: " + e);
}
- }
- @Before
- public void setUp()
- {
- requestFactory = new MockClientHttpRequestFactory();
- requestFactory.setStatus(HttpStatus.BAD_REQUEST);
- requestFactory.addHeader("Content-Type", "application/json");
-
- clientTemplate = new RestTemplate();
- clientTemplate.setRequestFactory(requestFactory);
- clientTemplate.setErrorHandler(
- new GraphApiErrorResponseErrorHandler(clientTemplate.getErrorHandler())
- );
- }
-
+ server
+ .enqueue(new MockResponse()
+ .setResponseCode(HttpStatus.BAD_REQUEST.value())
+ .setHeader("Content-Type", "text/plain")
+ .setBody("Hallo Welt!"));
- static class SOME
- {
+ try
+ {
+ clientTemplate.getForObject(uri, String.class);
+ fail("The parent handler should have raised an exception!");
+ }
+ catch(HttpClientErrorException e)
+ {
+ LOG.debug("Expexted error: {}", e.toString());
+ }
+ catch(Exception e)
+ {
+ LOG.debug("{}", e.toString());
+ fail("Unexpected error: " + e);
+ }
}
}