KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * $Header: /home/cvs/jakarta-commons/httpclient/src/test/org/apache/commons/httpclient/TestWebappHeaders.java,v 1.10.2.1 2004/02/22 18:21:16 olegk Exp $
3  * $Revision: 1.10.2.1 $
4  * $Date: 2004/02/22 18:21:16 $
5  * ====================================================================
6  *
7  * Copyright 1999-2004 The Apache Software Foundation
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ====================================================================
21  *
22  * This software consists of voluntary contributions made by many
23  * individuals on behalf of the Apache Software Foundation. For more
24  * information on the Apache Software Foundation, please see
25  * <http://www.apache.org/>.
26  *
27  * [Additional notices, if required by prior licensing conditions]
28  *
29  */

30
31 package org.apache.commons.httpclient;
32
33 import java.net.InetAddress JavaDoc;
34
35 import junit.framework.Test;
36 import junit.framework.TestSuite;
37
38 import org.apache.commons.httpclient.methods.GetMethod;
39
40 /**
41  * This suite of tests depends upon the httpclienttest webapp,
42  * which is available in the httpclient/src/test-webapp
43  * directory in the CVS tree.
44  * <p>
45  * The webapp should be deployed in the context "httpclienttest"
46  * on a servlet engine running on port 8080 on the localhost
47  * (IP 127.0.0.1).
48  * <p>
49  * You can change the assumed port by setting the
50  * "httpclient.test.localPort" property.
51  * You can change the assumed host by setting the
52  * "httpclient.test.localHost" property.
53  * You can change the assumed context by setting the
54  * "httpclient.test.webappContext" property.
55  *
56  * @author Rodney Waldhoff
57  * @version $Id: TestWebappHeaders.java,v 1.10.2.1 2004/02/22 18:21:16 olegk Exp $
58  */

59 public class TestWebappHeaders extends TestWebappBase {
60
61     public TestWebappHeaders(String JavaDoc testName) {
62         super(testName);
63     }
64
65     public static Test suite() {
66         TestSuite suite = new TestSuite(TestWebappHeaders.class);
67         return suite;
68     }
69
70     public static void main(String JavaDoc args[]) {
71         String JavaDoc[] testCaseName = { TestWebappHeaders.class.getName() };
72         junit.textui.TestRunner.main(testCaseName);
73     }
74
75     // ------------------------------------------------------------------ Tests
76

77     /**
78      * Test {@link HttpMethod#addRequestHeader}.
79      */

80     public void testAddRequestHeader() throws Exception JavaDoc {
81         HttpClient client = createHttpClient();
82         GetMethod method = new GetMethod("/" + getWebappContext() + "/headers");
83         method.setRequestHeader(new Header("addRequestHeader(Header)","True"));
84         method.setRequestHeader("addRequestHeader(String,String)","Also True");
85         
86         try {
87             client.executeMethod(method);
88         } catch (Throwable JavaDoc t) {
89             t.printStackTrace();
90             fail("Unable to execute method : " + t.toString());
91         }
92         // Tomcat 4 at least converts the header name to lower case
93
assertTrue(method.getResponseBodyAsString().indexOf("name=\"addrequestheader(header)\";value=\"True\"<br>") >= 0);
94         assertTrue(method.getResponseBodyAsString().indexOf("name=\"addrequestheader(string,string)\";value=\"Also True\"<br>") >= 0);
95     }
96
97     /**
98      * Test {@link HttpMethod#removeRequestHeader}.
99      */

100     public void testRemoveRequestHeader() throws Exception JavaDoc {
101         HttpClient client = createHttpClient();
102         GetMethod method = new GetMethod("/" + getWebappContext() + "/headers");
103         method.setRequestHeader(new Header("XXX-A-HEADER","true"));
104         method.removeRequestHeader("XXX-A-HEADER");
105         
106         try {
107             client.executeMethod(method);
108         } catch (Throwable JavaDoc t) {
109             t.printStackTrace();
110             fail("Unable to execute method : " + t.toString());
111         }
112         // Tomcat 4 at least converts the header name to lower case
113
assertTrue(!(method.getResponseBodyAsString().indexOf("xxx-a-header") >= 0));
114     }
115
116     /**
117      * Test {@link HttpMethod#addRequestHeader}.
118      */

119     public void testOverwriteRequestHeader() throws Exception JavaDoc {
120         HttpClient client = createHttpClient();
121         GetMethod method = new GetMethod("/" + getWebappContext() + "/headers");
122         method.setRequestHeader(new Header("xxx-a-header","one"));
123         method.setRequestHeader("XXX-A-HEADER","two");
124         
125         try {
126             client.executeMethod(method);
127         } catch (Throwable JavaDoc t) {
128             t.printStackTrace();
129             fail("Unable to execute method : " + t.toString());
130         }
131         // Tomcat 4 at least converts the header name to lower case
132
assertTrue(method.getResponseBodyAsString().indexOf("name=\"xxx-a-header\";value=\"two\"<br>") >= 0);
133     }
134
135     /**
136      * Test {@link HttpMethod#getResponseHeader}.
137      */

138     public void testGetResponseHeader() throws Exception JavaDoc {
139         HttpClient client = createHttpClient();
140         GetMethod method = new GetMethod("/" + getWebappContext() + "/headers");
141         
142         try {
143             client.executeMethod(method);
144         } catch (Throwable JavaDoc t) {
145             t.printStackTrace();
146             fail("Unable to execute method : " + t.toString());
147         }
148         Header h = new Header("HeaderSetByServlet","Yes");
149         assertEquals(h,method.getResponseHeader("headersetbyservlet"));
150     }
151
152     /**
153      * Test {@link HttpMethodBase.addHostRequestHeader}.
154      */

155     public void testHostRequestHeader() throws Exception JavaDoc {
156         InetAddress JavaDoc addr = InetAddress.getByName(getHost());
157         String JavaDoc ip = addr.getHostAddress();
158         String JavaDoc hostname = addr.getHostName();
159
160         HttpClient client = new HttpClient();
161         GetMethod get = new GetMethod("/" + getWebappContext());
162
163         // Open connection using IP. Host header should be sent
164
// Note: RFC 2616 is somewhat unclear on whether a host should
165
// be sent in this context - however, both Mozilla and IE send
166
// the header for an IP address, instead of sending blank.
167
client.getHostConfiguration().setHost(ip, getPort(), getProtocol());
168         try {
169             client.executeMethod(get);
170         } catch (Throwable JavaDoc t) {
171             t.printStackTrace();
172             fail("Unable to execute method : " + t.toString());
173         }
174         Header hostHeader = get.getRequestHeader("Host");
175         assertTrue(hostHeader != null);
176
177         // reset
178
get.recycle();
179         get.setPath("/" + getWebappContext());
180
181         // Open connection using Host. Host header should
182
// contain this value (this test will fail if DNS
183
// is not available. Additionally, if the port is
184
// something other that 80, then the port value
185
// should also be present in the header.
186
client.getHostConfiguration().setHost(hostname, getPort(), getProtocol());
187         try {
188             client.executeMethod(get);
189         } catch (Throwable JavaDoc t) {
190             t.printStackTrace();
191             fail("Unable to execute method : " + t.toString());
192         }
193         hostHeader = get.getRequestHeader("Host");
194         assertTrue(hostHeader != null);
195         if (getPort() == 80) {
196             // no port information should be in the value
197
assertTrue(hostHeader.getValue().equals(hostname));
198         } else {
199             assertTrue(hostHeader.getValue().equals(hostname + ":" + getPort()));
200         }
201     }
202
203 }
204
205
Popular Tags