olegk 2004/10/07 09:14:16 Modified: httpclient/src/java/org/apache/commons/httpclient HttpClient.java HttpMethod.java HttpMethodBase.java httpclient/src/test/org/apache/commons/httpclient TestMethodCharEncoding.java TestNoHost.java TestRequestHeaders.java TestRequestLine.java httpclient/src/test/org/apache/commons/httpclient/server SimpleHttpServer.java Added: httpclient/src/test/org/apache/commons/httpclient TestHttpMethodFundamentals.java TestPostMethod.java Removed: httpclient/src/test/org/apache/commons/httpclient TestHttpUrlMethod.java TestMethods.java TestMethodsNoHost.java Log: Changelog: * Minor corrective patch to the PR #31471 * Another round of test cases clean up Contributed by Oleg Kalnichevski Revision Changes Path 1.98 +7 -6 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpClient.java Index: HttpClient.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpClient.java,v retrieving revision 1.97 retrieving revision 1.98 diff -u -r1.97 -r1.98 --- HttpClient.java 6 Oct 2004 17:32:03 -0000 1.97 +++ HttpClient.java 7 Oct 2004 16:14:15 -0000 1.98 @@ -379,8 +379,9 @@ if (hostConfiguration == null || hostConfiguration == defaulthostconfig) { // make a deep copy of the host defaults hostConfiguration = new HostConfiguration(defaulthostconfig); - if (method.getHost() != null) { - hostConfiguration.setHost(method.getHost()); + URI uri = method.getURI(); + if (uri.isAbsoluteURI()) { + hostConfiguration.setHost(uri); } } 1.43 +4 -11 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethod.java Index: HttpMethod.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethod.java,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- HttpMethod.java 6 Oct 2004 17:32:03 -0000 1.42 +++ HttpMethod.java 7 Oct 2004 16:14:15 -0000 1.43 @@ -74,13 +74,6 @@ HostConfiguration getHostConfiguration(); /** - * Gets the target host for this method. - * - * @return the [EMAIL PROTECTED] HttpHost} or <code>null</code> if none is set - */ - HttpHost getHost(); - - /** * Sets the path of the HTTP method. * It is responsibility of the caller to ensure that the path is * properly encoded (URL safe). 1.218 +4 -8 jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java Index: HttpMethodBase.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v retrieving revision 1.217 retrieving revision 1.218 diff -u -r1.217 -r1.218 --- HttpMethodBase.java 6 Oct 2004 17:32:03 -0000 1.217 +++ HttpMethodBase.java 7 Oct 2004 16:14:15 -0000 1.218 @@ -2277,10 +2277,6 @@ } } - public HttpHost getHost() { - return this.httphost; - } - /** * Returns the [EMAIL PROTECTED] HostConfiguration host configuration}. * 1.11 +25 -33 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestMethodCharEncoding.java Index: TestMethodCharEncoding.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestMethodCharEncoding.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- TestMethodCharEncoding.java 3 Jul 2004 14:27:03 -0000 1.10 +++ TestMethodCharEncoding.java 7 Oct 2004 16:14:15 -0000 1.11 @@ -28,7 +28,6 @@ package org.apache.commons.httpclient; import junit.framework.Test; -import junit.framework.TestCase; import junit.framework.TestSuite; import java.io.ByteArrayInputStream; @@ -51,7 +50,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Laura Werner</a> */ -public class TestMethodCharEncoding extends TestCase { +public class TestMethodCharEncoding extends HttpClientTestBase { static final String CHARSET_DEFAULT = "ISO-8859-1"; static final String CHARSET_ASCII = "US-ASCII"; @@ -119,40 +118,33 @@ } - public void testResponseCharEncoding() throws Exception { + public void testNoExplicitCharEncoding() throws Exception { + this.server.setHttpService(new EchoService()); - SimpleHttpConnection conn = new SimpleHttpConnection(); - String body = "stuff"; - String headers1 = "HTTP/1.1 200 OK\r\n" - +"Content-Length: 5\r\n"; - conn.addResponse(headers1, body); - conn.open(); - GetMethod httpget = new GetMethod("/"); - httpget.execute(new HttpState(), conn); - assertEquals(CHARSET_DEFAULT, httpget.getResponseCharSet()); - conn.close(); - - httpget = new GetMethod("/"); - String headers2 = "HTTP/1.1 200 OK\r\n" - +"Content-Type: text/plain\r\n" - +"Content-Length: 5\r\n"; - conn.addResponse(headers2, body); - conn.open(); - httpget.execute(new HttpState(), conn); - assertEquals(CHARSET_DEFAULT, httpget.getResponseCharSet()); - conn.close(); - - httpget = new GetMethod("/"); - String headers3 = "HTTP/1.1 200 OK\r\n" - +"Content-Type: text/plain; charset=" + CHARSET_UTF8 + "\r\n" - +"Content-Length: 5\r\n"; - conn.addResponse(headers3, body); - conn.open(); - httpget.execute(new HttpState(), conn); - assertEquals(CHARSET_UTF8, httpget.getResponseCharSet()); - conn.close(); + GetMethod httpget = new GetMethod("/test/"); + httpget.setRequestHeader("Content-Type", "text/plain"); + try { + this.client.executeMethod(httpget); + assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); + assertEquals(CHARSET_DEFAULT, httpget.getResponseCharSet()); + } finally { + httpget.releaseConnection(); + } } + public void testExplicitCharEncoding() throws Exception { + this.server.setHttpService(new EchoService()); + + GetMethod httpget = new GetMethod("/test/"); + httpget.setRequestHeader("Content-Type", "text/plain; charset=" + CHARSET_UTF8); + try { + this.client.executeMethod(httpget); + assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); + assertEquals(CHARSET_UTF8, httpget.getResponseCharSet()); + } finally { + httpget.releaseConnection(); + } + } private String constructString(int [] unicodeChars) { StringBuffer buffer = new StringBuffer(); 1.43 +32 -26 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestNoHost.java Index: TestNoHost.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestNoHost.java,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- TestNoHost.java 6 Oct 2004 17:32:04 -0000 1.42 +++ TestNoHost.java 7 Oct 2004 16:14:15 -0000 1.43 @@ -23,9 +23,6 @@ * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. - * - * [Additional notices, if required by prior licensing conditions] - * */ package org.apache.commons.httpclient; @@ -58,40 +55,49 @@ public static Test suite() { TestSuite suite = new TestSuite(); + // Fundamentals + suite.addTest(TestHttpMethodFundamentals.suite()); suite.addTest(TestHttpStatus.suite()); - suite.addTest(TestCookieAll.suite()); - suite.addTest(TestNVP.suite()); + suite.addTest(TestStatusLine.suite()); + suite.addTest(TestRequestLine.suite()); suite.addTest(TestHeader.suite()); - suite.addTest(TestParameterParser.suite()); suite.addTest(TestHeaderElement.suite()); - suite.addTest(TestChallengeParser.suite()); - suite.addTest(TestChallengeProcessor.suite()); - suite.addTest(TestAuthenticator.suite()); - suite.addTest(TestBasicAuth.suite()); - suite.addTest(TestRedirects.suite()); - suite.addTest(TestHttpUrlMethod.suite()); - suite.addTest(TestURI.suite()); - suite.addTest(TestURIUtil.suite()); - suite.addTest(TestURIUtil2.suite()); - suite.addTest(TestMethodsNoHost.suite()); - suite.addTest(TestHttpState.suite()); suite.addTest(TestResponseHeaders.suite()); suite.addTest(TestRequestHeaders.suite()); suite.addTest(TestStreams.suite()); - suite.addTest(TestStatusLine.suite()); - suite.addTest(TestRequestLine.suite()); - suite.addTest(TestPartsNoHost.suite()); + suite.addTest(TestParameterParser.suite()); + suite.addTest(TestNVP.suite()); suite.addTest(TestMethodCharEncoding.suite()); - suite.addTest(TestExceptions.suite()); suite.addTest(TestHttpVersion.suite()); suite.addTest(TestEffectiveHttpVersion.suite()); suite.addTest(TestHttpParser.suite()); suite.addTest(TestBadContentLength.suite()); suite.addTest(TestEquals.suite()); + // Exceptions + suite.addTest(TestExceptions.suite()); + // HTTP state management + suite.addTest(TestHttpState.suite()); + suite.addTest(TestCookieAll.suite()); + // Authentication + suite.addTest(TestChallengeParser.suite()); + suite.addTest(TestChallengeProcessor.suite()); + suite.addTest(TestAuthenticator.suite()); + suite.addTest(TestBasicAuth.suite()); + // Redirects + suite.addTest(TestRedirects.suite()); + // Connection management suite.addTestSuite(TestIdleConnectionTimeout.class); suite.addTest(TestMethodAbort.suite()); + // Preferences suite.addTest(TestHttpParams.suite()); - suite.addTest(TestVirtualHost.suite()); + suite.addTest(TestVirtualHost.suite()); + // URIs + suite.addTest(TestURI.suite()); + suite.addTest(TestURIUtil.suite()); + suite.addTest(TestURIUtil2.suite()); + // Method specific + suite.addTest(TestPostMethod.suite()); + suite.addTest(TestPartsNoHost.suite()); suite.addTest(TestMultipartPost.suite()); return suite; } 1.7 +32 -35 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestRequestHeaders.java Index: TestRequestHeaders.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestRequestHeaders.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- TestRequestHeaders.java 22 Feb 2004 18:08:49 -0000 1.6 +++ TestRequestHeaders.java 7 Oct 2004 16:14:15 -0000 1.7 @@ -30,6 +30,8 @@ package org.apache.commons.httpclient; +import org.apache.commons.httpclient.protocol.Protocol; + import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; @@ -42,10 +44,6 @@ */ public class TestRequestHeaders extends TestCase { - HttpState state = null; - SimpleHttpMethod method = null; - HttpConnection conn = null; - // ------------------------------------------------------------ Constructor public TestRequestHeaders(String testName) { super(testName); @@ -62,49 +60,48 @@ return new TestSuite(TestRequestHeaders.class); } - public void setUp() { - state = new HttpState(); - method = new SimpleHttpMethod("/some/absolute/path/"); - //assign conn in test case - } - - public void tearDown() { - state = null; - method = null; - conn = null; - } - public void testNullHeader() throws Exception { - conn = new SimpleHttpConnection("some.host.name", 80, "http"); - assertEquals(null, method.getRequestHeader(null)); - assertEquals(null, method.getRequestHeader("bogus")); + SimpleHttpMethod method = new SimpleHttpMethod(); + assertEquals(null, method.getRequestHeader(null)); + assertEquals(null, method.getRequestHeader("bogus")); } public void testHostHeaderPortHTTP80() throws Exception { - conn = new SimpleHttpConnection("some.host.name", 80, "http"); - method.addRequestHeaders(state, conn); - assertEquals("Host: some.host.name", method.getRequestHeader("Host").toString().trim()); + HttpConnection conn = new HttpConnection("some.host.name", 80); + HttpState state = new HttpState(); + SimpleHttpMethod method = new SimpleHttpMethod(); + method.addRequestHeaders(state, conn); + assertEquals("Host: some.host.name", method.getRequestHeader("Host").toString().trim()); } public void testHostHeaderPortHTTP81() throws Exception { - conn = new SimpleHttpConnection("some.host.name", 81, "http"); - method.addRequestHeaders(state, conn); - assertEquals("Host: some.host.name:81", method.getRequestHeader("Host").toString().trim()); + HttpConnection conn = new HttpConnection("some.host.name", 81); + HttpState state = new HttpState(); + SimpleHttpMethod method = new SimpleHttpMethod(); + method.addRequestHeaders(state, conn); + assertEquals("Host: some.host.name:81", method.getRequestHeader("Host").toString().trim()); } public void testHostHeaderPortHTTPS443() throws Exception { - conn = new SimpleHttpConnection("some.host.name", 443, "https"); - method.addRequestHeaders(state, conn); - assertEquals("Host: some.host.name", method.getRequestHeader("Host").toString().trim()); + HttpConnection conn = new HttpConnection("some.host.name", 443, + Protocol.getProtocol("https")); + HttpState state = new HttpState(); + SimpleHttpMethod method = new SimpleHttpMethod(); + method.addRequestHeaders(state, conn); + assertEquals("Host: some.host.name", method.getRequestHeader("Host").toString().trim()); } public void testHostHeaderPortHTTPS444() throws Exception { - conn = new SimpleHttpConnection("some.host.name", 444, "https"); - method.addRequestHeaders(state, conn); - assertEquals("Host: some.host.name:444", method.getRequestHeader("Host").toString().trim()); + HttpConnection conn = new HttpConnection("some.host.name", 444, + Protocol.getProtocol("https")); + HttpState state = new HttpState(); + SimpleHttpMethod method = new SimpleHttpMethod(); + method.addRequestHeaders(state, conn); + assertEquals("Host: some.host.name:444", method.getRequestHeader("Host").toString().trim()); } public void testHeadersPreserveCaseKeyIgnoresCase() throws Exception { + SimpleHttpMethod method = new SimpleHttpMethod(); method.addRequestHeader(new Header("NAME", "VALUE")); Header upHeader = method.getRequestHeader("NAME"); Header loHeader = method.getRequestHeader("name"); 1.5 +13 -26 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestRequestLine.java Index: TestRequestLine.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestRequestLine.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TestRequestLine.java 22 Feb 2004 18:08:49 -0000 1.4 +++ TestRequestLine.java 7 Oct 2004 16:14:15 -0000 1.5 @@ -20,9 +20,6 @@ * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. - * - * [Additional notices, if required by prior licensing conditions] - * */ package org.apache.commons.httpclient; @@ -64,18 +61,14 @@ // ----------------------------------------------------------- Test Methods public void testRequestLineGeneral() throws Exception { - SimpleHttpConnection conn = null; - SimpleHttpMethod method = null; - - conn = new SimpleHttpConnection(null, -1, "localhost", null, 80, Protocol.getProtocol("http")); - - method = new SimpleHttpMethod(); + HttpConnection conn = new HttpConnection("localhost", 80); + SimpleHttpMethod method = new SimpleHttpMethod(); assertEquals("Simple / HTTP/1.1\r\n", method.getTestRequestLine(conn)); method = new SimpleHttpMethod("stuff"); assertEquals("Simple stuff HTTP/1.1\r\n", method.getTestRequestLine(conn)); - conn = new SimpleHttpConnection("proxy", 8080, "localhost", null, 80, Protocol.getProtocol("http")); + conn = new HttpConnection("proxy", 8080, "localhost", 80, Protocol.getProtocol("http")); method = new SimpleHttpMethod(); assertEquals("Simple http://localhost/ HTTP/1.1\r\n", method.getTestRequestLine(conn)); @@ -83,7 +76,7 @@ method = new SimpleHttpMethod("stuff"); assertEquals("Simple http://localhost/stuff HTTP/1.1\r\n", method.getTestRequestLine(conn)); - conn = new SimpleHttpConnection("proxy", 8080, "localhost", null, -1, Protocol.getProtocol("http")); + conn = new HttpConnection("proxy", 8080, "localhost", -1, Protocol.getProtocol("http")); method = new SimpleHttpMethod(); assertEquals("Simple http://localhost/ HTTP/1.1\r\n", method.getTestRequestLine(conn)); @@ -91,7 +84,7 @@ method = new SimpleHttpMethod("stuff"); assertEquals("Simple http://localhost/stuff HTTP/1.1\r\n", method.getTestRequestLine(conn)); - conn = new SimpleHttpConnection("proxy", 8080, "localhost", null, 666, Protocol.getProtocol("http")); + conn = new HttpConnection("proxy", 8080, "localhost", 666, Protocol.getProtocol("http")); method = new SimpleHttpMethod(); assertEquals("Simple http://localhost:666/ HTTP/1.1\r\n", method.getTestRequestLine(conn)); @@ -101,33 +94,27 @@ } public void testRequestLineQuery() throws Exception { - SimpleHttpConnection conn = null; - SimpleHttpMethod method = null; - - conn = new SimpleHttpConnection(null, -1, "localhost", null, 80, Protocol.getProtocol("http")); + HttpConnection conn = new HttpConnection("localhost", 80); - method = new SimpleHttpMethod(); + SimpleHttpMethod method = new SimpleHttpMethod(); method.setQueryString( new NameValuePair[] { new NameValuePair("param1", " !#$%&\'()*+,-./:;<=>[EMAIL PROTECTED]|}~"), new NameValuePair("param2", "some stuff") } ); assertEquals("Simple /?param1=+%21%23%24%25%26%27%28%29*%2B%2C-.%2F%3A%3B%3C%3D%3E%3F%40%5B%5C%5D%5E_%60%7B%7C%7D%7E¶m2=some+stuff HTTP/1.1\r\n", - method.getTestRequestLine(conn)); + method.getTestRequestLine(conn)); } public void testRequestLinePath() throws Exception { - SimpleHttpConnection conn = null; - SimpleHttpMethod method = null; - - conn = new SimpleHttpConnection(null, -1, "localhost", null, 80, Protocol.getProtocol("http")); + HttpConnection conn = new HttpConnection("localhost", 80); - method = new SimpleHttpMethod(); + SimpleHttpMethod method = new SimpleHttpMethod(); method.setPath("/some%20stuff/"); assertEquals("Simple /some%20stuff/ HTTP/1.1\r\n", - method.getTestRequestLine(conn)); + method.getTestRequestLine(conn)); method = new SimpleHttpMethod("/some%20stuff/"); assertEquals("Simple /some%20stuff/ HTTP/1.1\r\n", - method.getTestRequestLine(conn)); + method.getTestRequestLine(conn)); } } 1.1 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestHttpMethodFundamentals.java Index: TestHttpMethodFundamentals.java =================================================================== /* * $Header: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestHttpMethodFundamentals.java,v 1.1 2004/10/07 16:14:15 olegk Exp $ * $Revision: 1.1 $ * $Date: 2004/10/07 16:14:15 $ * ==================================================================== * * Copyright 1999-2004 The Apache Software Foundation * * Licensed 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. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.commons.httpclient; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.server.HttpService; import org.apache.commons.httpclient.server.SimpleRequest; import org.apache.commons.httpclient.server.SimpleResponse; import junit.framework.Test; import junit.framework.TestSuite; /** * Tests basic method functionality. * * @author Remy Maucherat * @author Rodney Waldhoff * @author Oleg Kalnichevski * * @version $Id: TestHttpMethodFundamentals.java,v 1.1 2004/10/07 16:14:15 olegk Exp $ */ public class TestHttpMethodFundamentals extends HttpClientTestBase { public TestHttpMethodFundamentals(String testName) { super(testName); } public static Test suite() { return new TestSuite(TestHttpMethodFundamentals.class); } public static void main(String args[]) { String[] testCaseName = { TestHttpMethodFundamentals.class.getName() }; junit.textui.TestRunner.main(testCaseName); } class ManyAService implements HttpService { public ManyAService() { super(); } public boolean process(final SimpleRequest request, final SimpleResponse response) throws IOException { HttpVersion httpversion = request.getRequestLine().getHttpVersion(); response.setStatusLine(httpversion, HttpStatus.SC_OK); response.addHeader(new Header("Content-Type", "text/plain")); response.addHeader(new Header("Connection", "close")); StringBuffer buffer = new StringBuffer(1024); for (int i = 0; i < 1024; i++) { buffer.append('A'); } response.setBodyString(buffer.toString()); return true; } } class SimpleChunkedService implements HttpService { public SimpleChunkedService() { super(); } public boolean process(final SimpleRequest request, final SimpleResponse response) throws IOException { HttpVersion httpversion = request.getRequestLine().getHttpVersion(); response.setStatusLine(httpversion, HttpStatus.SC_OK); response.addHeader(new Header("Content-Type", "text/plain")); response.addHeader(new Header("Content-Length", "garbage")); response.addHeader(new Header("Transfer-Encoding", "chunked")); response.addHeader(new Header("Connection", "close")); response.setBodyString("0a\r\n1234567890\r\n3\r\n123\r\n0\r\n"); return true; } } class EmptyResponseService implements HttpService { public EmptyResponseService() { super(); } public boolean process(final SimpleRequest request, final SimpleResponse response) throws IOException { HttpVersion httpversion = request.getRequestLine().getHttpVersion(); response.setStatusLine(httpversion, HttpStatus.SC_OK); response.addHeader(new Header("Content-Type", "text/plain")); response.addHeader(new Header("Transfer-Encoding", "chunked")); response.addHeader(new Header("Connection", "close")); response.setBodyString(null); return true; } } public void testRelativeURLHitWithDefaultHost() throws IOException { this.server.setHttpService(new EchoService()); // Set default host this.client.getHostConfiguration().setHost( this.server.getLocalAddress(), this.server.getLocalPort(), Protocol.getProtocol("http")); GetMethod httpget = new GetMethod("/test/"); try { this.client.executeMethod(httpget); assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); } finally { httpget.releaseConnection(); } } public void testRelativeURLHitWithoutDefaultHost() throws IOException { this.server.setHttpService(new EchoService()); // reset default host configuration this.client.setHostConfiguration(new HostConfiguration()); GetMethod httpget = new GetMethod("/test/"); try { this.client.executeMethod(httpget); fail("IllegalArgumentException should have been thrown"); } catch (IllegalArgumentException expected) { } finally { httpget.releaseConnection(); } } public void testAbsoluteURLHitWithoutDefaultHost() throws IOException { this.server.setHttpService(new EchoService()); // reset default host configuration this.client.setHostConfiguration(new HostConfiguration()); GetMethod httpget = new GetMethod("http://" + this.server.getLocalAddress() + ":" + this.server.getLocalPort() + "/test/"); try { this.client.executeMethod(httpget); assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); } finally { httpget.releaseConnection(); } } public void testAbsoluteURLHitWithDefaultHost() throws IOException { this.server.setHttpService(new EchoService()); // Somewhere out there in pampa this.client.getHostConfiguration().setHost( "somewhere.in.pampa", 9999, Protocol.getProtocol("http")); GetMethod httpget = new GetMethod("http://" + this.server.getLocalAddress() + ":" + this.server.getLocalPort() + "/test/"); try { this.client.executeMethod(httpget); assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); } finally { httpget.releaseConnection(); } } public void testHttpMethodBasePaths() throws Exception { HttpMethod simple = new SimpleHttpMethod(); String[] paths = { "/some/absolute/path", "../some/relative/path", "/", "/some/path/with?query=string" }; for (int i=0; i<paths.length; i++){ simple.setPath(paths[i]); assertEquals(paths[i], simple.getPath()); } } public void testHttpMethodBaseDefaultPath() throws Exception { HttpMethod simple = new SimpleHttpMethod(); assertEquals("/", simple.getPath()); simple.setPath(""); assertEquals("/", simple.getPath()); simple.setPath(null); assertEquals("/", simple.getPath()); } public void testHttpMethodBasePathConstructor() throws Exception { HttpMethod simple = new SimpleHttpMethod(); assertEquals("/", simple.getPath()); simple = new SimpleHttpMethod(""); assertEquals("/", simple.getPath()); simple = new SimpleHttpMethod("/some/path/"); assertEquals("/some/path/", simple.getPath()); } /** * Tests response with a Trasfer-Encoding and Content-Length */ public void testHttpMethodBaseTEandCL() throws Exception { this.server.setHttpService(new SimpleChunkedService()); GetMethod httpget = new GetMethod("/test/"); try { this.client.executeMethod(httpget); assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); assertEquals("1234567890123", httpget.getResponseBodyAsString()); assertTrue(this.client.getHttpConnectionManager() instanceof SimpleHttpConnectionManager); HttpConnection conn = this.client.getHttpConnectionManager(). getConnection(this.client.getHostConfiguration()); assertNotNull(conn); conn.assertNotOpen(); } finally { httpget.releaseConnection(); } } public void testConnectionAutoClose() throws Exception { this.server.setHttpService(new ManyAService()); GetMethod httpget = new GetMethod("/test/"); try { this.client.executeMethod(httpget); assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); Reader response = new InputStreamReader(httpget.getResponseBodyAsStream()); int c; while ((c = response.read()) != -1) { assertEquals((int) 'A', c); } assertTrue(this.client.getHttpConnectionManager() instanceof SimpleHttpConnectionManager); HttpConnection conn = this.client.getHttpConnectionManager(). getConnection(this.client.getHostConfiguration()); assertNotNull(conn); conn.assertNotOpen(); } finally { httpget.releaseConnection(); } } public void testSetGetQueryString1() { HttpMethod method = new GetMethod(); String qs1 = "name1=value1&name2=value2"; method.setQueryString(qs1); assertEquals(qs1, method.getQueryString()); } public void testQueryURIEncoding() { HttpMethod method = new GetMethod("http://server/servlet?foo=bar&baz=schmoo"); assertEquals("foo=bar&baz=schmoo", method.getQueryString()); } public void testSetGetQueryString2() { HttpMethod method = new GetMethod(); NameValuePair[] q1 = new NameValuePair[] { new NameValuePair("name1", "value1"), new NameValuePair("name2", "value2") }; method.setQueryString(q1); String qs1 = "name1=value1&name2=value2"; assertEquals(qs1, method.getQueryString()); } /** * Make sure that its OK to call releaseConnection if the connection has not been. */ public void testReleaseConnection() { HttpMethod method = new GetMethod("http://bogus.url/path/"); method.releaseConnection(); } /** * Tests empty body response */ public void testEmptyBodyAsString() throws Exception { this.server.setHttpService(new EmptyResponseService()); GetMethod httpget = new GetMethod("/test/"); try { this.client.executeMethod(httpget); assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); String response = httpget.getResponseBodyAsString(); assertNull(response); } finally { httpget.releaseConnection(); } } public void testEmptyBodyAsByteArray() throws Exception { this.server.setHttpService(new EmptyResponseService()); GetMethod httpget = new GetMethod("/test/"); try { this.client.executeMethod(httpget); assertEquals(HttpStatus.SC_OK, httpget.getStatusCode()); byte[] response = httpget.getResponseBody(); assertNull(response); } finally { httpget.releaseConnection(); } } public void testUrlGetMethodWithPathQuery() { GetMethod method = new GetMethod("http://www.fubar.com/path1/path2?query=string"); try { assertEquals( "Get URL", "http://www.fubar.com/path1/path2?query=string", method.getURI().toString() ); } catch ( URIException e ) { fail( "trouble getting URI: " + e ); } assertEquals("Get Path", "/path1/path2", method.getPath()); assertEquals("Get query string", "query=string", method.getQueryString()); } public void testUrlGetMethodWithPath() { GetMethod method = new GetMethod("http://www.fubar.com/path1/path2"); try { assertEquals( "Get URL", "http://www.fubar.com/path1/path2", method.getURI().toString() ); } catch ( URIException e ) { fail( "trouble getting URI: " + e ); } assertEquals("Get Path", "/path1/path2", method.getPath()); assertEquals("Get query string", null, method.getQueryString()); } public void testUrlGetMethod() { GetMethod method = new GetMethod("http://www.fubar.com/"); try { assertEquals( "Get URL", "http://www.fubar.com/", method.getURI().toString() ); } catch ( URIException e ) { fail( "trouble getting URI: " + e ); } assertEquals("Get Path", "/", method.getPath()); assertEquals("Get query string", null, method.getQueryString()); } public void testUrlGetMethodWithInvalidProtocol() { try { GetMethod method = new GetMethod("crap://www.fubar.com/"); fail("The use of invalid protocol must have resulted in an IllegalStateException"); } catch(IllegalStateException expected) { } } } 1.1 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestPostMethod.java Index: TestPostMethod.java =================================================================== /* * $Header: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestPostMethod.java,v 1.1 2004/10/07 16:14:15 olegk Exp $ * $Revision: 1.1 $ * $Date: 2004/10/07 16:14:15 $ * ==================================================================== * * Copyright 1999-2004 The Apache Software Foundation * * Licensed 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. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * [Additional notices, if required by prior licensing conditions] * */ package org.apache.commons.httpclient; import java.io.ByteArrayOutputStream; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.httpclient.methods.StringRequestEntity; import junit.framework.Test; import junit.framework.TestSuite; /** * Tests basic method functionality. * * @author Remy Maucherat * @author Rodney Waldhoff * * @version $Id: TestPostMethod.java,v 1.1 2004/10/07 16:14:15 olegk Exp $ */ public class TestPostMethod extends HttpClientTestBase { static final String NAME = "name", VALUE = "value"; static final String NAME0 = "name0", VALUE0 = "value0"; static final String NAME1 = "name1", VALUE1 = "value1"; static final String NAME2 = "name2", VALUE2 = "value2"; static final NameValuePair PAIR = new NameValuePair(NAME, VALUE); static final NameValuePair PAIR0 = new NameValuePair(NAME0, VALUE0); static final NameValuePair PAIR1 = new NameValuePair(NAME1, VALUE1); static final NameValuePair PAIR2 = new NameValuePair(NAME2, VALUE2); public TestPostMethod(String testName) { super(testName); } public static Test suite() { return new TestSuite(TestPostMethod.class); } public static void main(String args[]) { String[] testCaseName = { TestPostMethod.class.getName() }; junit.textui.TestRunner.main(testCaseName); } private String getRequestAsString(RequestEntity entity) throws Exception { ByteArrayOutputStream bos = new ByteArrayOutputStream(); entity.writeRequest(bos); return new String(bos.toByteArray(), "UTF-8"); } public void testPostParametersEncoding() throws Exception { PostMethod post = new PostMethod(); post.setRequestBody(new NameValuePair[] { PAIR }); assertEquals("name=value", getRequestAsString(post.getRequestEntity())); post.setRequestBody(new NameValuePair[]{ PAIR, PAIR1, PAIR2 }); assertEquals("name=value&name1=value1&name2=value2", getRequestAsString(post.getRequestEntity())); post.setRequestBody(new NameValuePair[]{ PAIR, PAIR1, PAIR2, new NameValuePair("hasSpace", "a b c d") }); assertEquals("name=value&name1=value1&name2=value2&hasSpace=a+b+c+d", getRequestAsString(post.getRequestEntity())); } public void testPostSetRequestBody() throws Exception { PostMethod post = new PostMethod("/foo"); String body = "this+is+the+body"; post.setRequestEntity(new StringRequestEntity(body)); assertEquals(body, getRequestAsString(post.getRequestEntity())); } } 1.7 +7 -7 jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/SimpleHttpServer.java Index: SimpleHttpServer.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/server/SimpleHttpServer.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- SimpleHttpServer.java 11 May 2004 20:43:55 -0000 1.6 +++ SimpleHttpServer.java 7 Oct 2004 16:14:16 -0000 1.7 @@ -80,8 +80,8 @@ */ public SimpleHttpServer(int port) throws IOException { server = new ServerSocket(port); - if(LOG.isInfoEnabled()) { - LOG.info("New SimpleHttpServer on port " + getLocalPort()); + if(LOG.isDebugEnabled()) { + LOG.debug("Starting test HTTP server on port " + getLocalPort()); } tg = new ThreadGroup("SimpleHttpServer group"); t = new Thread(tg, this, "SimpleHttpServer connection handler"); @@ -137,8 +137,8 @@ } stopped = true; - if(LOG.isInfoEnabled()) { - LOG.info("Stopping SimpleHttpServer on port " + getLocalPort()); + if(LOG.isDebugEnabled()) { + LOG.debug("Stopping test HTTP server on port " + getLocalPort()); } tg.interrupt();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]