Revision: 646
http://svn.sourceforge.net/jwebunit/?rev=646&view=rev
Author: henryju
Date: 2007-01-02 06:57:39 -0800 (Tue, 02 Jan 2007)
Log Message:
-----------
Realize feature request [1563168] : can generic header information be included
in context?
Modified Paths:
--------------
branches/1.x/jwebunit-core/src/main/java/net/sourceforge/jwebunit/util/TestContext.java
branches/1.x/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitDialog.java
branches/1.x/src/changes/changes.xml
Modified:
branches/1.x/jwebunit-core/src/main/java/net/sourceforge/jwebunit/util/TestContext.java
===================================================================
---
branches/1.x/jwebunit-core/src/main/java/net/sourceforge/jwebunit/util/TestContext.java
2007-01-02 09:11:10 UTC (rev 645)
+++
branches/1.x/jwebunit-core/src/main/java/net/sourceforge/jwebunit/util/TestContext.java
2007-01-02 14:57:39 UTC (rev 646)
@@ -7,8 +7,10 @@
import javax.servlet.http.Cookie;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
/**
* Establish context for tests (things such as locale, base url for the
application, cookies, authorization). The
@@ -40,6 +42,8 @@
private String userAgent;
+ private Map requestHeaders = new HashMap();
+
private String proxyUser;
private String proxyPasswd;
@@ -56,10 +60,10 @@
public TestContext() {
cookies = new ArrayList();
}
-
+
/**
* Clear all authorizations (basic, digest, ntlm, proxy).
- *
+ *
*/
public void clearAuthorizations() {
hasAuth = false;
@@ -274,4 +278,38 @@
baseUrl = url.endsWith("/") ? url : url + "/";
}
+ /**
+ * Add a custom request header.
+ * @param name header name.
+ * @param value header value.
+ */
+ public void addRequestHeader(final String name, final String value) {
+ requestHeaders.put(name, value);
+ }
+
+ /**
+ * Remove a custom request header.
+ * @param name header name.
+ */
+ public void removeRequestHeader(final String name) {
+ requestHeaders.remove(name);
+ }
+
+ /**
+ * Get custom request headers.
+ * @param name header name.
+ * @param value header value.
+ */
+ public Map getRequestHeaders() {
+ return requestHeaders;
+ }
+
+ /**
+ * Clear custom request headers.
+ *
+ */
+ public void clearRequestHeaders() {
+ requestHeaders = new HashMap();
+ }
+
}
Modified:
branches/1.x/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitDialog.java
===================================================================
---
branches/1.x/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitDialog.java
2007-01-02 09:11:10 UTC (rev 645)
+++
branches/1.x/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitDialog.java
2007-01-02 14:57:39 UTC (rev 646)
@@ -63,6 +63,8 @@
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import net.sourceforge.jwebunit.api.IJWebUnitDialog;
import net.sourceforge.jwebunit.exception.ExpectedJavascriptAlertException;
@@ -162,7 +164,8 @@
win = wc.getCurrentWindow();
form = null;
} catch (FailingHttpStatusCodeException aException) {
- throw new
TestingEngineResponseException(aException.getStatusCode(), aException);
+ throw new TestingEngineResponseException(
+ aException.getStatusCode(), aException);
} catch (IOException aException) {
throw new RuntimeException(aException);
@@ -542,7 +545,8 @@
}
public String getPageSource() {
- return
wc.getCurrentWindow().getEnclosedPage().getWebResponse().getContentAsString();
+ return wc.getCurrentWindow().getEnclosedPage().getWebResponse()
+ .getContentAsString();
}
public String getPageTitle() {
@@ -560,33 +564,39 @@
if (page instanceof XmlPage)
return ((XmlPage) page).getContent();
if (page instanceof UnexpectedPage)
- return ((UnexpectedPage)
page).getWebResponse().getContentAsString();
- throw new RuntimeException("Unexpected error in getPageText(). This
method need to be updated.");
+ return ((UnexpectedPage) page).getWebResponse()
+ .getContentAsString();
+ throw new RuntimeException(
+ "Unexpected error in getPageText(). This method need to be
updated.");
}
public String getServerResponse() {
StringBuffer result = new StringBuffer();
- WebResponse wr =
wc.getCurrentWindow().getEnclosedPage().getWebResponse();
- result.append(wr.getStatusCode()).append("
").append(wr.getStatusMessage()).append("\n");
+ WebResponse wr = wc.getCurrentWindow().getEnclosedPage()
+ .getWebResponse();
+ result.append(wr.getStatusCode()).append(" ").append(
+ wr.getStatusMessage()).append("\n");
result.append("Location: ").append(wr.getUrl()).append("\n");
List headers = wr.getResponseHeaders();
- for (Iterator i=headers.iterator(); i.hasNext();) {
- NameValuePair h = (NameValuePair)i.next();
- result.append(h.getName()).append(":
").append(h.getValue()).append("\n");
+ for (Iterator i = headers.iterator(); i.hasNext();) {
+ NameValuePair h = (NameValuePair) i.next();
+ result.append(h.getName()).append(": ").append(h.getValue())
+ .append("\n");
}
result.append("\n");
result.append(wr.getContentAsString());
return result.toString();
}
-
+
public void saveAs(File f) {
try {
f.createNewFile();
FileOutputStream out = new FileOutputStream(f);
-
out.write(wc.getCurrentWindow().getEnclosedPage().getWebResponse().getResponseBody());
+ out.write(wc.getCurrentWindow().getEnclosedPage().getWebResponse()
+ .getResponseBody());
out.close();
} catch (IOException e) {
- throw new RuntimeException("Error when writing to file",e);
+ throw new RuntimeException("Error when writing to file", e);
}
}
@@ -596,7 +606,7 @@
wc.setJavaScriptEnabled(jsEnabled);
wc.setThrowExceptionOnScriptError(true);
wc.setRedirectEnabled(true);
- //wc.setRefreshHandler(new ThreadedRefreshHandler());
+ // wc.setRefreshHandler(new ThreadedRefreshHandler());
DefaultCredentialsProvider creds = new DefaultCredentialsProvider();
if (getTestContext().hasAuthorization()) {
creds.addCredentials(getTestContext().getUser(), getTestContext()
@@ -714,6 +724,19 @@
.getName(), c.getValue(), c.getPath() != null ? c
.getPath() : "", c.getMaxAge(), c.getSecure()));
}
+ // Deal with custom request header
+ Map requestHeaders = getTestContext().getRequestHeaders();
+
+ Set keys = requestHeaders.keySet();
+ Iterator it = keys.iterator();
+
+ while (it.hasNext()) {
+ String nextRequestHeaderName = (String) it.next();
+ String nextRequestHeaderValue = (String) requestHeaders
+ .get(nextRequestHeaderName);
+
+ wc.addRequestHeader(nextRequestHeaderName, nextRequestHeaderValue);
+ }
}
/**
@@ -1812,21 +1835,21 @@
*/
private WebWindow getFrame(String frameNameOrId) {
final List frames = getCurrentPage().getFrames();
- //First try ID
+ // First try ID
for (final Iterator iter = frames.iterator(); iter.hasNext();) {
final FrameWindow frame = (FrameWindow) iter.next();
if (frameNameOrId.equals(frame.getFrameElement().getId())) {
return frame;
}
}
- //Now try with Name
+ // Now try with Name
for (final Iterator iter = frames.iterator(); iter.hasNext();) {
final FrameWindow frame = (FrameWindow) iter.next();
if (frameNameOrId.equals(frame.getName())) {
return frame;
}
}
- //Nothing was found.
+ // Nothing was found.
return null;
}
Modified: branches/1.x/src/changes/changes.xml
===================================================================
--- branches/1.x/src/changes/changes.xml 2007-01-02 09:11:10 UTC (rev
645)
+++ branches/1.x/src/changes/changes.xml 2007-01-02 14:57:39 UTC (rev
646)
@@ -7,6 +7,11 @@
</author>
</properties>
<body>
+ <release version="1.4-RC3" date="unknow">
+ <action type="add" dev="Julien Henry" due-to="Jeff Grimshaw"
issue="1563168">
+ Add methods in TestContext to specify custom request headers.
+ </action>
+ </release>
<release version="1.4-RC2" date="december 5, 2006">
<action type="fix" dev="Julien Henry">
Reset() function now check for the presence of a reset button.
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Jwebunit-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jwebunit-development