01: /*
02: * Copyright (c) 2002-2008 Gargoyle Software Inc. All rights reserved.
03: *
04: * Redistribution and use in source and binary forms, with or without
05: * modification, are permitted provided that the following conditions are met:
06: *
07: * 1. Redistributions of source code must retain the above copyright notice,
08: * this list of conditions and the following disclaimer.
09: * 2. Redistributions in binary form must reproduce the above copyright notice,
10: * this list of conditions and the following disclaimer in the documentation
11: * and/or other materials provided with the distribution.
12: * 3. The end-user documentation included with the redistribution, if any, must
13: * include the following acknowledgment:
14: *
15: * "This product includes software developed by Gargoyle Software Inc.
16: * (http://www.GargoyleSoftware.com/)."
17: *
18: * Alternately, this acknowledgment may appear in the software itself, if
19: * and wherever such third-party acknowledgments normally appear.
20: * 4. The name "Gargoyle Software" must not be used to endorse or promote
21: * products derived from this software without prior written permission.
22: * For written permission, please contact info@GargoyleSoftware.com.
23: * 5. Products derived from this software may not be called "HtmlUnit", nor may
24: * "HtmlUnit" appear in their name, without prior written permission of
25: * Gargoyle Software Inc.
26: *
27: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
28: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
29: * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARGOYLE
30: * SOFTWARE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
33: * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
36: * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37: */
38: package com.gargoylesoftware.htmlunit;
39:
40: import java.io.IOException;
41:
42: /**
43: * Tests for {@link ImmediateRefreshHandler}.
44: *
45: * @version $Revision: 2132 $
46: * @author Marc Guillemot
47: */
48: public final class ImmediateRefreshHandlerTest extends WebTestCase {
49: /**
50: * Create an instance.
51: * @param name The name of the test.
52: */
53: public ImmediateRefreshHandlerTest(final String name) {
54: super (name);
55: }
56:
57: /**
58: * Regression test for bug 1211980: redirect on the same page after a post
59: * @throws Exception if the test fails
60: */
61: public void testRefreshSamePageAfterPost() throws Exception {
62: final WebClient client = new WebClient();
63: client.setRefreshHandler(new ImmediateRefreshHandler());
64:
65: // connection will return a page with <meta ... refresh> for the first call
66: // and the same page without it for the other calls
67: final MockWebConnection webConnection = new MockWebConnection(
68: client) {
69: private int nbCalls_ = 0;
70:
71: public WebResponse getResponse(
72: final WebRequestSettings settings)
73: throws IOException {
74: String content = "<html><head>\n";
75: if (nbCalls_ == 0) {
76: content += "<meta http-equiv='refresh' content='0;url="
77: + URL_GARGOYLE.toExternalForm() + "'>\n";
78: }
79: content += "</head><body></body></html>";
80: nbCalls_++;
81: return new StringWebResponse(content, settings.getURL()) {
82: private static final long serialVersionUID = -4739710581533574855L;
83:
84: public SubmitMethod getRequestMethod() {
85: return settings.getSubmitMethod();
86: }
87: };
88: }
89: };
90: client.setWebConnection(webConnection);
91:
92: final WebRequestSettings settings = new WebRequestSettings(
93: URL_GARGOYLE);
94: settings.setSubmitMethod(SubmitMethod.POST);
95: client.getPage(settings);
96: }
97: }
|