X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Ffacebook%2Ferrors%2FGraphApiErrorHandlerTest.java;h=65149d51496fba55f8eda2b26aa0599d76b055a0;hb=ed0c2ced1ecabf694f9f5de546bbcf01990a359a;hp=9fc7fc35d0bafa0431a94f06c659cfb5e24f7ae0;hpb=89065da8bbd59c4973d837c10cf63d967f6357cc;p=facebook-errors diff --git a/src/test/java/de/juplo/facebook/errors/GraphApiErrorHandlerTest.java b/src/test/java/de/juplo/facebook/errors/GraphApiErrorHandlerTest.java index 9fc7fc3..65149d5 100644 --- a/src/test/java/de/juplo/facebook/errors/GraphApiErrorHandlerTest.java +++ b/src/test/java/de/juplo/facebook/errors/GraphApiErrorHandlerTest.java @@ -2,33 +2,16 @@ package de.juplo.facebook.errors; import de.juplo.facebook.errors.GraphApiException.Type; -import java.util.Date; -import java.util.Map; -import java.util.Set; -import javax.annotation.Resource; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; -import org.springframework.security.access.AccessDeniedException; -import org.springframework.security.oauth2.client.OAuth2RestTemplate; -import org.springframework.security.oauth2.client.http.OAuth2ErrorHandler; -import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails; -import org.springframework.security.oauth2.client.resource.UserApprovalRequiredException; -import org.springframework.security.oauth2.client.resource.UserRedirectRequiredException; -import org.springframework.security.oauth2.client.token.AccessTokenProvider; -import org.springframework.security.oauth2.client.token.AccessTokenRequest; -import org.springframework.security.oauth2.common.OAuth2AccessToken; -import static org.springframework.security.oauth2.common.OAuth2AccessToken.OAUTH2_TYPE; -import org.springframework.security.oauth2.common.OAuth2RefreshToken; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestTemplate; @@ -36,19 +19,12 @@ import org.springframework.web.client.HttpClientErrorException; * * @author Kai Moritz */ -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration( - locations = { - "classpath:/spring/test-facebook-error-handler.xml" - }) public class GraphApiErrorHandlerTest { private static final Logger log = LoggerFactory.getLogger(GraphApiErrorHandlerTest.class); - @Resource - private OAuth2RestTemplate clientTemplate; - + private RestTemplate clientTemplate; private MockClientHttpRequestFactory requestFactory; @@ -76,7 +52,6 @@ public class GraphApiErrorHandlerTest catch(UnknownErrorException e) { log.debug("{}", e.toString()); - assertEquals("invalid_request", e.getOAuth2ErrorCode()); assertEquals(new Integer(1), e.getCode()); assertEquals("An unknown error has occurred.", e.getMessage()); assertEquals(Type.OAuthException, e.getType()); @@ -107,13 +82,43 @@ public class GraphApiErrorHandlerTest catch(UnexpectedErrorException e) { log.debug("{}", e.toString()); - assertEquals("invalid_request", e.getOAuth2ErrorCode()); assertEquals(new Integer(2), e.getCode()); assertEquals("An unexpected error has occurred. Please retry your request later.", e.getMessage()); assertEquals(Type.OAuthException, e.getType()); } } + @Test + public void testError12() + { + log.info("testError12"); + + + requestFactory.setBody( + "{\n" + + " \"error\":\n" + + " {\n" + + " \"message\": \"(#12) location field is deprecated for versions v2.5 and higher\",\n" + + " \"type\": \"OAuthException\",\n" + + " \"code\": 12\n," + + " \"fbtrace_id\":\"BoxCYne7GrL\"\n" + + " }\n" + + "}"); + + try + { + clientTemplate.getForObject("ANY", SOME.class); + fail("The expected exception was not thrown"); + } + catch(DeprecatedException e) + { + log.debug("{}", e.toString()); + assertEquals(new Integer(12), e.getCode()); + assertEquals("(#12) location field is deprecated for versions v2.5 and higher", e.getMessage()); + assertEquals(Type.OAuthException, e.getType()); + } + } + @Test public void testError21() { @@ -138,7 +143,6 @@ public class GraphApiErrorHandlerTest catch(PageMigratedException e) { log.debug("{}", e.toString()); - assertEquals("invalid_request", e.getOAuth2ErrorCode()); assertEquals(new Integer(21), e.getCode()); assertEquals("(#21) Page ID 590408587650316 was migrated to page ID 1421620791415603. Please update your API calls to the new ID", e.getMessage()); assertEquals(Type.OAuthException, e.getType()); @@ -169,13 +173,34 @@ public class GraphApiErrorHandlerTest catch(UnsupportedGetRequestException e) { log.debug("{}", e.toString()); - assertEquals("invalid_request", e.getOAuth2ErrorCode()); assertEquals(new Integer(100), e.getCode()); assertEquals("Unsupported get request.", e.getMessage()); assertEquals(Type.GraphMethodException, e.getType()); } } + @Test + public void testError102() + { + log.info("testError102"); + + requestFactory.setBody("{\"error\":{\"message\":\"A user access token is required to request this resource.\",\"type\":\"OAuthException\",\"code\":102,\"fbtrace_id\":\"DhdMyf23Ki7\"}}"); + + try + { + clientTemplate.getForObject("ANY", SOME.class); + fail("The expected exception was not thrown"); + } + catch(UserAccessTokenRequiredException e) + { + log.debug("{}", e.toString()); + assertEquals(new Integer(102), e.getCode()); + assertEquals("A user access token is required to request this resource.", e.getMessage()); + assertEquals(Type.OAuthException, e.getType()); + assertEquals("DhdMyf23Ki7", e.getTraceId()); + } + } + @Test public void testError104() { @@ -191,7 +216,6 @@ public class GraphApiErrorHandlerTest catch(AccessTokenRequiredException e) { log.debug("{}", e.toString()); - assertEquals("invalid_request", e.getOAuth2ErrorCode()); assertEquals(new Integer(104), e.getCode()); assertEquals("An access token is required to request this resource.", e.getMessage()); assertEquals(Type.OAuthException, e.getType()); @@ -220,10 +244,9 @@ public class GraphApiErrorHandlerTest clientTemplate.getForObject("ANY", SOME.class); fail("The expected exception was not thrown"); } - catch(RateExceededException e) + catch(RateLimitExceededException e) { log.debug("{}", e.toString()); - assertEquals("invalid_request", e.getOAuth2ErrorCode()); assertEquals(new Integer(613), e.getCode()); assertEquals("(#613) Calls to stream have exceeded the rate of 600 calls per 600 seconds.", e.getMessage()); assertEquals(Type.OAuthException, e.getType()); @@ -243,7 +266,6 @@ public class GraphApiErrorHandlerTest catch(CallbackVerificationFailedException e) { log.debug("{}", e.toString()); - assertEquals("invalid_request", e.getOAuth2ErrorCode()); assertEquals(new Integer(2200), e.getCode()); assertEquals("(#2200) callback verification failed: ", e.getMessage()); assertEquals(Type.OAuthException, e.getType()); @@ -275,7 +297,6 @@ public class GraphApiErrorHandlerTest catch(GraphApiException e) { log.debug("{}", e.toString()); - assertEquals("invalid_request", e.getOAuth2ErrorCode()); assertEquals(new Integer(999999999), e.getCode()); assertEquals("This error does not exist.", e.getMessage()); try @@ -697,102 +718,12 @@ public class GraphApiErrorHandlerTest requestFactory = new MockClientHttpRequestFactory(); requestFactory.setStatus(HttpStatus.BAD_REQUEST); requestFactory.addHeader("Content-Type", "application/json"); - clientTemplate.setRequestFactory(requestFactory); + clientTemplate = new RestTemplate(); + clientTemplate.setRequestFactory(requestFactory); clientTemplate.setErrorHandler( - new GraphApiErrorHandler( - (OAuth2ErrorHandler)clientTemplate.getErrorHandler() - ) + new GraphApiErrorHandler(clientTemplate.getErrorHandler()) ); - - clientTemplate.setAccessTokenProvider(new AccessTokenProvider() - { - @Override - public OAuth2AccessToken obtainAccessToken( - OAuth2ProtectedResourceDetails details, - AccessTokenRequest parameters - ) - throws - UserRedirectRequiredException, - UserApprovalRequiredException, - AccessDeniedException - { - return new OAuth2AccessToken() { - - @Override - public Map getAdditionalInformation() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getScope() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public OAuth2RefreshToken getRefreshToken() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public String getTokenType() - { - return OAUTH2_TYPE; - } - - @Override - public boolean isExpired() - { - return false; - } - - @Override - public Date getExpiration() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getExpiresIn() - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public String getValue() - { - return "ANY"; - } - }; - } - - @Override - public boolean supportsResource(OAuth2ProtectedResourceDetails resource) - { - return true; - } - - @Override - public OAuth2AccessToken refreshAccessToken( - OAuth2ProtectedResourceDetails resource, - OAuth2RefreshToken refreshToken, - AccessTokenRequest request - ) - throws - UserRedirectRequiredException - { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean supportsRefresh(OAuth2ProtectedResourceDetails resource) - { - return false; - } - }); }