Author: rbaxter85 Date: Tue Jan 7 14:18:33 2014 New Revision: 1556222 URL: http://svn.apache.org/r1556222 Log: Fix for SHINDIG-1963 Change content-type logic in TokenAuthorizationResponseHandler so application/x-www-form-urlencoded is the default
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandler.java shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandlerTest.java Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandler.java URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandler.java?rev=1556222&r1=1556221&r2=1556222&view=diff ============================================================================== --- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandler.java (original) +++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandler.java Tue Jan 7 14:18:33 2014 @@ -101,21 +101,19 @@ public class TokenAuthorizationResponseH final String responseString = response.getResponseAsString(); final OAuth2Message msg = this.oauth2MessageProvider.get(); - if (contentType.startsWith("text/plain")) { - // Facebook does this - msg.parseQuery('?' + responseString); - } else if (contentType.startsWith("application/json")) { + if (isLogging) { + TokenAuthorizationResponseHandler.LOG.log("Content-Type {0}", contentType); + TokenAuthorizationResponseHandler.LOG.log("Response String {0}", responseString); + } + if (contentType.startsWith("application/json")) { // Google does this final JSONObject responseJson = new JSONObject(responseString); msg.parseJSON(responseJson.toString()); } else { - if (isLogging) { - TokenAuthorizationResponseHandler.LOG.log("Unhandled Content-Type {0}", contentType); - TokenAuthorizationResponseHandler.LOG.exiting( - TokenAuthorizationResponseHandler.LOG_CLASS, "handleResponse", null); - } - ret = TokenAuthorizationResponseHandler.getError("Unhandled Content-Type " - + contentType); + // Default assume it is application/x-www-form-urlencoded + // Facebook has a content type of text/plain + // GitHub has a content type of application/x-www-form-urlencoded + msg.parseQuery('?' + responseString); } final OAuth2Error error = msg.getError(); Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandlerTest.java URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandlerTest.java?rev=1556222&r1=1556221&r2=1556222&view=diff ============================================================================== --- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandlerTest.java (original) +++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandlerTest.java Tue Jan 7 14:18:33 2014 @@ -189,14 +189,18 @@ public class TokenAuthorizationResponseH final HttpResponseBuilder builder = new HttpResponseBuilder().setStrictNoCache(); builder.setHttpStatusCode(HttpResponse.SC_OK); builder.setHeader("Content-Type", "BAD"); + builder.setContent("access_token=xxx&token_type=Bearer&expires=1&refresh_token=yyy&example_parameter=example_value"); final HttpResponse response = builder.create(); final OAuth2HandlerError result = TokenAuthorizationResponseHandlerTest.tarh.handleResponse( accessor, response); - Assert.assertNotNull(result); - Assert.assertEquals(null, result.getCause()); - Assert.assertEquals(OAuth2Error.TOKEN_RESPONSE_PROBLEM, result.getError()); - Assert.assertTrue(result.getContextMessage().startsWith("Unhandled Content-Type")); + Assert.assertNull(result); + final OAuth2Token accessToken = TokenAuthorizationResponseHandlerTest.store.getToken( + accessor.getGadgetUri(), accessor.getServiceName(), accessor.getUser(), + accessor.getScope(), OAuth2Token.Type.ACCESS); + Assert.assertEquals("xxx", new String(accessToken.getSecret(), "UTF-8")); + Assert.assertEquals(OAuth2Message.BEARER_TOKEN_TYPE, accessToken.getTokenType()); + Assert.assertTrue(accessToken.getExpiresAt() > 1000); } }