Author: beaton
Date: Tue Jun 16 20:50:03 2009
New Revision: 785388

URL: http://svn.apache.org/viewvc?rev=785388&view=rev
Log:
Don't throw out OAuth tokens on HTTP 400 errors.

Modified:
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/testing/FakeOAuthServiceProvider.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java?rev=785388&r1=785387&r2=785388&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthRequest.java
 Tue Jun 16 20:50:03 2009
@@ -854,9 +854,9 @@
    * and/or access tokens.
    */
   private boolean isFullOAuthError(HttpResponse response) {
-    // 400, 401 and 403 are likely to be authentication errors.
-    if (response.getHttpStatusCode() != 400 && response.getHttpStatusCode() != 
401 &&
-        response.getHttpStatusCode() != 403) {
+    // 401 and 403 are likely to be authentication errors.
+    if (response.getHttpStatusCode() != HttpResponse.SC_UNAUTHORIZED
+        && response.getHttpStatusCode() != HttpResponse.SC_FORBIDDEN) {
       return false;
     }
     // If the client forced us to use full OAuth, this might be OAuth related.

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/testing/FakeOAuthServiceProvider.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/testing/FakeOAuthServiceProvider.java?rev=785388&r1=785387&r2=785388&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/testing/FakeOAuthServiceProvider.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/testing/FakeOAuthServiceProvider.java
 Tue Jun 16 20:50:03 2009
@@ -72,6 +72,7 @@
   public final static String APPROVAL_URL = SP_HOST + "/authorize";
   public final static String RESOURCE_URL = SP_HOST + "/data";
   public final static String NOT_FOUND_URL = SP_HOST + "/404";
+  public final static String ERROR_400 = SP_HOST + "/400";
   public final static String ECHO_URL = SP_HOST + "/echo";
 
   public final static String CONSUMER_KEY = "consumer";
@@ -280,6 +281,8 @@
         return handleResourceUrl(request);
       } else if (url.startsWith(NOT_FOUND_URL)) {
         return handleNotFoundUrl(request);
+      } else if (url.startsWith(ERROR_400)) {
+        return handleError400Url(request);
       } else if (url.startsWith(ECHO_URL)) {
         return handleEchoUrl(request);
       }
@@ -723,6 +726,13 @@
         .create();
   }
 
+  private HttpResponse handleError400Url(HttpRequest request) throws Exception 
{
+    return new HttpResponseBuilder()
+        .setHttpStatusCode(HttpResponse.SC_BAD_REQUEST)
+        .setResponseString("bad request")
+        .create();
+  }
+  
   private HttpResponse handleEchoUrl(HttpRequest request) throws Exception {
     String query = request.getUri().getQuery();
     if (query.contains("add_oauth_token")) {

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java?rev=785388&r1=785387&r2=785388&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthRequestTest.java
 Tue Jun 16 20:50:03 2009
@@ -899,6 +899,26 @@
   }
 
   @Test
+  public void testError400() throws Exception {
+    MakeRequestClient client = makeNonSocialClient("owner", "owner", 
GADGET_URL);
+
+    HttpResponse response = 
client.sendGet(FakeOAuthServiceProvider.RESOURCE_URL);
+    assertEquals("", response.getResponseAsString());
+    client.approveToken("user_data=hello-oauth");
+
+    response = client.sendGet(FakeOAuthServiceProvider.RESOURCE_URL + 
"?cachebust=1");
+    assertEquals("User data is hello-oauth", response.getResponseAsString());
+
+    response = client.sendGet(FakeOAuthServiceProvider.ERROR_400);
+    assertEquals("bad request", response.getResponseAsString());
+    assertEquals(400, response.getHttpStatusCode());
+
+    response = client.sendGet(FakeOAuthServiceProvider.RESOURCE_URL + 
"?cachebust=3");
+    assertEquals("User data is hello-oauth", response.getResponseAsString());
+  }
+
+  
+  @Test
   public void testConsumerThrottled() throws Exception {
     assertEquals(0, serviceProvider.getRequestTokenCount());
     assertEquals(0, serviceProvider.getAccessTokenCount());


Reply via email to