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);
}
}