You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2014/01/07 15:18:33 UTC

svn commit: r1556222 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandler.java test/java/org/apache/shindig/gadgets/oauth2/handler/TokenAuthorizationResponseHandlerTest.java

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