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

Reply via email to