KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > httpclient > TestProxyWithRedirect


1 /*
2  * $HeadURL: https://svn.apache.org/repos/asf/jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/TestProxyWithRedirect.java $
3  * $Revision: 480424 $
4  * $Date: 2006-11-29 05:56:49 +0000 (Wed, 29 Nov 2006) $
5  * ====================================================================
6  *
7  * Licensed to the Apache Software Foundation (ASF) under one or more
8  * contributor license agreements. See the NOTICE file distributed with
9  * this work for additional information regarding copyright ownership.
10  * The ASF licenses this file to You under the Apache License, Version 2.0
11  * (the "License"); you may not use this file except in compliance with
12  * the License. You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  * ====================================================================
22  *
23  * This software consists of voluntary contributions made by many
24  * individuals on behalf of the Apache Software Foundation. For more
25  * information on the Apache Software Foundation, please see
26  * <http://www.apache.org/>.
27  *
28  */

29 package org.apache.commons.httpclient;
30
31 import java.io.IOException JavaDoc;
32
33 import junit.framework.Test;
34 import junit.framework.TestSuite;
35
36 import org.apache.commons.httpclient.auth.AuthScope;
37 import org.apache.commons.httpclient.methods.GetMethod;
38 import org.apache.commons.httpclient.server.RequestLine;
39 import org.apache.commons.httpclient.server.SimpleRequest;
40 import org.apache.commons.httpclient.server.SimpleResponse;
41
42 /**
43  * Tests for proxied connections.
44  *
45  * @author Ortwin Glueck
46  * @author Oleg Kalnichevski
47  */

48 public class TestProxyWithRedirect extends HttpClientTestBase {
49
50     public TestProxyWithRedirect(String JavaDoc testName) throws IOException JavaDoc {
51         super(testName);
52         setUseProxy(true);
53     }
54
55     public static Test suite() {
56         return new TestSuite(TestProxyWithRedirect.class);
57     }
58     
59     private class BasicRedirectService extends EchoService {
60         
61         private String JavaDoc location = null;
62
63         public BasicRedirectService(final String JavaDoc location) {
64             super();
65             this.location = location;
66         }
67
68         public boolean process(final SimpleRequest request, final SimpleResponse response)
69             throws IOException JavaDoc
70         {
71             RequestLine reqline = request.getRequestLine();
72             HttpVersion ver = reqline.getHttpVersion();
73             if (reqline.getUri().equals("/redirect/")) {
74                 response.setStatusLine(ver, HttpStatus.SC_MOVED_TEMPORARILY);
75                 response.addHeader(new Header("Location", this.location));
76                 response.addHeader(new Header("Connection", "Close"));
77                 return true;
78             } else {
79                 return super.process(request, response);
80             }
81         }
82     }
83     
84     public void testAuthProxyWithRedirect() throws Exception JavaDoc {
85         UsernamePasswordCredentials creds =
86             new UsernamePasswordCredentials("testuser", "testpass");
87         
88         this.client.getState().setProxyCredentials(AuthScope.ANY, creds);
89         this.server.setHttpService(new BasicRedirectService("/"));
90         this.proxy.requireAuthentication(creds, "test", true);
91         
92         GetMethod get = new GetMethod("/redirect/");
93         try {
94             this.client.executeMethod(get);
95             assertEquals(HttpStatus.SC_OK, get.getStatusCode());
96         } finally {
97             get.releaseConnection();
98         }
99     }
100     
101     public void testAuthProxyWithCrossSiteRedirect() throws Exception JavaDoc {
102         UsernamePasswordCredentials creds =
103             new UsernamePasswordCredentials("testuser", "testpass");
104         
105         this.client.getState().setProxyCredentials(AuthScope.ANY, creds);
106         this.server.setHttpService(new BasicRedirectService(
107                 "http://127.0.0.1:" + this.server.getLocalPort()));
108
109         this.proxy.requireAuthentication(creds, "test", true);
110         
111         GetMethod get = new GetMethod("/redirect/");
112         try {
113             this.client.executeMethod(get);
114             assertEquals(HttpStatus.SC_OK, get.getStatusCode());
115         } finally {
116             get.releaseConnection();
117         }
118     }
119
120     public void testPreemptiveAuthProxyWithCrossSiteRedirect() throws Exception JavaDoc {
121         UsernamePasswordCredentials creds =
122             new UsernamePasswordCredentials("testuser", "testpass");
123         
124         this.client.getState().setProxyCredentials(AuthScope.ANY, creds);
125         this.client.getParams().setAuthenticationPreemptive(true);
126         this.server.setHttpService(new BasicRedirectService(
127                 "http://127.0.0.1:" + this.server.getLocalPort()));
128
129         this.proxy.requireAuthentication(creds, "test", true);
130         
131         GetMethod get = new GetMethod("/redirect/");
132         try {
133             this.client.executeMethod(get);
134             assertEquals(HttpStatus.SC_OK, get.getStatusCode());
135         } finally {
136             get.releaseConnection();
137         }
138     }
139     
140 }
141
Popular Tags