1 29 30 package org.apache.commons.httpclient.params; 31 32 import java.io.IOException ; 33 34 import junit.framework.Test; 35 import junit.framework.TestSuite; 36 37 import org.apache.commons.httpclient.FeedbackService; 38 import org.apache.commons.httpclient.Header; 39 import org.apache.commons.httpclient.HttpClientTestBase; 40 import org.apache.commons.httpclient.HttpStatus; 41 import org.apache.commons.httpclient.HttpVersion; 42 import org.apache.commons.httpclient.methods.GetMethod; 43 import org.apache.commons.httpclient.server.HttpRequestHandler; 44 import org.apache.commons.httpclient.server.SimpleHttpServerConnection; 45 import org.apache.commons.httpclient.server.SimpleRequest; 46 import org.apache.commons.httpclient.server.SimpleResponse; 47 48 55 public class TestSSLTunnelParams extends HttpClientTestBase { 56 57 public TestSSLTunnelParams(final String testName) throws IOException { 59 super(testName); 60 setUseProxy(true); 61 setUseSSL(true); 62 } 63 64 public static void main(String args[]) { 66 String [] testCaseName = { TestSSLTunnelParams.class.getName() }; 67 junit.textui.TestRunner.main(testCaseName); 68 } 69 70 72 public static Test suite() { 73 TestSuite suite = new TestSuite(TestSSLTunnelParams.class); 74 return suite; 75 } 76 77 78 static class HttpVersionHandler implements HttpRequestHandler { 79 80 public HttpVersionHandler() { 81 super(); 82 } 83 84 public boolean processRequest( 85 final SimpleHttpServerConnection conn, 86 final SimpleRequest request) throws IOException 87 { 88 HttpVersion ver = request.getRequestLine().getHttpVersion(); 89 if (ver.equals(HttpVersion.HTTP_1_0)) { 90 return false; 91 } else { 92 SimpleResponse response = new SimpleResponse(); 93 response.setStatusLine(ver, HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED); 94 response.addHeader(new Header("Proxy-Connection", "close")); 95 conn.setKeepAlive(false); 96 request.getBodyBytes(); 98 conn.writeResponse(response); 99 return true; 100 } 101 } 102 103 } 104 105 109 public void testTunnellingParamsAgentLevel() throws IOException { 110 this.proxy.addHandler(new HttpVersionHandler()); 111 this.server.setHttpService(new FeedbackService()); 112 113 this.client.getParams().setVersion(HttpVersion.HTTP_1_1); 114 GetMethod httpget = new GetMethod("/test/"); 115 try { 116 this.client.executeMethod(httpget); 117 assertNotNull(httpget.getStatusLine()); 118 assertEquals(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED, 119 httpget.getStatusLine().getStatusCode()); 120 } finally { 121 httpget.releaseConnection(); 122 } 123 124 this.client.getParams().setVersion(HttpVersion.HTTP_1_0); 125 httpget = new GetMethod("/test/"); 126 try { 127 this.client.executeMethod(httpget); 128 assertNotNull(httpget.getStatusLine()); 129 assertEquals(HttpStatus.SC_OK, 130 httpget.getStatusLine().getStatusCode()); 131 } finally { 132 httpget.releaseConnection(); 133 } 134 } 135 136 140 public void testTunnellingParamsHostLevel() throws IOException { 141 this.proxy.addHandler(new HttpVersionHandler()); 142 this.server.setHttpService(new FeedbackService()); 143 144 this.client.getHostConfiguration().getParams().setParameter( 145 HttpMethodParams.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 146 GetMethod httpget = new GetMethod("/test/"); 147 try { 148 this.client.executeMethod(httpget); 149 assertNotNull(httpget.getStatusLine()); 150 assertEquals(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED, 151 httpget.getStatusLine().getStatusCode()); 152 } finally { 153 httpget.releaseConnection(); 154 } 155 156 this.client.getHostConfiguration().getParams().setParameter( 157 HttpMethodParams.PROTOCOL_VERSION, HttpVersion.HTTP_1_0); 158 httpget = new GetMethod("/test/"); 159 try { 160 this.client.executeMethod(httpget); 161 assertNotNull(httpget.getStatusLine()); 162 assertEquals(HttpStatus.SC_OK, 163 httpget.getStatusLine().getStatusCode()); 164 } finally { 165 httpget.releaseConnection(); 166 } 167 } 168 169 173 public void testTunnellingParamsHostHTTP10AndMethodHTTP11() throws IOException { 174 this.proxy.addHandler(new HttpVersionHandler()); 175 this.server.setHttpService(new FeedbackService()); 176 177 this.client.getHostConfiguration().getParams().setParameter( 178 HttpMethodParams.PROTOCOL_VERSION, HttpVersion.HTTP_1_0); 179 GetMethod httpget = new GetMethod("/test/"); 180 httpget.getParams().setVersion(HttpVersion.HTTP_1_1); 181 try { 182 this.client.executeMethod(httpget); 183 assertNotNull(httpget.getStatusLine()); 184 assertEquals(HttpStatus.SC_OK, 185 httpget.getStatusLine().getStatusCode()); 186 assertEquals(HttpVersion.HTTP_1_1, 187 httpget.getEffectiveVersion()); 188 } finally { 189 httpget.releaseConnection(); 190 } 191 } 192 } 193 | Popular Tags |