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;
*
* @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;
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());
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());
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());
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());
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());
catch(RateExceededException 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());
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());
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
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<String, Object> getAdditionalInformation()
- {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Set<String> 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;
- }
- });
}