You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/05/28 07:41:09 UTC

svn commit: r660817 - /incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java

Author: etnu
Date: Tue May 27 22:41:09 2008
New Revision: 660817

URL: http://svn.apache.org/viewvc?rev=660817&view=rev
Log:
Added tests to ensure that headers are always passed through proxy request output.


Modified:
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java?rev=660817&r1=660816&r2=660817&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java Tue May 27 22:41:09 2008
@@ -25,8 +25,8 @@
 import org.apache.shindig.common.SecurityToken;
 import org.apache.shindig.gadgets.FakeGadgetToken;
 import org.apache.shindig.gadgets.GadgetException;
-import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.HttpRequest;
+import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.spec.Auth;
 import org.apache.shindig.gadgets.spec.Preload;
 
@@ -36,7 +36,11 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.URI;
+import java.util.Arrays;
 import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import javax.servlet.ServletOutputStream;
 
@@ -76,6 +80,15 @@
     expect(fetcher.fetch(req)).andReturn(resp);
   }
 
+  private void expectGetAndReturnHeaders(String url,
+      Map<String, List<String>> headers) throws Exception {
+    HttpRequest req = new HttpRequest(
+      "GET", new URI(url), null, null, new HttpRequest.Options());
+    HttpResponse resp = new HttpResponse(200, null, headers);
+    expect(contentFetcherFactory.get()).andReturn(fetcher);
+    expect(fetcher.fetch(req)).andReturn(resp);
+  }
+
   private void expectPostAndReturnData(String url, byte[] body, byte[] data)
       throws Exception {
     HttpRequest req = new HttpRequest(
@@ -322,4 +335,26 @@
     assertEquals("q=with space", url.getQuery());
     assertNull(url.getFragment());
   }
+
+  public void testHeadersPreserved() throws Exception {
+    // Some headers may be blacklisted. These are ok.
+    String url = "http://example.org/file.evil";
+    String domain = "example.org";
+    String contentType = "text/evil; charset=utf-8";
+    String magicGarbage = "fadfdfdfd";
+    Map<String, List<String>> headers = new HashMap<String, List<String>>();
+    headers.put("Content-Type", Arrays.asList(contentType));
+    headers.put("X-Magic-Garbage", Arrays.asList(magicGarbage));
+
+    expect(lockedDomainService.embedCanRender(domain))
+        .andReturn(true).atLeastOnce();
+    setupProxyRequestMock(domain, url);
+    expectGetAndReturnHeaders(url, headers);
+    response.addHeader("Content-Type", contentType);
+    response.addHeader("X-Magic-Garbage", magicGarbage);
+
+    replay();
+    proxyHandler.fetch(request, response);
+    verify();
+  }
 }