1 package de.juplo.facebook.errors;
4 import de.juplo.facebook.errors.GraphApiException.Type;
5 import okhttp3.mockwebserver.MockResponse;
6 import okhttp3.mockwebserver.MockWebServer;
7 import org.junit.After;
8 import static org.junit.Assert.assertEquals;
9 import static org.junit.Assert.fail;
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
14 import org.springframework.http.HttpStatus;
15 import org.springframework.web.client.HttpClientErrorException;
16 import org.springframework.web.client.HttpServerErrorException;
17 import org.springframework.web.client.RestTemplate;
25 public class GraphApiErrorResponseErrorHandlerIntegrationTest
27 private static final Logger LOG =
28 LoggerFactory.getLogger(GraphApiErrorResponseErrorHandlerIntegrationTest.class);
30 private MockWebServer server;
32 private RestTemplate clientTemplate;
38 server = new MockWebServer();
39 uri = server.url("/egal").toString();
40 clientTemplate = new RestTemplate();
41 clientTemplate.setErrorHandler(new GraphApiErrorResponseErrorHandler(clientTemplate.getErrorHandler()));
45 public void shutdown() throws Exception
47 this.server.shutdown();
52 public void testNoError()
55 // .enqueue(new MockResponse()
56 // .setResponseCode(HttpStatus.CONTINUE.value())
57 // .setHeader("Content-Type", "application/json")
58 // .setBody("Hallo Welt!"));
62 // String result = clientTemplate.getForObject(uri, String.class);
63 // assertEquals("Hallo Welt!", result);
67 // LOG.debug("{}", e.toString());
68 // fail("Unexpected error: " + e);
73 .enqueue(new MockResponse()
74 .setResponseCode(HttpStatus.OK.value())
75 .setHeader("Content-Type", "text/plain")
76 .setBody("Hallo Welt!"));
80 String result = clientTemplate.getForObject(uri, String.class);
81 assertEquals("Hallo Welt!", result);
85 LOG.debug("{}", e.toString());
86 fail("Unexpected error: " + e);
91 .enqueue(new MockResponse()
92 .setResponseCode(HttpStatus.TEMPORARY_REDIRECT.value())
93 .setHeader("Content-Type", "text/plain")
94 .setBody("Hallo Welt!"));
98 String result = clientTemplate.getForObject(uri, String.class);
99 assertEquals("Hallo Welt!", result);
103 LOG.debug("{}", e.toString());
104 fail("Unexpected error: " + e);
109 .enqueue(new MockResponse()
110 .setResponseCode(HttpStatus.INTERNAL_SERVER_ERROR.value())
111 .setHeader("Content-Type", "text/plain")
112 .setBody("Hallo Welt!"));
116 clientTemplate.getForObject(uri, String.class);
117 fail("The parent handler should have raised an exception!");
119 catch(HttpServerErrorException e)
121 LOG.debug("Expexted error: {}", e.toString());
125 LOG.debug("{}", e.toString());
126 fail("Unexpected error: " + e);
131 public void testValidError()
134 .enqueue(new MockResponse()
135 .setResponseCode(HttpStatus.BAD_REQUEST.value())
136 .setHeader("Content-Type", "application/json")
141 " \"message\": \"(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.\",\n" +
142 " \"type\": \"OAuthException\",\n" +
149 clientTemplate.getForObject(uri, String.class);
150 fail("The expected exception was not thrown");
152 catch(RateLimitExceededException e)
154 LOG.debug("{}", e.toString());
155 assertEquals(new Integer(613), e.getCode());
156 assertEquals("(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.", e.getMessage());
157 assertEquals(Type.OAuthException, e.getType());
162 public void testUnmappedError()
165 .enqueue(new MockResponse()
166 .setResponseCode(HttpStatus.BAD_REQUEST.value())
167 .setHeader("Content-Type", "application/json")
172 " \"message\": \"This error does not exist.\",\n" +
173 " \"type\": \"NonexistentTypeException\",\n" +
174 " \"code\": 999999999\n" +
180 clientTemplate.getForObject(uri, String.class);
181 fail("The expected exception was not thrown");
183 catch(GraphApiException e)
185 LOG.debug("{}", e.toString());
186 assertEquals(new Integer(999999999), e.getCode());
187 assertEquals("This error does not exist.", e.getMessage());
190 Type type = e.getType();
191 LOG.error("unknown type: {}", type);
192 fail("unmapped type was resolved by enum: " + type);
194 catch (IllegalArgumentException ee) {}
199 public void testInvlalidError()
202 .enqueue(new MockResponse()
203 .setResponseCode(HttpStatus.BAD_REQUEST.value())
204 .setHeader("Content-Type", "application/json")
209 " \"message\": \"Not a Graph-Api-Exception.\",\n" +
210 " \"type\": \"Whatever\",\n" +
211 " \"code\": \"some string\"\n" +
217 clientTemplate.getForObject(uri, String.class);
218 fail("The parent handler should have raised an exception!");
220 catch(HttpClientErrorException e)
222 LOG.debug("Expexted error: {}", e.toString());
226 LOG.debug("{}", e.toString());
227 fail("Unexpected error: " + e);
232 .enqueue(new MockResponse()
233 .setResponseCode(HttpStatus.BAD_REQUEST.value())
234 .setHeader("Content-Type", "text/plain")
235 .setBody("Hallo Welt!"));
239 clientTemplate.getForObject(uri, String.class);
240 fail("The parent handler should have raised an exception!");
242 catch(HttpClientErrorException e)
244 LOG.debug("Expexted error: {}", e.toString());
248 LOG.debug("{}", e.toString());
249 fail("Unexpected error: " + e);