Module org.htmlunit
Package org.htmlunit

Class MockWebConnection

java.lang.Object
org.htmlunit.MockWebConnection
All Implemented Interfaces:
AutoCloseable, WebConnection

public class MockWebConnection extends Object implements WebConnection
A fake WebConnection designed to mock out the actual HTTP connections.
Author:
Mike Bowler, Noboru Sinohara, Marc Guillemot, Brad Clarke, Ahmed Ashour, Ronald Brill
  • Constructor Details

    • MockWebConnection

      public MockWebConnection()
  • Method Details

    • getResponse

      public WebResponse getResponse(WebRequest request) throws IOException
      Submits a request and retrieves a response.
      Specified by:
      getResponse in interface WebConnection
      Parameters:
      request - the request
      Returns:
      the response to the request defined by the specified request
      Throws:
      IOException - if an IO error occurs
    • getRawResponse

      public MockWebConnection.RawResponseData getRawResponse(WebRequest request) throws IOException
      Returns the raw response configured for the given request.

      The request is always recorded (incrementing getRequestCount() and appending to getRequestedUrls()) before any configured IOException is thrown, mirroring real HTTP behaviour where the request was dispatched even if the connection subsequently failed.

      URL lookup first tries an exact match (including query string), then retries without the query string, then falls back to the default response. If no default has been set an IllegalStateException is thrown.

      Parameters:
      request - the request
      Returns:
      the raw response
      Throws:
      IOException - if an IOException has been registered for the URL via setThrowable(URL, IOException)
      IllegalStateException - if no response or default response is configured for the URL
    • getRequestedUrls

      public List<URL> getRequestedUrls()
      Returns an unmodifiable list of all URLs requested so far, in request order.
      Returns:
      the list of requested URLs
    • getRequestedUrls

      public List<String> getRequestedUrls(URL relativeTo)
      Returns an unmodifiable list of requested URLs relativized against the given base URL. If a requested URL starts with relativeTo, the base is stripped; otherwise the full URL string is returned as-is.

      Note: the base URL string is compared as a plain prefix. Ensure relativeTo has a trailing slash if needed to avoid unintended partial matches (e.g. http://localhost/ rather than http://localhost).

      Parameters:
      relativeTo - the base URL whose prefix should be stripped from each requested URL
      Returns:
      the list of relative (or absolute, if not matching) URL strings
    • getLastMethod

      public HttpMethod getLastMethod()
      Returns the HTTP method that was used in the last call to getResponse(WebRequest).
      Returns:
      the HTTP method of the last request
      Throws:
      IllegalStateException - if no request has been made yet
    • getLastParameters

      public List<NameValuePair> getLastParameters()
      Returns the request parameters that were used in the last call to getResponse(WebRequest).
      Returns:
      the parameters of the last request
      Throws:
      IllegalStateException - if no request has been made yet
    • setResponse

      public void setResponse(URL url, String content, int statusCode, String statusMessage, String contentType, List<NameValuePair> headers)
      Sets the response that will be returned when the specified URL is requested.
      Parameters:
      url - the URL that will return the given response
      content - the content to return
      statusCode - the status code to return
      statusMessage - the status message to return
      contentType - the content type to return
      headers - the response headers to return
    • setResponse

      public void setResponse(URL url, String content, int statusCode, String statusMessage, String contentType, Charset charset, List<NameValuePair> headers)
      Sets the response that will be returned when the specified URL is requested.
      Parameters:
      url - the URL that will return the given response
      content - the content to return
      statusCode - the status code to return
      statusMessage - the status message to return
      contentType - the content type to return
      charset - the charset
      headers - the response headers to return
    • setThrowable

      public void setThrowable(URL url, IOException throwable)
      Sets the exception that will be thrown when the specified URL is requested.

      The stored exception is wrapped at throw time so that the stack trace points to the actual call site rather than to where the exception was constructed.

      Parameters:
      url - the URL that will force the exception
      throwable - the IOException to throw
    • setResponse

      public void setResponse(URL url, byte[] content, int statusCode, String statusMessage, String contentType, List<NameValuePair> headers)
      Sets the response that will be returned when the specified URL is requested.
      Parameters:
      url - the URL that will return the given response
      content - the content to return
      statusCode - the status code to return
      statusMessage - the status message to return
      contentType - the content type to return
      headers - the response headers to return
    • setResponse

      public void setResponse(URL url, String content)
      Convenient method that is the same as calling setResponse(URL,String,int,String,String,List) with a status of "200 OK", a content type of "text/html" and no additional headers.
      Parameters:
      url - the URL that will return the given response
      content - the content to return
    • setResponse

      public void setResponse(URL url, String content, String contentType)
      Convenient method that is the same as calling setResponse(URL,String,int,String,String,List) with a status of "200 OK" and no additional headers.
      Parameters:
      url - the URL that will return the given response
      content - the content to return
      contentType - the content type to return
    • setResponse

      public void setResponse(URL url, String content, String contentType, Charset charset)
      Convenient method that is the same as calling setResponse(URL, String, int, String, String, Charset, List) with a status of "200 OK" and no additional headers.
      Parameters:
      url - the URL that will return the given response
      content - the content to return
      contentType - the content type to return
      charset - the charset
    • setResponseAsGenericHtml

      public void setResponseAsGenericHtml(URL url, String title)
      Specify a generic HTML page that will be returned when the given URL is specified. The page will contain only minimal HTML to satisfy the HTML parser but will contain the specified title so that tests can check for titleText.
      Parameters:
      url - the URL that will return the given response
      title - the title of the page
    • setDefaultResponse

      public void setDefaultResponse(String content, int statusCode, String statusMessage, String contentType)
      Sets the response that will be returned when a URL is requested that does not have a specific response configured for it.
      Parameters:
      content - the content to return
      statusCode - the status code to return
      statusMessage - the status message to return
      contentType - the content type to return
    • setDefaultResponse

      public void setDefaultResponse(byte[] content, int statusCode, String statusMessage, String contentType)
      Sets the response that will be returned when a URL is requested that does not have a specific response configured for it.
      Parameters:
      content - the content to return
      statusCode - the status code to return
      statusMessage - the status message to return
      contentType - the content type to return
    • setDefaultResponse

      public void setDefaultResponse(String content)
      Sets the response that will be returned when a URL is requested that does not have a specific response configured for it.
      Parameters:
      content - the content to return
    • setDefaultResponse

      public void setDefaultResponse(String content, String contentType)
      Sets the response that will be returned when a URL is requested that does not have a specific response configured for it.
      Parameters:
      content - the content to return
      contentType - the content type to return
    • setDefaultResponse

      public void setDefaultResponse(String content, String contentType, Charset charset)
      Sets the response that will be returned when a URL is requested that does not have a specific response configured for it.
      Parameters:
      content - the content to return
      contentType - the content type to return
      charset - the charset
    • setDefaultResponse

      public void setDefaultResponse(String content, int statusCode, String statusMessage, String contentType, List<NameValuePair> headers)
      Sets the response that will be returned when a URL is requested that does not have a specific response configured for it.
      Parameters:
      content - the content to return
      statusCode - the status code to return
      statusMessage - the status message to return
      contentType - the content type to return
      headers - the response headers to return
    • setDefaultResponse

      public void setDefaultResponse(String content, int statusCode, String statusMessage, String contentType, Charset charset, List<NameValuePair> headers)
      Sets the response that will be returned when a URL is requested that does not have a specific response configured for it.
      Parameters:
      content - the content to return
      statusCode - the status code to return
      statusMessage - the status message to return
      contentType - the content type to return
      charset - the charset
      headers - the response headers to return
    • getLastAdditionalHeaders

      public Map<String,String> getLastAdditionalHeaders()
      Returns the additional headers that were used in the last call to getResponse(WebRequest).
      Returns:
      the additional headers of the last request
      Throws:
      IllegalStateException - if no request has been made yet
    • getLastWebRequest

      public WebRequest getLastWebRequest()
      Returns the WebRequest that was used in the last call to getResponse(WebRequest).
      Returns:
      the last WebRequest
      Throws:
      IllegalStateException - if no request has been made yet
    • getRequestCount

      public int getRequestCount()
      Returns the number of requests made to this mock web connection.
      Returns:
      the number of requests made to this mock web connection
    • hasResponse

      public boolean hasResponse(URL url)
      Returns whether a response has been configured for the given URL.
      Parameters:
      url - the URL to check
      Returns:
      true if a response has been configured for the URL; false otherwise
    • close

      public void close()
      Delegates to clear(), resetting all configured responses, recorded requests, and request counts.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface WebConnection
    • clear

      public void clear()
      Resets all state: clears all configured responses and throwables, the default response, the last request, the request count, and the list of requested URLs.

      Note: close() delegates to this method, so using this connection

      in a try-with-resources block will reset all configured state on exit.