You are viewing a plain text version of this content. The canonical link for it is here.
Posted to awf-commits@incubator.apache.org by jm...@apache.org on 2011/08/03 17:36:30 UTC
svn commit: r1153593 [3/3] - in /incubator/deft/sandbox/src:
main/java/org/deftserver/example/handler/
main/java/org/deftserver/example/keyvalue/ main/java/org/deftserver/util/
main/java/org/deftserver/web/ main/java/org/deftserver/web/handler/
main/ja...
Modified: incubator/deft/sandbox/src/test/java/org/deftserver/web/http/HttpRequestTest.java
URL: http://svn.apache.org/viewvc/incubator/deft/sandbox/src/test/java/org/deftserver/web/http/HttpRequestTest.java?rev=1153593&r1=1153592&r2=1153593&view=diff
==============================================================================
--- incubator/deft/sandbox/src/test/java/org/deftserver/web/http/HttpRequestTest.java (original)
+++ incubator/deft/sandbox/src/test/java/org/deftserver/web/http/HttpRequestTest.java Wed Aug 3 17:36:25 2011
@@ -38,371 +38,370 @@ import org.deftserver.util.HttpUtil;
import org.junit.Assert;
import org.junit.Test;
-
public class HttpRequestTest {
-
- @Test
- public void testDeserializeHttpGetRequest() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addHeader("Host", "127.0.0.1:8080");
- helper.addHeader("User-Agent", "curl/7.19.5 (i386-apple-darwin10.0.0) libcurl/7.19.5 zlib/1.2.3");
- helper.addHeader("Accept", "*/*");
- ByteBuffer bb1 = helper.getRequestAsByteBuffer();
-
- helper = new HttpRequestHelper();
- helper.addHeader("Host", "127.0.0.1:8080");
- helper.addHeader("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; sv-SE; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
- helper.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
- helper.addHeader("Accept-Language", "sv-se,sv;q=0.8,en-us;q=0.5,en;q=0.3");
- helper.addHeader("Accept-Encoding", "gzip,deflate");
- helper.addHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
- helper.addHeader("Keep-Alive", "115");
- helper.addHeader("Connection", "keep-alve");
- ByteBuffer bb2 = helper.getRequestAsByteBuffer();
-
- HttpRequest request1 = HttpRequest.of(bb1);
- HttpRequest request2 = HttpRequest.of(bb2);
-
- assertEquals("GET / HTTP/1.1", request1.getRequestLine());
- assertEquals("GET / HTTP/1.1", request2.getRequestLine());
-
- assertEquals(4, request1.getHeaders().size());
- assertEquals(9, request2.getHeaders().size());
-
- List<String> expectedHeaderNamesInRequest1 = Arrays.asList(new String[]{"User-Agent", "Host", "Accept", "From"});
- for (String expectedHeaderName : expectedHeaderNamesInRequest1) {
- assertTrue(request1.getHeaders().containsKey(expectedHeaderName.toLowerCase()));
- }
-
- List<String> expectedHeaderNamesInRequest2 = Arrays.asList(new String[]{"Host", "User-Agent", "Accept", "From",
- "Accept-Language", "Accept-Encoding", "Accept-Charset", "Keep-Alive", "Connection"});
- for (String expectedHeaderName : expectedHeaderNamesInRequest2) {
- assertTrue(request2.getHeaders().containsKey(expectedHeaderName.toLowerCase()));
- }
-
- // TODO RS 100920 verify that the headers exist
- }
-
- public void testRemoveTrailingEmptyStrings() {
- String fields1[] = new String[]{"a", "b", "c", "", ""};
- String fields2[] = new String[]{"a", "b", "c"};
-
- assertEquals(3, ArrayUtil.dropFromEndWhile(fields1, "").length);
- assertEquals(3, ArrayUtil.dropFromEndWhile(fields2, "").length);
- }
-
- @Test
- public void testSingleGetParameter() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("firstname", "jim");
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
-
- assertEquals(1, request.getParameters().size());
- assertEquals("jim", request.getParameter("firstname"));
- }
-
- @Test
- public void testMultipleGetParameter() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("firstname", "jim");
- helper.addGetParameter("lastname", "petersson");
- helper.addGetParameter("city", "stockholm");
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
-
- assertEquals(3, getSize(params));
- assertEquals("jim", request.getParameter("firstname"));
- assertEquals("petersson", request.getParameter("lastname"));
- assertEquals("stockholm", request.getParameter("city"));
- }
-
- private int getSize(Map<String, Collection<String>> mmap) {
- int size = 0;
- for (Collection<String> values : mmap.values()) {
- size += values.size();
- }
- return size;
- }
-
-
- @Test
- public void testSingleParameterWithoutValue() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("firstname", null);
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
- assertEquals(0, getSize(params));
- assertEquals(null, request.getParameter("firstname"));
- }
-
- @Test
- public void testMultipleParametersWithoutValue() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("firstname", null);
- helper.addGetParameter("lastName", "");
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
-
- assertEquals(0, getSize(params));
- assertEquals(null, request.getParameter("firstname"));
- assertEquals(null, request.getParameter("lastName"));
- }
-
- @Test
- public void testMultipleParametersWithAndWithoutValue() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("firstname", null);
- helper.addGetParameter("lastName", "petersson");
- helper.addGetParameter("city", "");
- helper.addGetParameter("phoneno", "12345");
- helper.addGetParameter("age", "30");
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
-
- assertEquals(3, getSize(params));
- assertEquals(null, request.getParameter("firstname"));
- assertEquals("petersson", request.getParameter("lastName"));
- assertEquals(null, request.getParameter("city"));
- assertEquals("12345", request.getParameter("phoneno"));
- assertEquals("30", request.getParameter("age"));
- }
-
- @Test
- public void testSingleGetParameterMultipleValues() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("letters", "x");
- helper.addGetParameter("letters", "y");
- helper.addGetParameter("letters", "z");
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
-
- assertEquals(3, getSize(params));
- Collection<String> values = params.get("letters");
- assertEquals(3, values.size());
- assertTrue(values.contains("x"));
- assertTrue(values.contains("y"));
- assertTrue(values.contains("z"));
- }
-
- @Test
- public void testMultipleGetParametersMultipleValues() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("letters", "x");
- helper.addGetParameter("letters", "y");
- helper.addGetParameter("letters", "z");
- helper.addGetParameter("numbers", "23");
- helper.addGetParameter("numbers", "54");
- helper.addGetParameter("country", "swe");
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
-
- assertEquals(6, getSize(params));
- Collection<String> letters = params.get("letters");
- Collection<String> numbers = params.get("numbers");
- Collection<String> country = params.get("country");
-
- assertEquals(3, letters.size());
- assertEquals(2, numbers.size());
- assertEquals(1, country.size());
-
- assertTrue(letters.contains("x"));
- assertTrue(letters.contains("y"));
- assertTrue(letters.contains("z"));
-
- assertTrue(numbers.contains("23"));
- assertTrue(numbers.contains("54"));
-
- assertTrue(country.contains("swe"));
- }
-
- @Test
- public void testSingleGetParameterMultipleValuesIncludingNull() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("letters", "x");
- helper.addGetParameter("letters", "y");
- helper.addGetParameter("letters", null);
- helper.addGetParameter("letters", "z");
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
-
- assertEquals(3, getSize(params));
- Collection<String> values = params.get("letters");
- assertEquals(3, values.size());
- assertTrue(values.contains("x"));
- assertTrue(values.contains("y"));
- assertTrue(values.contains("z"));
- }
-
- @Test
- public void testEmptyParameters() {
- HttpRequestHelper helper = new HttpRequestHelper();
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
- assertNotNull(params);
- assertEquals(0, getSize(params));
- }
-
- @Test(expected=UnsupportedOperationException.class)
- public void testImmutableParameters() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addGetParameter("letter", "x");
-
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- Map<String, Collection<String>> params = request.getParameters();
- params.put("not", new ArrayList<String>());
- }
-
- @Test
- public void testHostVerification_exists_HTTP_1_0() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.setVersion("1.0");
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- boolean requestOk = HttpUtil.verifyRequest(request);
- assertTrue(requestOk);
- }
-
- @Test
- public void testHostVerification_nonExisting_HTTP_1_0() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.setVersion("1.0");
- helper.removeHeader("Host");
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- boolean requestOk = HttpUtil.verifyRequest(request);
- assertTrue(requestOk);
- }
-
- @Test
- public void testHostVerification_exists_HTTP_1_1() {
- HttpRequestHelper helper = new HttpRequestHelper();
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- boolean requestOk = HttpUtil.verifyRequest(request);
- assertTrue(requestOk);
- }
-
- @Test
- public void testHostVerification_nonExisting_HTTP_1_1() {
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.removeHeader("Host");
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
- boolean requestOk = HttpUtil.verifyRequest(request);
- assertFalse(requestOk);
- }
-
- @Test
- public void testGarbageRequest() {
- HttpRequest.of(ByteBuffer.wrap(
- new byte[] {1, 1, 1, 1} // garbage
- ));
- }
-
- /**
- * Ensure that header keys are converted to lower case, to facilitate
- * case-insensitive retrieval through {@link HttpRequest#getHeader(String)}.
- */
- @Test
- public void testOfConvertsHeaderKeysToLowerCase() {
-
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addHeader("TESTKEY", "unimportant");
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
-
- assertFalse(request.getHeaders().containsKey("TESTKEY"));
- assertTrue(request.getHeaders().containsKey("testkey"));
- }
-
- /**
- * Ensure that the case of any header values is correctly maintained.
- */
- @Test
- public void testOfMaintainsHeaderValueCase() {
-
- String expected = "vAlUe";
-
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addHeader("TESTKEY", expected);
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
-
- String actual = request.getHeader("TESTKEY");
- assertEquals(expected, actual);
- }
-
- /**
- * Ensure that case for any key passed to the method is unimportant
- * for its retrieval.
- */
- @Test
- public void testGetHeader() {
-
- String expected = "value";
-
- HttpRequestHelper helper = new HttpRequestHelper();
- helper.addHeader("TESTKEY", expected);
- HttpRequest request = HttpRequest.of(helper.getRequestAsByteBuffer());
-
- assertEquals(expected, request.getHeader("TESTKEY"));
- assertEquals(expected, request.getHeader("testkey"));
- }
-
- @Test
- public void testHttpRequestNoQueryString() {
- String requestLine = "GET /foobar HTTP/1.1 ";
- HttpRequest request = new HttpRequest(requestLine, new HashMap<String, String>());
- Assert.assertEquals("/foobar", request.getRequestedPath());
- }
-
- @Test
- public void testHttpRequestNullQueryString() {
- String requestLine = "GET /foobar? HTTP/1.1 ";
- HttpRequest request = new HttpRequest(requestLine, new HashMap<String, String>());
- Assert.assertEquals("/foobar", request.getRequestedPath());
- }
-
- @Test
- public void testHttpRequestNullQueryStringTrailingSlash() {
- String requestLine = "GET /foobar/? HTTP/1.1 ";
- HttpRequest request = new HttpRequest(requestLine, new HashMap<String, String>());
- Assert.assertEquals("/foobar/", request.getRequestedPath());
- }
-
- @Test
- public void testNoCookies() {
- HttpRequestHelper hrh = new HttpRequestHelper();
- HttpRequest hr = HttpRequest.of(hrh.getRequestAsByteBuffer());
- Assert.assertEquals(0, hr.getCookies().size());
- }
-
- @Test
- public void testOneCookie() {
- HttpRequestHelper hrh = new HttpRequestHelper();
- hrh.addHeader("Cookie", "one=value");
- HttpRequest hr = HttpRequest.of(hrh.getRequestAsByteBuffer());
- Assert.assertEquals("value",hr.getCookie("one"));
- }
-
- @Test
- public void testOneCookieWithoutValue() {
- HttpRequestHelper hrh = new HttpRequestHelper();
- hrh.addHeader("Cookie", "one=");
- HttpRequest hr = HttpRequest.of(hrh.getRequestAsByteBuffer());
- Assert.assertEquals("",hr.getCookie("one"));
- }
-
- @Test
- public void testMultipleCookies() {
- HttpRequestHelper hrh = new HttpRequestHelper();
- hrh.addHeader("Cookie", "one=value;two=value2");
- HttpRequest hr = HttpRequest.of(hrh.getRequestAsByteBuffer());
- Assert.assertEquals("value",hr.getCookie("one"));
- Assert.assertEquals("value2",hr.getCookie("two"));
- }
+ @Test
+ public void testDeserializeHttpGetRequest() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addHeader("Host", "127.0.0.1:8080");
+ helper.addHeader("User-Agent", "curl/7.19.5 (i386-apple-darwin10.0.0) libcurl/7.19.5 zlib/1.2.3");
+ helper.addHeader("Accept", "*/*");
+ ByteBuffer bb1 = helper.getRequestAsByteBuffer();
+
+ helper = new HttpRequestHelper();
+ helper.addHeader("Host", "127.0.0.1:8080");
+ helper.addHeader("User-Agent",
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; sv-SE; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
+ helper.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
+ helper.addHeader("Accept-Language", "sv-se,sv;q=0.8,en-us;q=0.5,en;q=0.3");
+ helper.addHeader("Accept-Encoding", "gzip,deflate");
+ helper.addHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
+ helper.addHeader("Keep-Alive", "115");
+ helper.addHeader("Connection", "keep-alve");
+ ByteBuffer bb2 = helper.getRequestAsByteBuffer();
+
+ HttpRequest request1 = HttpRequestImpl.of(bb1);
+ HttpRequest request2 = HttpRequestImpl.of(bb2);
+
+ assertEquals("GET / HTTP/1.1", request1.getRequestLine());
+ assertEquals("GET / HTTP/1.1", request2.getRequestLine());
+
+ assertEquals(4, request1.getHeaders().size());
+ assertEquals(9, request2.getHeaders().size());
+
+ List<String> expectedHeaderNamesInRequest1 = Arrays.asList(new String[] { "User-Agent", "Host", "Accept",
+ "From" });
+ for (String expectedHeaderName : expectedHeaderNamesInRequest1) {
+ assertTrue(request1.getHeaders().containsKey(expectedHeaderName.toLowerCase()));
+ }
+
+ List<String> expectedHeaderNamesInRequest2 = Arrays.asList(new String[] { "Host", "User-Agent", "Accept",
+ "From", "Accept-Language", "Accept-Encoding", "Accept-Charset", "Keep-Alive", "Connection" });
+ for (String expectedHeaderName : expectedHeaderNamesInRequest2) {
+ assertTrue(request2.getHeaders().containsKey(expectedHeaderName.toLowerCase()));
+ }
+
+ // TODO RS 100920 verify that the headers exist
+ }
+
+ public void testRemoveTrailingEmptyStrings() {
+ String fields1[] = new String[] { "a", "b", "c", "", "" };
+ String fields2[] = new String[] { "a", "b", "c" };
+
+ assertEquals(3, ArrayUtil.dropFromEndWhile(fields1, "").length);
+ assertEquals(3, ArrayUtil.dropFromEndWhile(fields2, "").length);
+ }
+
+ @Test
+ public void testSingleGetParameter() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("firstname", "jim");
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+
+ assertEquals(1, request.getParameters().size());
+ assertEquals("jim", request.getParameter("firstname"));
+ }
+
+ @Test
+ public void testMultipleGetParameter() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("firstname", "jim");
+ helper.addGetParameter("lastname", "petersson");
+ helper.addGetParameter("city", "stockholm");
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+
+ assertEquals(3, getSize(params));
+ assertEquals("jim", request.getParameter("firstname"));
+ assertEquals("petersson", request.getParameter("lastname"));
+ assertEquals("stockholm", request.getParameter("city"));
+ }
+
+ private int getSize(Map<String, Collection<String>> mmap) {
+ int size = 0;
+ for (Collection<String> values : mmap.values()) {
+ size += values.size();
+ }
+ return size;
+ }
+
+ @Test
+ public void testSingleParameterWithoutValue() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("firstname", null);
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+ assertEquals(0, getSize(params));
+ assertEquals(null, request.getParameter("firstname"));
+ }
+
+ @Test
+ public void testMultipleParametersWithoutValue() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("firstname", null);
+ helper.addGetParameter("lastName", "");
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+
+ assertEquals(0, getSize(params));
+ assertEquals(null, request.getParameter("firstname"));
+ assertEquals(null, request.getParameter("lastName"));
+ }
+
+ @Test
+ public void testMultipleParametersWithAndWithoutValue() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("firstname", null);
+ helper.addGetParameter("lastName", "petersson");
+ helper.addGetParameter("city", "");
+ helper.addGetParameter("phoneno", "12345");
+ helper.addGetParameter("age", "30");
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+
+ assertEquals(3, getSize(params));
+ assertEquals(null, request.getParameter("firstname"));
+ assertEquals("petersson", request.getParameter("lastName"));
+ assertEquals(null, request.getParameter("city"));
+ assertEquals("12345", request.getParameter("phoneno"));
+ assertEquals("30", request.getParameter("age"));
+ }
+
+ @Test
+ public void testSingleGetParameterMultipleValues() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("letters", "x");
+ helper.addGetParameter("letters", "y");
+ helper.addGetParameter("letters", "z");
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+
+ assertEquals(3, getSize(params));
+ Collection<String> values = params.get("letters");
+ assertEquals(3, values.size());
+ assertTrue(values.contains("x"));
+ assertTrue(values.contains("y"));
+ assertTrue(values.contains("z"));
+ }
+
+ @Test
+ public void testMultipleGetParametersMultipleValues() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("letters", "x");
+ helper.addGetParameter("letters", "y");
+ helper.addGetParameter("letters", "z");
+ helper.addGetParameter("numbers", "23");
+ helper.addGetParameter("numbers", "54");
+ helper.addGetParameter("country", "swe");
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+
+ assertEquals(6, getSize(params));
+ Collection<String> letters = params.get("letters");
+ Collection<String> numbers = params.get("numbers");
+ Collection<String> country = params.get("country");
+
+ assertEquals(3, letters.size());
+ assertEquals(2, numbers.size());
+ assertEquals(1, country.size());
+
+ assertTrue(letters.contains("x"));
+ assertTrue(letters.contains("y"));
+ assertTrue(letters.contains("z"));
+
+ assertTrue(numbers.contains("23"));
+ assertTrue(numbers.contains("54"));
+
+ assertTrue(country.contains("swe"));
+ }
+
+ @Test
+ public void testSingleGetParameterMultipleValuesIncludingNull() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("letters", "x");
+ helper.addGetParameter("letters", "y");
+ helper.addGetParameter("letters", null);
+ helper.addGetParameter("letters", "z");
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+
+ assertEquals(3, getSize(params));
+ Collection<String> values = params.get("letters");
+ assertEquals(3, values.size());
+ assertTrue(values.contains("x"));
+ assertTrue(values.contains("y"));
+ assertTrue(values.contains("z"));
+ }
+
+ @Test
+ public void testEmptyParameters() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+ assertNotNull(params);
+ assertEquals(0, getSize(params));
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void testImmutableParameters() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addGetParameter("letter", "x");
+
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ Map<String, Collection<String>> params = request.getParameters();
+ params.put("not", new ArrayList<String>());
+ }
+
+ @Test
+ public void testHostVerification_exists_HTTP_1_0() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.setVersion("1.0");
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ boolean requestOk = HttpUtil.verifyRequest(request);
+ assertTrue(requestOk);
+ }
+
+ @Test
+ public void testHostVerification_nonExisting_HTTP_1_0() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.setVersion("1.0");
+ helper.removeHeader("Host");
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ boolean requestOk = HttpUtil.verifyRequest(request);
+ assertTrue(requestOk);
+ }
+
+ @Test
+ public void testHostVerification_exists_HTTP_1_1() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ boolean requestOk = HttpUtil.verifyRequest(request);
+ assertTrue(requestOk);
+ }
+
+ @Test
+ public void testHostVerification_nonExisting_HTTP_1_1() {
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.removeHeader("Host");
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+ boolean requestOk = HttpUtil.verifyRequest(request);
+ assertFalse(requestOk);
+ }
+
+ @Test
+ public void testGarbageRequest() {
+ HttpRequestImpl.of(ByteBuffer.wrap(new byte[] { 1, 1, 1, 1 } // garbage
+ ));
+ }
+
+ /**
+ * Ensure that header keys are converted to lower case, to facilitate
+ * case-insensitive retrieval through
+ * {@link HttpRequestImpl#getHeader(String)}.
+ */
+ @Test
+ public void testOfConvertsHeaderKeysToLowerCase() {
+
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addHeader("TESTKEY", "unimportant");
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+
+ assertFalse(request.getHeaders().containsKey("TESTKEY"));
+ assertTrue(request.getHeaders().containsKey("testkey"));
+ }
+
+ /**
+ * Ensure that the case of any header values is correctly maintained.
+ */
+ @Test
+ public void testOfMaintainsHeaderValueCase() {
+
+ String expected = "vAlUe";
+
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addHeader("TESTKEY", expected);
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+
+ String actual = request.getHeader("TESTKEY");
+ assertEquals(expected, actual);
+ }
+
+ /**
+ * Ensure that case for any key passed to the method is unimportant for its
+ * retrieval.
+ */
+ @Test
+ public void testGetHeader() {
+
+ String expected = "value";
+
+ HttpRequestHelper helper = new HttpRequestHelper();
+ helper.addHeader("TESTKEY", expected);
+ HttpRequest request = HttpRequestImpl.of(helper.getRequestAsByteBuffer());
+
+ assertEquals(expected, request.getHeader("TESTKEY"));
+ assertEquals(expected, request.getHeader("testkey"));
+ }
+
+ @Test
+ public void testHttpRequestNoQueryString() {
+ String requestLine = "GET /foobar HTTP/1.1 ";
+ HttpRequest request = new HttpRequestImpl(requestLine, new HashMap<String, String>());
+ Assert.assertEquals("/foobar", request.getRequestedPath());
+ }
+
+ @Test
+ public void testHttpRequestNullQueryString() {
+ String requestLine = "GET /foobar? HTTP/1.1 ";
+ HttpRequest request = new HttpRequestImpl(requestLine, new HashMap<String, String>());
+ Assert.assertEquals("/foobar", request.getRequestedPath());
+ }
+
+ @Test
+ public void testHttpRequestNullQueryStringTrailingSlash() {
+ String requestLine = "GET /foobar/? HTTP/1.1 ";
+ HttpRequest request = new HttpRequestImpl(requestLine, new HashMap<String, String>());
+ Assert.assertEquals("/foobar/", request.getRequestedPath());
+ }
+
+ @Test
+ public void testNoCookies() {
+ HttpRequestHelper hrh = new HttpRequestHelper();
+ HttpRequest hr = HttpRequestImpl.of(hrh.getRequestAsByteBuffer());
+ Assert.assertEquals(0, hr.getCookies().size());
+ }
+
+ @Test
+ public void testOneCookie() {
+ HttpRequestHelper hrh = new HttpRequestHelper();
+ hrh.addHeader("Cookie", "one=value");
+ HttpRequest hr = HttpRequestImpl.of(hrh.getRequestAsByteBuffer());
+ Assert.assertEquals("value", hr.getCookie("one"));
+ }
+
+ @Test
+ public void testOneCookieWithoutValue() {
+ HttpRequestHelper hrh = new HttpRequestHelper();
+ hrh.addHeader("Cookie", "one=");
+ HttpRequest hr = HttpRequestImpl.of(hrh.getRequestAsByteBuffer());
+ Assert.assertEquals("", hr.getCookie("one"));
+ }
+
+ @Test
+ public void testMultipleCookies() {
+ HttpRequestHelper hrh = new HttpRequestHelper();
+ hrh.addHeader("Cookie", "one=value;two=value2");
+ HttpRequest hr = HttpRequestImpl.of(hrh.getRequestAsByteBuffer());
+ Assert.assertEquals("value", hr.getCookie("one"));
+ Assert.assertEquals("value2", hr.getCookie("two"));
+ }
}