Return-Path: Delivered-To: apmail-hc-commits-archive@www.apache.org Received: (qmail 40505 invoked from network); 11 Dec 2010 11:34:05 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 11 Dec 2010 11:34:05 -0000 Received: (qmail 15426 invoked by uid 500); 11 Dec 2010 11:34:04 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 15381 invoked by uid 500); 11 Dec 2010 11:34:04 -0000 Mailing-List: contact commits-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list commits@hc.apache.org Received: (qmail 15373 invoked by uid 99); 11 Dec 2010 11:34:03 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 11 Dec 2010 11:34:03 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 11 Dec 2010 11:34:02 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B5EDE2388994; Sat, 11 Dec 2010 11:33:42 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1044636 - /httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java Date: Sat, 11 Dec 2010 11:33:42 -0000 To: commits@hc.apache.org From: jonm@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101211113342.B5EDE2388994@eris.apache.org> Author: jonm Date: Sat Dec 11 11:33:42 2010 New Revision: 1044636 URL: http://svn.apache.org/viewvc?rev=1044636&view=rev Log: HTTPCLIENT-1032: additional unit test coverage for HttpCacheEntry Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java?rev=1044636&r1=1044635&r2=1044636&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java (original) +++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java Sat Dec 11 11:33:42 2010 @@ -27,112 +27,279 @@ package org.apache.http.client.cache; import static org.easymock.classextension.EasyMock.*; +import static org.junit.Assert.*; + import java.util.Date; +import java.util.HashSet; +import java.util.Set; import org.apache.http.Header; import org.apache.http.HttpStatus; import org.apache.http.HttpVersion; import org.apache.http.StatusLine; import org.apache.http.client.cache.HttpCacheEntry; +import org.apache.http.impl.cookie.DateUtils; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicStatusLine; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class TestHttpCacheEntry { - private Date now; - private Date elevenSecondsAgo; - private Date nineSecondsAgo; - private Resource mockResource; - private StatusLine statusLine; - - @Before - public void setUp() { - now = new Date(); - elevenSecondsAgo = new Date(now.getTime() - 11 * 1000L); - nineSecondsAgo = new Date(now.getTime() - 9 * 1000L); - statusLine = new BasicStatusLine(HttpVersion.HTTP_1_1, - HttpStatus.SC_OK, "OK"); - mockResource = createMock(Resource.class); - } - - private HttpCacheEntry makeEntry(Header[] headers) { - return new HttpCacheEntry(elevenSecondsAgo, nineSecondsAgo, - statusLine, headers, mockResource, null); - } - - @Test - public void testGetHeadersReturnsCorrectHeaders() { - Header[] headers = { new BasicHeader("foo", "fooValue"), - new BasicHeader("bar", "barValue1"), - new BasicHeader("bar", "barValue2") - }; - HttpCacheEntry entry = makeEntry(headers); - Assert.assertEquals(2, entry.getHeaders("bar").length); - } - - @Test - public void testGetFirstHeaderReturnsCorrectHeader() { - Header[] headers = { new BasicHeader("foo", "fooValue"), - new BasicHeader("bar", "barValue1"), - new BasicHeader("bar", "barValue2") - }; - HttpCacheEntry entry = makeEntry(headers); - Assert.assertEquals("barValue1", entry.getFirstHeader("bar").getValue()); - } - - @Test - public void testGetHeadersReturnsEmptyArrayIfNoneMatch() { - Header[] headers = { new BasicHeader("foo", "fooValue"), - new BasicHeader("bar", "barValue1"), - new BasicHeader("bar", "barValue2") - }; - HttpCacheEntry entry = makeEntry(headers); - - Assert.assertEquals(0, entry.getHeaders("baz").length); - } - - @Test - public void testGetFirstHeaderReturnsNullIfNoneMatch() { - Header[] headers = { new BasicHeader("foo", "fooValue"), - new BasicHeader("bar", "barValue1"), - new BasicHeader("bar", "barValue2") - }; - HttpCacheEntry entry = makeEntry(headers); - - Assert.assertEquals(null, entry.getFirstHeader("quux")); - } - - @Test - public void testCacheEntryWithNoVaryHeaderDoesNotHaveVariants() { - Header[] headers = new Header[0]; - HttpCacheEntry entry = makeEntry(headers); - Assert.assertFalse(entry.hasVariants()); - } - - @Test - public void testCacheEntryWithOneVaryHeaderHasVariants() { - Header[] headers = { new BasicHeader("Vary", "User-Agent") }; - HttpCacheEntry entry = makeEntry(headers); - Assert.assertTrue(entry.hasVariants()); - } - - @Test - public void testCacheEntryWithMultipleVaryHeadersHasVariants() { - Header[] headers = { new BasicHeader("Vary", "User-Agent"), - new BasicHeader("Vary", "Accept-Encoding") - }; - HttpCacheEntry entry = makeEntry(headers); - Assert.assertTrue(entry.hasVariants()); - } - - @Test - public void testCacheEntryWithVaryStarHasVariants(){ - Header[] headers = { new BasicHeader("Vary", "*") }; - HttpCacheEntry entry = makeEntry(headers); - Assert.assertTrue(entry.hasVariants()); - } - + private Date now; + private Date elevenSecondsAgo; + private Date nineSecondsAgo; + private Resource mockResource; + private StatusLine statusLine; + private HttpCacheEntry entry; + + @Before + public void setUp() { + now = new Date(); + elevenSecondsAgo = new Date(now.getTime() - 11 * 1000L); + nineSecondsAgo = new Date(now.getTime() - 9 * 1000L); + statusLine = new BasicStatusLine(HttpVersion.HTTP_1_1, + HttpStatus.SC_OK, "OK"); + mockResource = createMock(Resource.class); + } + + private HttpCacheEntry makeEntry(Header[] headers) { + return new HttpCacheEntry(elevenSecondsAgo, nineSecondsAgo, + statusLine, headers, mockResource, null); + } + + @Test + public void testGetHeadersReturnsCorrectHeaders() { + Header[] headers = { new BasicHeader("foo", "fooValue"), + new BasicHeader("bar", "barValue1"), + new BasicHeader("bar", "barValue2") + }; + entry = makeEntry(headers); + assertEquals(2, entry.getHeaders("bar").length); + } + + @Test + public void testGetFirstHeaderReturnsCorrectHeader() { + Header[] headers = { new BasicHeader("foo", "fooValue"), + new BasicHeader("bar", "barValue1"), + new BasicHeader("bar", "barValue2") + }; + entry = makeEntry(headers); + assertEquals("barValue1", entry.getFirstHeader("bar").getValue()); + } + + @Test + public void testGetHeadersReturnsEmptyArrayIfNoneMatch() { + Header[] headers = { new BasicHeader("foo", "fooValue"), + new BasicHeader("bar", "barValue1"), + new BasicHeader("bar", "barValue2") + }; + entry = makeEntry(headers); + assertEquals(0, entry.getHeaders("baz").length); + } + + @Test + public void testGetFirstHeaderReturnsNullIfNoneMatch() { + Header[] headers = { new BasicHeader("foo", "fooValue"), + new BasicHeader("bar", "barValue1"), + new BasicHeader("bar", "barValue2") + }; + entry = makeEntry(headers); + assertEquals(null, entry.getFirstHeader("quux")); + } + + @Test + public void testCacheEntryWithNoVaryHeaderDoesNotHaveVariants() { + Header[] headers = new Header[0]; + entry = makeEntry(headers); + assertFalse(entry.hasVariants()); + } + + @Test + public void testCacheEntryWithOneVaryHeaderHasVariants() { + Header[] headers = { new BasicHeader("Vary", "User-Agent") }; + entry = makeEntry(headers); + assertTrue(entry.hasVariants()); + } + + @Test + public void testCacheEntryWithMultipleVaryHeadersHasVariants() { + Header[] headers = { new BasicHeader("Vary", "User-Agent"), + new BasicHeader("Vary", "Accept-Encoding") + }; + entry = makeEntry(headers); + assertTrue(entry.hasVariants()); + } + + @Test + public void testCacheEntryWithVaryStarHasVariants(){ + Header[] headers = { new BasicHeader("Vary", "*") }; + entry = makeEntry(headers); + assertTrue(entry.hasVariants()); + } + + @Test + public void mustProvideRequestDate() { + try { + new HttpCacheEntry(null, new Date(), statusLine, + new Header[]{}, mockResource, null); + fail("Should have thrown exception"); + } catch (IllegalArgumentException expected) { + } + } + + @Test + public void mustProvideResponseDate() { + try { + new HttpCacheEntry(new Date(), null, statusLine, + new Header[]{}, mockResource, null); + fail("Should have thrown exception"); + } catch (IllegalArgumentException expected) { + } + } + + @Test + public void mustProvideStatusLine() { + try { + new HttpCacheEntry(new Date(), new Date(), null, + new Header[]{}, mockResource, null); + fail("Should have thrown exception"); + } catch (IllegalArgumentException expected) { + } + } + + @Test + public void mustProvideResponseHeaders() { + try { + new HttpCacheEntry(new Date(), new Date(), statusLine, + null, mockResource, null); + fail("Should have thrown exception"); + } catch (IllegalArgumentException expected) { + } + } + + @Test + public void mustProvideResource() { + try { + new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, null, null); + fail("Should have thrown exception"); + } catch (IllegalArgumentException expected) { + } + } + + @Test + public void canProvideVariantSet() { + new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, new HashSet()); + } + + @Test + public void canRetrieveOriginalStatusLine() { + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, null); + assertSame(statusLine, entry.getStatusLine()); + } + + @Test + public void protocolVersionComesFromOriginalStatusLine() { + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, null); + assertSame(statusLine.getProtocolVersion(), + entry.getProtocolVersion()); + } + + @Test + public void reasonPhraseComesFromOriginalStatusLine() { + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, null); + assertSame(statusLine.getReasonPhrase(), entry.getReasonPhrase()); + } + + @Test + public void statusCodeComesFromOriginalStatusLine() { + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, null); + assertEquals(statusLine.getStatusCode(), entry.getStatusCode()); + } + + @Test + public void canGetOriginalRequestDate() { + final Date requestDate = new Date(); + entry = new HttpCacheEntry(requestDate, new Date(), statusLine, + new Header[]{}, mockResource, null); + assertSame(requestDate, entry.getRequestDate()); + } + + @Test + public void canGetOriginalResponseDate() { + final Date responseDate = new Date(); + entry = new HttpCacheEntry(new Date(), responseDate, statusLine, + new Header[]{}, mockResource, null); + assertSame(responseDate, entry.getResponseDate()); + } + + @Test + public void canGetOriginalResource() { + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, null); + assertSame(mockResource, entry.getResource()); + } + + @Test + public void canGetOriginalHeaders() { + Header[] headers = { + new BasicHeader("Server", "MockServer/1.0"), + new BasicHeader("Date", DateUtils.formatDate(now)) + }; + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + headers, mockResource, null); + Header[] result = entry.getAllHeaders(); + assertEquals(headers.length, result.length); + for(int i=0; i variants = new HashSet(); + variants.add("variant1"); + variants.add("variant2"); + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, variants); + Set result = entry.getVariantURIs(); + assertEquals(variants.size(), result.size()); + for(String variant : variants) { + assertTrue(result.contains(variant)); + } + } + + @Test + public void variantSetIsNotModifiable() { + Set variants = new HashSet(); + variants.add("variant1"); + variants.add("variant2"); + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, variants); + Set result = entry.getVariantURIs(); + try { + result.remove("variant1"); + fail("Should have thrown exception"); + } catch (UnsupportedOperationException expected) { + } + try { + result.add("variant3"); + fail("Should have thrown exception"); + } catch (UnsupportedOperationException expected) { + } + } + + @Test + public void canConvertToString() { + entry = new HttpCacheEntry(new Date(), new Date(), statusLine, + new Header[]{}, mockResource, null); + assertNotNull(entry.toString()); + assertFalse("".equals(entry.toString())); + } }