Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java Thu Aug 21 19:43:49 2008 @@ -17,20 +17,13 @@ */ package org.apache.shindig.gadgets.http; -import org.apache.shindig.common.uri.Uri; -import org.apache.shindig.common.util.DateUtil; +import junit.framework.TestCase; import org.apache.shindig.common.cache.CacheProvider; import org.apache.shindig.common.cache.DefaultCacheProvider; +import org.apache.shindig.common.uri.Uri; +import org.apache.shindig.common.util.DateUtil; -import org.apache.commons.lang.ArrayUtils; - -import junit.framework.TestCase; - -import java.util.Arrays; import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; /** * Tests for basic content cache @@ -53,18 +46,15 @@ super.tearDown(); } - private HttpRequest createRequest(String method) { + private static HttpRequest createRequest(String method) { return new HttpRequest(Uri.parse("http://www.example.org")).setMethod(method); } - private HttpResponse createResponse(int statusCode, String header, - String headerValue) { - Map<String, List<String>> headers = new HashMap<String, List<String>>(); - if (header != null) { - headers.put(header, Arrays.asList(headerValue)); - } - HttpResponse resp = new HttpResponse(statusCode, ArrayUtils.EMPTY_BYTE_ARRAY, headers); - return resp; + private static HttpResponse createResponse(int statusCode, String header, String headerValue) { + return new HttpResponseBuilder() + .setHttpStatusCode(statusCode) + .addHeader(header, headerValue) + .create(); } private HttpResponse createExpiresResponse(int statusCode, long expiration) { @@ -87,7 +77,7 @@ HttpResponse resp = createResponse(200, null, null); HttpCacheKey key = new HttpCacheKey(req); cache.addResponse(key, req, resp); - assertEquals(cache.getResponse(key, req), resp); + assertEquals(resp, cache.getResponse(key, req)); } public void testNotCacheableForPost() { @@ -112,7 +102,7 @@ System.currentTimeMillis() + 10000L); HttpCacheKey key = new HttpCacheKey(req); cache.addResponse(key, req, resp); - assertEquals(cache.getResponse(key, req), resp); + assertEquals(resp, cache.getResponse(key, req)); } public void testNotCacheableForPastExpires() { @@ -130,7 +120,7 @@ 10000L); HttpCacheKey key = new HttpCacheKey(req); cache.addResponse(key, req, resp); - assertEquals(cache.getResponse(key, req), resp); + assertEquals(resp, cache.getResponse(key, req)); } public void testNotCacheableForNoCache() {
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java Thu Aug 21 19:43:49 2008 @@ -19,7 +19,6 @@ import org.apache.shindig.common.cache.CacheProvider; import org.apache.shindig.common.cache.DefaultCacheProvider; - import org.junit.Before; public class BasicHttpFetcherTest extends AbstractHttpFetcherTest { Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/EchoServer.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/EchoServer.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/EchoServer.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/EchoServer.java Thu Aug 21 19:43:49 2008 @@ -18,18 +18,17 @@ */ package org.apache.shindig.gadgets.http; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import org.mortbay.jetty.servlet.ServletHolder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import org.mortbay.jetty.servlet.ServletHolder; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; /** * A server that echoes back whatever you send to it. Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpCacheKeyTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpCacheKeyTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpCacheKeyTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpCacheKeyTest.java Thu Aug 21 19:43:49 2008 @@ -13,14 +13,12 @@ */ package org.apache.shindig.gadgets.http; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - import org.apache.shindig.common.uri.Uri; - import org.json.JSONArray; import org.json.JSONObject; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import org.junit.Test; public class HttpCacheKeyTest { Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpRequestTest.java Thu Aug 21 19:43:49 2008 @@ -18,15 +18,11 @@ */ package org.apache.shindig.gadgets.http; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - +import org.apache.commons.io.IOUtils; import org.apache.shindig.common.AnonymousSecurityToken; import org.apache.shindig.common.uri.Uri; - -import com.google.common.collect.Multimaps; - -import org.apache.commons.io.IOUtils; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import org.junit.Test; import java.util.Arrays; @@ -54,7 +50,7 @@ @Test public void contentTypeExtraction() throws Exception { HttpRequest request = new HttpRequest(DEFAULT_URI) - .addHeader("Content-Type", CONTENT_TYPE); + .addHeader("Content-Type", CONTENT_TYPE); assertEquals(CONTENT_TYPE, request.getContentType()); } @@ -63,15 +59,15 @@ Map<String, List<String>> headers = new HashMap<String, List<String>>(); headers.put(TEST_HEADER_KEY, Arrays.asList(TEST_HEADER_VALUE)); HttpRequest request = new HttpRequest(DEFAULT_URI) - .addHeader(TEST_HEADER_KEY, TEST_HEADER_VALUE); + .addHeader(TEST_HEADER_KEY, TEST_HEADER_VALUE); assertEquals(TEST_HEADER_VALUE, request.getHeader(TEST_HEADER_KEY)); } @Test public void getHeaders() throws Exception { HttpRequest request = new HttpRequest(DEFAULT_URI) - .addHeader(TEST_HEADER_KEY, TEST_HEADER_VALUE) - .addHeader(TEST_HEADER_KEY, TEST_HEADER_VALUE2); + .addHeader(TEST_HEADER_KEY, TEST_HEADER_VALUE) + .addHeader(TEST_HEADER_KEY, TEST_HEADER_VALUE2); Collection<String> expected = Arrays.asList(TEST_HEADER_VALUE, TEST_HEADER_VALUE2); assertTrue(request.getHeaders(TEST_HEADER_KEY).containsAll(expected)); @@ -88,17 +84,17 @@ @Test public void copyCtorCopiesAllFields() { HttpRequest request = new HttpRequest(DEFAULT_URI) - .setCacheTtl(100) - .addHeaders(Multimaps.immutableMultimap(TEST_HEADER_KEY, TEST_HEADER_VALUE)) - .setContainer("container") - .setGadget(DEFAULT_URI) - .setMethod("POST") - .setPostBody(POST_BODY.getBytes()) - .setContentRewriter(null) - .setRewriteMimeType("text/fake") - .setSecurityToken(AnonymousSecurityToken.getInstance()) - .setSignOwner(false) - .setSignViewer(false); + .setCacheTtl(100) + .addHeader(TEST_HEADER_KEY, TEST_HEADER_VALUE) + .setContainer("container") + .setGadget(DEFAULT_URI) + .setMethod("POST") + .setPostBody(POST_BODY.getBytes()) + .setContentRewriter(null) + .setRewriteMimeType("text/fake") + .setSecurityToken(AnonymousSecurityToken.getInstance()) + .setSignOwner(false) + .setSignViewer(false); HttpRequest request2 = new HttpRequest(request).setUri(Uri.parse("http://example.org/foo")); Added: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseBuilderTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseBuilderTest.java?rev=687932&view=auto ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseBuilderTest.java (added) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseBuilderTest.java Thu Aug 21 19:43:49 2008 @@ -0,0 +1,126 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +package org.apache.shindig.gadgets.http; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * Tests for HttpResponseBuilder. + * + * This test case compliments HttpResponseTest; not all tests are duplicated here. + */ +public class HttpResponseBuilderTest { + + @Test + public void copyConstructor() { + HttpResponseBuilder builder = new HttpResponseBuilder() + .setHttpStatusCode(HttpResponse.SC_NOT_FOUND) + .setMetadata("foo", "bar") + .addHeader("Foo-bar", "baz") + .setRewritten(HttpResponse.notFound()); + + HttpResponseBuilder builder2 = new HttpResponseBuilder(builder); + assertEquals(builder.create(), builder2.create()); + } + + @Test + public void addHeader() { + HttpResponseBuilder builder = new HttpResponseBuilder() + .addHeader("Foo-bar", "baz"); + + assertEquals("baz", builder.getHeaders().get("Foo-bar").iterator().next()); + } + + @Test + public void addHeadersMap() { + Map<String, String> headers = Maps.immutableMap("foo", "bar", "blah", "blah"); + + HttpResponseBuilder builder = new HttpResponseBuilder() + .addHeaders(headers); + + assertEquals(Arrays.asList("bar"), builder.getHeaders().get("foo")); + assertEquals(Arrays.asList("blah"), builder.getHeaders().get("blah")); + } + + @Test + public void addAllHeaders() { + Map<String, List<String>> headers = Maps.newHashMap(); + + List<String> foo = Lists.newArrayList("bar", "blah"); + List<String> bar = Lists.newArrayList("baz"); + headers.put("foo", foo); + headers.put("bar", bar); + + + HttpResponseBuilder builder = new HttpResponseBuilder() + .addAllHeaders(headers); + + assertTrue(builder.getHeaders().get("foo").containsAll(foo)); + assertTrue(builder.getHeaders().get("bar").containsAll(bar)); + } + + @Test + public void setExpirationTime() { + HttpResponseBuilder builder = new HttpResponseBuilder() + .addHeader("Pragma", "no-cache") + .addHeader("Cache-Control", "public,max-age=100") + .setExpirationTime(100); + + Map<String, List<String>> headers = builder.getHeaders(); + assertTrue("No Expires header added.", headers.containsKey("Expires")); + assertFalse("Pragma header not removed", headers.containsKey("Pragma")); + assertFalse("Cache-Control header not removed", headers.containsKey("Cache-Control")); + } + + @Test + public void setCacheTtl() { + HttpResponseBuilder builder = new HttpResponseBuilder() + .addHeader("Pragma", "no-cache") + .addHeader("Expires", "some time stamp normally goes here") + .setCacheTtl(100); + + Map<String, List<String>> headers = builder.getHeaders(); + assertFalse("Expires header not removed.", headers.containsKey("Expires")); + assertFalse("Pragma header not removed", headers.containsKey("Pragma")); + assertEquals("public,max-age=100", headers.get("Cache-Control").get(0)); + } + + @Test + public void setStrictNoCache() { + HttpResponseBuilder builder = new HttpResponseBuilder() + .addHeader("Cache-Control", "public,max-age=100") + .addHeader("Expires", "some time stamp normally goes here") + .setStrictNoCache(); + + Map<String, List<String>> headers = builder.getHeaders(); + assertFalse("Expires header not removed.", headers.containsKey("Expires")); + assertEquals("no-cache", headers.get("Cache-Control").iterator().next()); + assertEquals("no-cache", headers.get("Pragma").get(0)); + } + + +} Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java Thu Aug 21 19:43:49 2008 @@ -17,157 +17,159 @@ */ package org.apache.shindig.gadgets.http; -import org.apache.shindig.common.util.DateUtil; - -import org.apache.commons.io.IOUtils; - import junit.framework.TestCase; +import org.apache.commons.io.IOUtils; +import org.apache.shindig.common.util.DateUtil; import java.util.Arrays; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; public class HttpResponseTest extends TestCase { - private final static byte[] UTF8_DATA = new byte[] { + private static final byte[] UTF8_DATA = new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF, 'h', 'e', 'l', 'l', 'o' }; - private final static String UTF8_STRING = "hello"; + private static final String UTF8_STRING = "hello"; // A large string is needed for accurate charset detection. - private final static byte[] LATIN1_DATA = new byte[] { + private static final byte[] LATIN1_DATA = new byte[] { 'G', 'a', 'm', 'e', 's', ',', ' ', 'H', 'Q', ',', ' ', 'M', 'a', 'n', 'g', (byte)0xE1, ',', ' ', 'A', 'n', 'i', 'm', 'e', ' ', 'e', ' ', 't', 'u', 'd', 'o', ' ', 'q', 'u', 'e', ' ', 'u', 'm', ' ', 'b', 'o', 'm', ' ', 'n', 'e', 'r', 'd', ' ', 'a', 'm', 'a' }; - private final static String LATIN1_STRING + private static final String LATIN1_STRING = "Games, HQ, Mang\u00E1, Anime e tudo que um bom nerd ama"; - private final static byte[] BIG5_DATA = new byte[] { + private static final byte[] BIG5_DATA = new byte[] { (byte)0xa7, (byte)0x41, (byte)0xa6, (byte)0x6e }; - private final static String BIG5_STRING = "\u4F60\u597D"; - private Map<String, List<String>> headers; + private static final String BIG5_STRING = "\u4F60\u597D"; - @Override - public void setUp() throws Exception { - super.setUp(); - headers = new HashMap<String, List<String>>(); - } - private void addHeader(String name, String value) { - java.util.List<String> existing = headers.get(name); - if (existing == null) { - existing = new LinkedList<String>(); - headers.put(name, existing); - } - existing.add(value); - } - - private int roundToSeconds(long ts) { + private static int roundToSeconds(long ts) { return (int)(ts / 1000); } public void testGetEncoding() throws Exception { - addHeader("Content-Type", "text/plain; charset=TEST-CHARACTER-SET"); - HttpResponse response = new HttpResponse(200, null, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Content-Type", "text/plain; charset=TEST-CHARACTER-SET") + .create(); assertEquals("TEST-CHARACTER-SET", response.getEncoding()); } public void testEncodingDetectionUtf8WithBom() throws Exception { - // Input is UTF-8 with BOM. - addHeader("Content-Type", "text/plain; charset=UTF-8"); - HttpResponse response = new HttpResponse(200, UTF8_DATA, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Content-Type", "text/plain; charset=UTF-8") + .setResponse(UTF8_DATA) + .create(); assertEquals(UTF8_STRING, response.getResponseAsString()); } public void testEncodingDetectionLatin1() throws Exception { // Input is a basic latin-1 string with 1 non-UTF8 compatible char. - addHeader("Content-Type", "text/plain; charset=iso-8859-1"); - HttpResponse response = new HttpResponse(200, LATIN1_DATA, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Content-Type", "text/plain; charset=iso-8859-1") + .setResponse(LATIN1_DATA) + .create(); assertEquals(LATIN1_STRING, response.getResponseAsString()); } public void testEncodingDetectionBig5() throws Exception { - addHeader("Content-Type", "text/plain; charset=BIG5"); - HttpResponse response = new HttpResponse(200, BIG5_DATA, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Content-Type", "text/plain; charset=BIG5") + .setResponse(BIG5_DATA) + .create(); assertEquals(BIG5_STRING, response.getResponseAsString()); } public void testEncodingDetectionUtf8WithBomNoCharsetSpecified() throws Exception { - addHeader("Content-Type", "text/plain"); - HttpResponse response = new HttpResponse(200, UTF8_DATA, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Content-Type", "text/plain") + .setResponse(UTF8_DATA) + .create(); assertEquals("UTF-8", response.getEncoding().toUpperCase()); assertEquals(UTF8_STRING, response.getResponseAsString()); } public void testEncodingDetectionLatin1NoCharsetSpecified() throws Exception { - addHeader("Content-Type", "text/plain;"); - HttpResponse response = new HttpResponse(200, LATIN1_DATA, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Content-Type", "text/plain;") + .setResponse(LATIN1_DATA) + .create(); assertEquals("ISO-8859-1", response.getEncoding().toUpperCase()); assertEquals(LATIN1_STRING, response.getResponseAsString()); } public void testEncodingDetectionUtf8WithBomNoContentHeader() throws Exception { - HttpResponse response = new HttpResponse(200, UTF8_DATA, headers); + HttpResponse response = new HttpResponseBuilder() + .setResponse(UTF8_DATA) + .create(); assertEquals("UTF-8", response.getEncoding().toUpperCase()); assertEquals(UTF8_STRING, response.getResponseAsString()); } public void testEncodingDetectionLatin1NoContentHeader() throws Exception { - HttpResponse response = new HttpResponse(200, LATIN1_DATA, headers); + HttpResponse response = new HttpResponseBuilder() + .setResponse(LATIN1_DATA) + .create(); assertEquals("ISO-8859-1", response.getEncoding().toUpperCase()); assertEquals(LATIN1_STRING, response.getResponseAsString()); } public void testGetEncodingForImageContentType() throws Exception { - addHeader("Content-Type", "image/png; charset=iso-8859-1"); - HttpResponse response = new HttpResponse(200, LATIN1_DATA, headers); - assertEquals("UTF-8", response.getEncoding().toUpperCase()); + HttpResponse response = new HttpResponseBuilder() + .setResponse(LATIN1_DATA) + .addHeader("Content-Type", "image/png; charset=iso-8859-1") + .create(); + assertEquals(HttpResponse.DEFAULT_ENCODING, response.getEncoding().toUpperCase()); } public void testGetEncodingForFlashContentType() throws Exception { - addHeader("Content-Type", "application/x-shockwave-flash; charset=iso-8859-1"); - HttpResponse response = new HttpResponse(200, LATIN1_DATA, headers); - assertEquals("UTF-8", response.getEncoding().toUpperCase()); + HttpResponse response = new HttpResponseBuilder() + .setResponse(LATIN1_DATA) + .addHeader("Content-Type", "application/x-shockwave-flash; charset=iso-8859-1") + .create(); + assertEquals(HttpResponse.DEFAULT_ENCODING, response.getEncoding().toUpperCase()); } public void testPreserveBinaryData() throws Exception { byte[] data = new byte[] { (byte)0x00, (byte)0xDE, (byte)0xEA, (byte)0xDB, (byte)0xEE, (byte)0xF0 }; - addHeader("Content-Type", "application/octet-stream"); - HttpResponse response = new HttpResponse(200, data, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Content-Type", "application/octet-stream") + .setResponse(data) + .create(); byte[] out = IOUtils.toByteArray(response.getResponse()); assertEquals(data.length, response.getContentLength()); assertTrue(Arrays.equals(data, out)); - out = response.getResponseAsBytes(); + out = IOUtils.toByteArray(response.getResponse()); assertTrue(Arrays.equals(data, out)); } public void testStrictCacheControlNoCache() throws Exception { - addHeader("Cache-Control", "no-cache"); - HttpResponse response = new HttpResponse(200, null, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Cache-Control", "no-cache") + .create(); assertTrue(response.isStrictNoCache()); assertEquals(-1, response.getCacheExpiration()); assertEquals(-1, response.getCacheTtl()); } public void testStrictPragmaNoCache() throws Exception { - addHeader("Pragma", "no-cache"); - HttpResponse response = new HttpResponse(200, null, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Pragma", "no-cache") + .create(); assertTrue(response.isStrictNoCache()); assertEquals(-1, response.getCacheExpiration()); assertEquals(-1, response.getCacheTtl()); } public void testStrictPragmaJunk() throws Exception { - addHeader("Pragma", "junk"); - HttpResponse response = new HttpResponse(200, null, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Pragma", "junk") + .create(); assertFalse(response.isStrictNoCache()); int expected = roundToSeconds(System.currentTimeMillis() + HttpResponse.DEFAULT_TTL); int expires = roundToSeconds(response.getCacheExpiration()); @@ -179,15 +181,16 @@ * Verifies that the cache TTL is within acceptable ranges. * This always rounds down due to timing, so actual verification will be against maxAge - 1. */ - private void assertTtlOk(int maxAge, HttpResponse response) { + private static void assertTtlOk(int maxAge, HttpResponse response) { assertEquals(maxAge - 1, roundToSeconds(response.getCacheTtl() - 1)); } public void testExpires() throws Exception { int maxAge = 10; int time = roundToSeconds(System.currentTimeMillis()) + maxAge; - addHeader("Expires", DateUtil.formatDate(1000L * time)); - HttpResponse response = new HttpResponse(200, null, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Expires", DateUtil.formatDate(1000L * time)) + .create(); assertEquals(time, roundToSeconds(response.getCacheExpiration())); // Second rounding makes this n-1. assertTtlOk(maxAge, response); @@ -197,8 +200,9 @@ int maxAge = 10; // Guess time. int expected = roundToSeconds(System.currentTimeMillis()) + maxAge; - addHeader("Cache-Control", "public, max-age=" + maxAge); - HttpResponse response = new HttpResponse(200, null, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Cache-Control", "public, max-age=" + maxAge) + .create(); int expiration = roundToSeconds(response.getCacheExpiration()); assertEquals(expected, expiration); @@ -209,9 +213,11 @@ int maxAge = 10; // Guess time. int expected = roundToSeconds(System.currentTimeMillis()) + maxAge; - addHeader("Date", "Wed, 09 Jul 2008 19:18:33 EDT"); - addHeader("Cache-Control", "public, max-age=" + maxAge); - HttpResponse response = new HttpResponse(200, null, headers); + + HttpResponse response = new HttpResponseBuilder() + .addHeader("Date", "Wed, 09 Jul 2008 19:18:33 EDT") + .addHeader("Cache-Control", "public, max-age=" + maxAge) + .create(); int expiration = roundToSeconds(response.getCacheExpiration()); assertEquals(expected, expiration); @@ -221,9 +227,10 @@ public void testMaxAgeWithDate() throws Exception { int maxAge = 10; int now = roundToSeconds(System.currentTimeMillis()); - addHeader("Date", DateUtil.formatDate(1000L * now)); - addHeader("Cache-Control", "public, max-age=" + maxAge); - HttpResponse response = new HttpResponse(200, null, headers); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Date", DateUtil.formatDate(1000L * now)) + .addHeader("Cache-Control", "public, max-age=" + maxAge) + .create(); assertEquals(now + maxAge, roundToSeconds(response.getCacheExpiration())); assertTtlOk(maxAge, response); @@ -231,9 +238,9 @@ public void testFixedDate() throws Exception { int time = roundToSeconds(System.currentTimeMillis()); - addHeader("Date", DateUtil.formatDate(1000L * time)); - HttpResponse response = new HttpResponse(200, null, headers); - assertEquals(time, roundToSeconds(response.getDate())); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Date", DateUtil.formatDate(1000L * time)) + .create(); assertEquals(time + roundToSeconds(HttpResponse.DEFAULT_TTL), roundToSeconds(response.getCacheExpiration())); assertTtlOk(roundToSeconds(HttpResponse.DEFAULT_TTL), response); @@ -249,50 +256,51 @@ long ttl = HttpResponse.error().getCacheTtl(); assertTrue(ttl <= HttpResponse.DEFAULT_TTL && ttl > 0); } - - public void testStrictNoCacheAndNegativeCaching() { - HttpResponse response = new HttpResponse(401, UTF8_DATA, null); - response.setNoCache(); - assertEquals(-1, response.getCacheTtl()); - - response = new HttpResponse(403, UTF8_DATA, null); - response.setNoCache(); - assertEquals(-1, response.getCacheTtl()); - - response = new HttpResponse(200, UTF8_DATA, null); - response.setNoCache(); + + private static void assertDoesNotAllowNegativeCaching(int status) { + HttpResponse response = new HttpResponseBuilder() + .setHttpStatusCode(status) + .setResponse(UTF8_DATA) + .setStrictNoCache() + .create(); assertEquals(-1, response.getCacheTtl()); - - response = new HttpResponse(302, UTF8_DATA, null); - response.setNoCache(); + } + + private static void assertAllowsNegativeCaching(int status) { + HttpResponse response = new HttpResponseBuilder() + .setHttpStatusCode(status) + .setResponse(UTF8_DATA) + .setStrictNoCache() + .create(); long ttl = response.getCacheTtl(); assertTrue(ttl <= HttpResponse.DEFAULT_TTL && ttl > 0); - - response = new HttpResponse(404, UTF8_DATA, null); - response.setNoCache(); - ttl = response.getCacheTtl(); - assertTrue(ttl <= HttpResponse.DEFAULT_TTL && ttl > 0); - - response = new HttpResponse(500, UTF8_DATA, null); - response.setNoCache(); - ttl = response.getCacheTtl(); - assertTrue(ttl <= HttpResponse.DEFAULT_TTL && ttl > 0); + } + + public void testStrictNoCacheAndNegativeCaching() { + assertDoesNotAllowNegativeCaching(HttpResponse.SC_UNAUTHORIZED); + assertDoesNotAllowNegativeCaching(HttpResponse.SC_FORBIDDEN); + assertDoesNotAllowNegativeCaching(HttpResponse.SC_OK); + assertAllowsNegativeCaching(HttpResponse.SC_NOT_FOUND); + assertAllowsNegativeCaching(HttpResponse.SC_INTERNAL_SERVER_ERROR); + assertAllowsNegativeCaching(HttpResponse.SC_TIMEOUT); } public void testSetNoCache() { int time = roundToSeconds(System.currentTimeMillis()); - addHeader("Expires", DateUtil.formatDate(1000L * time)); - HttpResponse response = new HttpResponse(200, null, headers); - response.setNoCache(); + HttpResponse response = new HttpResponseBuilder() + .addHeader("Expires", DateUtil.formatDate(1000L * time)) + .setStrictNoCache() + .create(); assertNull(response.getHeader("Expires")); assertEquals("no-cache", response.getHeader("Pragma")); assertEquals("no-cache", response.getHeader("Cache-Control")); } public void testNullHeaderNamesStripped() { - addHeader(null, "dummy"); - HttpResponse response = new HttpResponse(200, null, headers); - for (String key : response.getAllHeaders().keySet()) { + HttpResponse response = new HttpResponseBuilder() + .addHeader(null, "dummy") + .create(); + for (String key : response.getHeaders().keySet()) { assertNotNull("Null header not removed.", key); } } Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java Thu Aug 21 19:43:49 2008 @@ -17,12 +17,6 @@ */ package org.apache.shindig.gadgets.oauth; -import org.apache.shindig.common.crypto.Crypto; -import org.apache.shindig.gadgets.GadgetException; -import org.apache.shindig.gadgets.http.HttpFetcher; -import org.apache.shindig.gadgets.http.HttpRequest; -import org.apache.shindig.gadgets.http.HttpResponse; - import net.oauth.OAuth; import net.oauth.OAuthAccessor; import net.oauth.OAuthConsumer; @@ -30,13 +24,17 @@ import net.oauth.OAuthServiceProvider; import net.oauth.OAuthValidator; import net.oauth.SimpleOAuthValidator; +import org.apache.shindig.common.crypto.Crypto; +import org.apache.shindig.gadgets.GadgetException; +import org.apache.shindig.gadgets.http.HttpFetcher; +import org.apache.shindig.gadgets.http.HttpRequest; +import org.apache.shindig.gadgets.http.HttpResponse; +import org.apache.shindig.gadgets.http.HttpResponseBuilder; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; -import java.util.Map; public class FakeOAuthServiceProvider implements HttpFetcher { @@ -180,24 +178,21 @@ return new HttpResponse(resp); } - private HttpResponse makeOAuthProblemReport(String code, String text) - throws IOException { + private HttpResponse makeOAuthProblemReport(String code, String text) throws IOException { if (vagueErrors) { - int rc = 401; + int rc = HttpResponse.SC_UNAUTHORIZED; if ("consumer_key_unknown".equals(code)) { - rc = 403; + rc = HttpResponse.SC_FORBIDDEN; } - return new HttpResponse(rc, null, null); + return new HttpResponseBuilder().setHttpStatusCode(rc).create(); } OAuthMessage msg = new OAuthMessage(null, null, null); msg.addParameter("oauth_problem", code); - msg.addParameter("oauth_problem_advice", text); - Map<String, List<String>> headers = new HashMap<String, List<String>>(); - headers.put( - "WWW-Authenticate", - Arrays.asList(msg.getAuthorizationHeader("realm"))); - HttpResponse response = new HttpResponse(403, null, headers); - return response; + msg.addParameter("oauth_problem_advice", text); + return new HttpResponseBuilder() + .setHttpStatusCode(HttpResponse.SC_FORBIDDEN) + .addHeader("WWW-Authenticate", msg.getAuthorizationHeader("realm")) + .create(); } // Loosely based off net.oauth.OAuthServlet, and even more loosely related Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthResponseParamsTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthResponseParamsTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthResponseParamsTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthResponseParamsTest.java Thu Aug 21 19:43:49 2008 @@ -19,13 +19,13 @@ package org.apache.shindig.gadgets.oauth; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - import org.apache.shindig.common.crypto.BasicBlobCrypter; import org.apache.shindig.common.crypto.BlobCrypter; import org.apache.shindig.gadgets.http.HttpResponse; +import org.apache.shindig.gadgets.http.HttpResponseBuilder; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; @@ -61,8 +61,9 @@ params.setAznUrl("aznurl"); params.setError(OAuthError.BAD_OAUTH_CONFIGURATION); params.setErrorText("errortext"); - HttpResponse response = new HttpResponse(200); - params.addToResponse(response); + HttpResponseBuilder responseBuilder = new HttpResponseBuilder(); + params.addToResponse(responseBuilder); + HttpResponse response = responseBuilder.create(); assertEquals("BAD_OAUTH_CONFIGURATION", response.getMetadata().get("oauthError")); assertEquals("errortext", response.getMetadata().get("oauthErrorText")); assertEquals("aznurl", response.getMetadata().get("oauthApprovalUrl")); @@ -72,9 +73,10 @@ @Test public void testAddEmptyParams() { - HttpResponse response = new HttpResponse(200); OAuthResponseParams params = new OAuthResponseParams(crypter); - params.addToResponse(response); + HttpResponseBuilder responseBuilder = new HttpResponseBuilder(); + params.addToResponse(responseBuilder); + HttpResponse response = responseBuilder.create(); assertTrue(response.getMetadata().isEmpty()); } Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTaskTest.java Thu Aug 21 19:43:49 2008 @@ -18,10 +18,6 @@ */ package org.apache.shindig.gadgets.servlet; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.isA; - import org.apache.shindig.common.ContainerConfig; import org.apache.shindig.common.SecurityToken; import org.apache.shindig.common.SecurityTokenDecoder; @@ -32,11 +28,15 @@ import org.apache.shindig.gadgets.GadgetContext; import org.apache.shindig.gadgets.http.HttpRequest; import org.apache.shindig.gadgets.http.HttpResponse; +import org.apache.shindig.gadgets.http.HttpResponseBuilder; import org.apache.shindig.gadgets.oauth.OAuthArguments; import org.apache.shindig.gadgets.oauth.OAuthFetcher; import org.apache.shindig.gadgets.oauth.OAuthResponseParams; import org.apache.shindig.gadgets.spec.GadgetSpec; import org.easymock.EasyMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.expectLastCall; +import static org.easymock.EasyMock.isA; import org.json.JSONArray; import org.json.JSONObject; @@ -192,9 +192,11 @@ isA(SecurityToken.class), isA(OAuthArguments.class))). andReturn(oauthFetcher); - HttpResponse resp = new HttpResponse(401, null, null); - resp.getMetadata().put(OAuthResponseParams.APPROVAL_URL, "approval please"); - resp.getMetadata().put(OAuthResponseParams.CLIENT_STATE, "state blob"); + HttpResponse resp = new HttpResponseBuilder() + .setHttpStatusCode(HttpResponse.SC_UNAUTHORIZED) + .setMetadata(OAuthResponseParams.APPROVAL_URL, "approval please") + .setMetadata(OAuthResponseParams.CLIENT_STATE, "state blob") + .create(); expect(oauthFetcher.fetch(isA(HttpRequest.class))).andReturn(resp); Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java Thu Aug 21 19:43:49 2008 @@ -18,12 +18,8 @@ */ package org.apache.shindig.gadgets.servlet; -import static junitx.framework.StringAssert.assertStartsWith; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.isA; - import com.google.common.collect.Lists; - +import static junitx.framework.StringAssert.assertStartsWith; import org.apache.shindig.common.SecurityToken; import org.apache.shindig.common.SecurityTokenDecoder; import org.apache.shindig.common.SecurityTokenException; @@ -33,8 +29,11 @@ import org.apache.shindig.gadgets.http.HttpFetcher; import org.apache.shindig.gadgets.http.HttpRequest; import org.apache.shindig.gadgets.http.HttpResponse; +import org.apache.shindig.gadgets.http.HttpResponseBuilder; import org.apache.shindig.gadgets.spec.Auth; import org.apache.shindig.gadgets.spec.Preload; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.isA; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -360,8 +359,11 @@ public void testMetadataCopied() throws Exception { HttpRequest internalRequest = new HttpRequest(REQUEST_URL); - HttpResponse response = new HttpResponse("foo"); - response.getMetadata().put("foo", RESPONSE_BODY); + HttpResponse response = new HttpResponseBuilder() + .setResponse("foo".getBytes("UTF-8")) + .setMetadata("foo", RESPONSE_BODY) + .create(); + expect(fetcher.fetch(internalRequest)).andReturn(response); replay(); Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyBaseTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyBaseTest.java?rev=687932&r1=687931&r2=687932&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyBaseTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyBaseTest.java Thu Aug 21 19:43:49 2008 @@ -18,21 +18,19 @@ */ package org.apache.shindig.gadgets.servlet; -import static org.easymock.EasyMock.expect; - import com.google.common.collect.Maps; - import org.apache.shindig.common.uri.Uri; import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.http.HttpResponse; +import org.apache.shindig.gadgets.http.HttpResponseBuilder; +import static org.easymock.EasyMock.expect; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.List; import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - /** * Tests for ProxyBase. */ @@ -135,7 +133,7 @@ } public void testSetResponseHeaders() { - HttpResponse results = new HttpResponse(HttpResponse.SC_OK); + HttpResponse results = new HttpResponseBuilder().create(); replay(); proxy.setResponseHeaders(request, recorder, results); @@ -149,7 +147,9 @@ public void testSetResponseHeadersNoCache() { Map<String, List<String>> headers = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); headers.put("Pragma", Arrays.asList("no-cache")); - HttpResponse results = new HttpResponse(HttpResponse.SC_OK, new byte[0], headers); + HttpResponse results = new HttpResponseBuilder() + .addHeader("Pragma", "no-cache") + .create(); replay(); proxy.setResponseHeaders(request, recorder, results); @@ -162,7 +162,7 @@ } public void testSetResponseHeadersForceParam() { - HttpResponse results = new HttpResponse(HttpResponse.SC_OK); + HttpResponse results = new HttpResponseBuilder().create(); expect(request.getParameter(ProxyBase.REFRESH_PARAM)).andReturn("30").anyTimes(); replay(); 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=687932&r1=687931&r2=687932&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 Thu Aug 21 19:43:49 2008 @@ -18,20 +18,19 @@ */ package org.apache.shindig.gadgets.servlet; -import static org.easymock.EasyMock.expect; - import org.apache.shindig.common.uri.Uri; import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.http.HttpRequest; import org.apache.shindig.gadgets.http.HttpResponse; +import org.apache.shindig.gadgets.http.HttpResponseBuilder; +import static org.easymock.EasyMock.expect; +import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.servlet.http.HttpServletResponse; - public class ProxyHandlerTest extends ServletTestFixture { private final static String URL_ONE = "http://www.example.org/test.html"; private final static String DATA_ONE = "hello world"; @@ -41,14 +40,14 @@ private void expectGetAndReturnData(String url, byte[] data) throws Exception { HttpRequest req = new HttpRequest(Uri.parse(url)); - HttpResponse resp = new HttpResponse(200, data, null); + HttpResponse resp = new HttpResponseBuilder().setResponse(data).create(); expect(fetcher.fetch(req)).andReturn(resp); } - private void expectGetAndReturnHeaders(String url, - Map<String, List<String>> headers) throws Exception { + private void expectGetAndReturnHeaders(String url, Map<String, List<String>> headers) + throws Exception { HttpRequest req = new HttpRequest(Uri.parse(url)); - HttpResponse resp = new HttpResponse(200, null, headers); + HttpResponse resp = new HttpResponseBuilder().addAllHeaders(headers).create(); expect(fetcher.fetch(req)).andReturn(resp); }
