Class JenkinsRule.WebClient
- java.lang.Object
-
- org.htmlunit.WebClient
-
- org.jvnet.hudson.test.JenkinsRule.WebClient
-
- All Implemented Interfaces:
Serializable
,AutoCloseable
- Enclosing class:
- JenkinsRule
public class JenkinsRule.WebClient extends org.htmlunit.WebClient
ExtendsWebClient
and provide convenience methods for accessing Hudson.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description WebClient()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description org.htmlunit.WebRequest
addCrumb(org.htmlunit.WebRequest req)
Adds a security crumb to the request.void
addWebResponseListener(WebResponseListener listener)
void
assertFails(String url, int statusCode)
Verify that the server rejects an attempt to load the given page.URL
createCrumbedUrl(String relativePath)
Creates a URL with crumb parameters relative to {getContextPath()
org.htmlunit.html.HtmlPage
eval(Runnable requestHandler)
Makes an HTTP request, process it with the given request handler, and returns the response.<V> V
executeOnServer(Callable<V> c)
Executes the given closure on the server, by the servlet request handling thread, in the context of an HTTP request.String
getContextPath()
Returns the URL of the webapp top page.JenkinsRule.JSONWebResponse
getJSON(String path)
Get JSON from a Jenkins relative endpoint.org.htmlunit.html.HtmlPage
getPage(hudson.model.Item item)
org.htmlunit.html.HtmlPage
getPage(hudson.model.Item item, String relative)
org.htmlunit.html.HtmlPage
getPage(hudson.model.Node item)
org.htmlunit.html.HtmlPage
getPage(hudson.model.Node item, String relative)
org.htmlunit.html.HtmlPage
getPage(hudson.model.Run r)
Short forgetPage(r,"")
, to access the top page of a build.org.htmlunit.html.HtmlPage
getPage(hudson.model.Run r, String relative)
Accesses a page insideRun
.org.htmlunit.html.HtmlPage
getPage(hudson.model.View view)
org.htmlunit.html.HtmlPage
getPage(hudson.model.View view, String relative)
org.htmlunit.Page
getPage(String url)
Deprecated.This method expects a full URL.org.htmlunit.html.HtmlPage
goTo(String relative)
Requests an HTML page within Jenkins.org.htmlunit.Page
goTo(String relative, String expectedContentType)
Requests a page within Jenkins.org.htmlunit.xml.XmlPage
goToXml(String path)
Loads a page as XML.boolean
isJavaScriptEnabled()
Returnstrue
if JavaScript is enabled and the script engine was loaded successfully.boolean
isRedirectEnabled()
Returns whether or not redirections will be followed automatically on receipt of a redirect status code from the server.boolean
isThrowExceptionOnFailingStatusCode()
Returns true if an exception will be thrown in the event of a failing response code.org.htmlunit.WebResponse
loadWebResponse(org.htmlunit.WebRequest webRequest)
JenkinsRule.WebClient
login(String username)
Logs in to Hudson, by using the user name as the password.JenkinsRule.WebClient
login(String username, String password)
Logs in to Jenkins.JenkinsRule.WebClient
login(String username, String password, boolean rememberMe)
Logs in to Jenkins.JenkinsRule.JSONWebResponse
postJSON(String path, net.sf.json.JSON json)
POST JSON content to a Jenkins relative endpoint.JenkinsRule.JSONWebResponse
putJSON(String path, net.sf.json.JSON json)
Send JSON content to a Jenkins relative endpoint.org.htmlunit.html.HtmlPage
search(String q)
void
setJavaScriptEnabled(boolean enabled)
Enables/disables JavaScript support.void
setRedirectEnabled(boolean enabled)
Sets whether or not redirections will be followed automatically on receipt of a redirect status code from the server.void
setThrowExceptionOnFailingStatusCode(boolean enabled)
Changes the behavior of this webclient when a script error occurs.JenkinsRule.WebClient
withBasicApiToken(hudson.model.User user)
Retrieve theApiTokenProperty
from the user, derive credentials from it and place it in Basic authorization header.JenkinsRule.WebClient
withBasicApiToken(String userId)
Retrieve theApiTokenProperty
from the associated user, derive credentials from it and place it in Basic authorization headerJenkinsRule.WebClient
withBasicCredentials(String loginAndPassword)
UseloginAndPassword
as login AND password, especially useful forJenkinsRule.DummySecurityRealm
Add the "Authorization" header with Basic credentials derived from login using Base64JenkinsRule.WebClient
withBasicCredentials(String login, String passwordOrToken)
Add the "Authorization" header with Basic credentials derived from login and password using Base64JenkinsRule.WebClient
withJavaScriptEnabled(boolean enabled)
Enables/disables JavaScript support.JenkinsRule.WebClient
withRedirectEnabled(boolean enabled)
Sets whether or not redirections will be followed automatically on receipt of a redirect status code from the server.JenkinsRule.WebClient
withThrowExceptionOnFailingStatusCode(boolean enabled)
Changes the behavior of this webclient when a script error occurs.-
Methods inherited from class org.htmlunit.WebClient
addCookie, addRequestHeader, addWebWindowListener, close, containsWebWindow, deregisterWebWindow, download, expandUrl, getActiveXObjectMap, getAjaxController, getAlertHandler, getAppletConfirmHandler, getAttachmentHandler, getBrowserVersion, getCache, getClipboardHandler, getConfirmHandler, getCookieManager, getCookies, getCredentialsProvider, getCssErrorHandler, getCurrentWindow, getExecutor, getFrameContentHandler, getHTMLParserListener, getIncorrectnessListener, getInternals, getJavaScriptEngine, getJavaScriptErrorListener, getJavaScriptTimeout, getMSXMLActiveXObjectFactory, getOnbeforeunloadHandler, getOptions, getPage, getPage, getPage, getPageCreator, getPrintHandler, getPromptHandler, getRefreshHandler, getScriptPreProcessor, getStatusHandler, getStorageHolder, getTopLevelWindows, getWebConnection, getWebConsole, getWebStartHandler, getWebWindowByName, getWebWindows, guessContentType, initialize, initializeEmptyWindow, isJavaScriptEngineEnabled, loadDownloadedResponses, loadHtmlCodeIntoCurrentWindow, loadWebResponseInto, loadWebResponseInto, loadXHtmlCodeIntoCurrentWindow, openDialogWindow, openTargetWindow, openWindow, openWindow, printContentIfNecessary, registerWebWindow, removeRequestHeader, removeWebWindowListener, setActiveXObjectMap, setAjaxController, setAlertHandler, setAppletConfirmHandler, setAttachmentHandler, setCache, setClipboardHandler, setConfirmHandler, setCookieManager, setCredentialsProvider, setCssErrorHandler, setCurrentWindow, setExecutor, setFrameContentHandler, setHTMLParserListener, setIncorrectnessListener, setJavaScriptEngine, setJavaScriptErrorListener, setJavaScriptTimeout, setOnbeforeunloadHandler, setPageCreator, setPrintHandler, setPromptHandler, setRefreshHandler, setScriptPreProcessor, setStatusHandler, setWebConnection, setWebStartHandler, throwFailingHttpStatusCodeExceptionIfNecessary, waitForBackgroundJavaScript, waitForBackgroundJavaScriptStartingBefore
-
-
-
-
Method Detail
-
addWebResponseListener
public void addWebResponseListener(WebResponseListener listener)
-
loadWebResponse
public org.htmlunit.WebResponse loadWebResponse(org.htmlunit.WebRequest webRequest) throws IOException
- Overrides:
loadWebResponse
in classorg.htmlunit.WebClient
- Throws:
IOException
-
login
public JenkinsRule.WebClient login(String username, String password) throws Exception
Logs in to Jenkins.- Throws:
Exception
-
isJavaScriptEnabled
public boolean isJavaScriptEnabled()
Returnstrue
if JavaScript is enabled and the script engine was loaded successfully. Short-hand method to ease discovery of feature + improve readability- Overrides:
isJavaScriptEnabled
in classorg.htmlunit.WebClient
- Returns:
true
if JavaScript is enabled- Since:
- 2.0
- See Also:
WebClientOptions.isJavaScriptEnabled()
-
setJavaScriptEnabled
public void setJavaScriptEnabled(boolean enabled)
Enables/disables JavaScript support. Short-hand method to ease discovery of feature + improve readability- Parameters:
enabled
-true
to enable JavaScript support- Since:
- 2.0
- See Also:
WebClientOptions.setJavaScriptEnabled(boolean)
-
withJavaScriptEnabled
public JenkinsRule.WebClient withJavaScriptEnabled(boolean enabled)
Enables/disables JavaScript support. Fluent method to ease discovery of feature + improve readability- Parameters:
enabled
-true
to enable JavaScript support- Returns:
- self for fluent method chaining
- Since:
- 2.42
- See Also:
WebClientOptions.setJavaScriptEnabled(boolean)
-
isThrowExceptionOnFailingStatusCode
public boolean isThrowExceptionOnFailingStatusCode()
Returns true if an exception will be thrown in the event of a failing response code. Short-hand method to ease discovery of feature + improve readability- Returns:
true
if an exception will be thrown in the event of a failing response code- Since:
- 2.42
- See Also:
WebClientOptions.isThrowExceptionOnFailingStatusCode()
-
setThrowExceptionOnFailingStatusCode
public void setThrowExceptionOnFailingStatusCode(boolean enabled)
Changes the behavior of this webclient when a script error occurs. Short-hand method to ease discovery of feature + improve readability- Parameters:
enabled
-true
to enable this feature- Since:
- 2.42
- See Also:
WebClientOptions.setThrowExceptionOnFailingStatusCode(boolean)
-
withThrowExceptionOnFailingStatusCode
public JenkinsRule.WebClient withThrowExceptionOnFailingStatusCode(boolean enabled)
Changes the behavior of this webclient when a script error occurs. Fluent method to ease discovery of feature + improve readability- Parameters:
enabled
-true
to enable this feature- Returns:
- self for fluent method chaining
- Since:
- 2.42
- See Also:
WebClientOptions.setThrowExceptionOnFailingStatusCode(boolean)
-
isRedirectEnabled
public boolean isRedirectEnabled()
Returns whether or not redirections will be followed automatically on receipt of a redirect status code from the server. Short-hand method to ease discovery of feature + improve readability- Returns:
true
if automatic redirection is enabled- Since:
- 2.42
- See Also:
WebClientOptions.isRedirectEnabled()
-
setRedirectEnabled
public void setRedirectEnabled(boolean enabled)
Sets whether or not redirections will be followed automatically on receipt of a redirect status code from the server. Short-hand method to ease discovery of feature + improve readability- Parameters:
enabled
-true
to enable automatic redirection- Since:
- 2.42
- See Also:
WebClientOptions.setRedirectEnabled(boolean)
-
withRedirectEnabled
public JenkinsRule.WebClient withRedirectEnabled(boolean enabled)
Sets whether or not redirections will be followed automatically on receipt of a redirect status code from the server. Fluent method to ease discovery of feature + improve readability- Parameters:
enabled
-true
to enable automatic redirection- Returns:
- self for fluent method chaining
- Since:
- 2.42
- See Also:
WebClientOptions.setRedirectEnabled(boolean)
-
login
public JenkinsRule.WebClient login(String username, String password, boolean rememberMe) throws Exception
Logs in to Jenkins.- Throws:
Exception
-
login
public JenkinsRule.WebClient login(String username) throws Exception
Logs in to Hudson, by using the user name as the password.See
JenkinsRule.configureUserRealm()
for how the container is set up with the user names and passwords. All the test accounts have the same user name and password.- Throws:
Exception
-
executeOnServer
public <V> V executeOnServer(Callable<V> c) throws Exception
Executes the given closure on the server, by the servlet request handling thread, in the context of an HTTP request.In
JenkinsRule
, a thread that's executing the test code is different from the thread that carries out HTTP requests made throughJenkinsRule.WebClient
. But sometimes you want to make assertions and other calls with side-effect from within the request handling thread.This method allows you to do just that. It is useful for testing some methods that require
StaplerRequest
andStaplerResponse
, or getting the credential of the current user (viaJenkins.getAuthentication()
, and so on.- Parameters:
c
- The closure to be executed on the server.- Returns:
- The return value from the closure.
- Throws:
Exception
- If a closure throws any exception, that exception will be carried forward.
-
search
public org.htmlunit.html.HtmlPage search(String q) throws IOException, SAXException
- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.html.HtmlPage getPage(hudson.model.Run r) throws IOException, SAXException
Short forgetPage(r,"")
, to access the top page of a build.- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.html.HtmlPage getPage(hudson.model.Run r, String relative) throws IOException, SAXException
Accesses a page insideRun
.- Parameters:
relative
- Relative URL within the build URL, like "changes". Doesn't start with '/'. Can be empty.- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.html.HtmlPage getPage(hudson.model.Item item) throws IOException, SAXException
- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.html.HtmlPage getPage(hudson.model.Item item, String relative) throws IOException, SAXException
- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.html.HtmlPage getPage(hudson.model.Node item) throws IOException, SAXException
- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.html.HtmlPage getPage(hudson.model.Node item, String relative) throws IOException, SAXException
- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.html.HtmlPage getPage(hudson.model.View view) throws IOException, SAXException
- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.html.HtmlPage getPage(hudson.model.View view, String relative) throws IOException, SAXException
- Throws:
IOException
SAXException
-
getPage
public org.htmlunit.Page getPage(String url) throws IOException, org.htmlunit.FailingHttpStatusCodeException
Deprecated.This method expects a full URL. This method is marked as deprecated to warn you that you probably should be usinggoTo(String)
method, which accepts a relative path within the Hudson being tested. (IOW, if you really need to hit a website on the internet, there's nothing wrong with using this method.)- Overrides:
getPage
in classorg.htmlunit.WebClient
- Throws:
IOException
org.htmlunit.FailingHttpStatusCodeException
-
goTo
public org.htmlunit.html.HtmlPage goTo(String relative) throws IOException, SAXException
Requests an HTML page within Jenkins.- Parameters:
relative
- Relative path within Jenkins. Starts without '/'. For example, "job/test/" to go to a job top page.- Throws:
IOException
SAXException
-
goTo
public org.htmlunit.Page goTo(String relative, @CheckForNull String expectedContentType) throws IOException, SAXException
Requests a page within Jenkins.- Parameters:
relative
- Relative path within Jenkins. Starts without '/'. For example, "job/test/" to go to a job top page.expectedContentType
- the expectedWebResponse.getContentType()
, or null to do no such check- Throws:
IOException
SAXException
-
goToXml
public org.htmlunit.xml.XmlPage goToXml(String path) throws IOException, SAXException
Loads a page as XML. Useful for testing Jenkins's XML API, in concert with assertXPath(DomNode page, String xpath)- Parameters:
path
- the path part of the url to visit- Returns:
- the XmlPage found at that url
- Throws:
IOException
SAXException
-
assertFails
public void assertFails(String url, int statusCode) throws Exception
Verify that the server rejects an attempt to load the given page.- Parameters:
url
- a URL path (relative to Jenkins root)statusCode
- the expected failure code (such asHttpURLConnection.HTTP_FORBIDDEN
)- Throws:
Exception
- Since:
- 1.504
-
getContextPath
public String getContextPath() throws IOException
Returns the URL of the webapp top page. URL ends with '/'.This is actually the same as
JenkinsRule.getURL()
and should not be confused withJenkinsRule.contextPath
.- Throws:
IOException
-
addCrumb
public org.htmlunit.WebRequest addCrumb(org.htmlunit.WebRequest req)
Adds a security crumb to the request. UsecreateCrumbedUrl(java.lang.String)
instead if you intend to callWebRequest.setRequestBody(java.lang.String)
, typical of a POST request.
-
createCrumbedUrl
public URL createCrumbedUrl(String relativePath) throws IOException
Creates a URL with crumb parameters relative to {getContextPath()
- Throws:
IOException
-
withBasicCredentials
@NonNull public JenkinsRule.WebClient withBasicCredentials(@NonNull String login, @NonNull String passwordOrToken)
Add the "Authorization" header with Basic credentials derived from login and password using Base64- Since:
- 2.32
-
withBasicCredentials
@NonNull public JenkinsRule.WebClient withBasicCredentials(@NonNull String loginAndPassword)
UseloginAndPassword
as login AND password, especially useful forJenkinsRule.DummySecurityRealm
Add the "Authorization" header with Basic credentials derived from login using Base64- Since:
- 2.32
-
withBasicApiToken
@NonNull public JenkinsRule.WebClient withBasicApiToken(@NonNull hudson.model.User user)
Retrieve theApiTokenProperty
from the user, derive credentials from it and place it in Basic authorization header. If there is not available token it will generate one using the new system.- Since:
- 2.32 (since TODO it creates a new token everytime it's called)
- See Also:
withBasicCredentials(String, String)
-
withBasicApiToken
@NonNull public JenkinsRule.WebClient withBasicApiToken(@NonNull String userId)
Retrieve theApiTokenProperty
from the associated user, derive credentials from it and place it in Basic authorization header- Since:
- 2.32
- See Also:
withBasicApiToken(User)
-
eval
public org.htmlunit.html.HtmlPage eval(Runnable requestHandler) throws IOException, SAXException
Makes an HTTP request, process it with the given request handler, and returns the response.- Throws:
IOException
SAXException
-
getJSON
public JenkinsRule.JSONWebResponse getJSON(@NonNull String path) throws IOException
Get JSON from a Jenkins relative endpoint. You can preconfigure the web client for example to set a token for authentication, or accept error HTTP status before calling this method.- Parameters:
path
- relative path, should not start with '/'- Returns:
- The JSON response from server.
- Throws:
IOException
-
putJSON
public JenkinsRule.JSONWebResponse putJSON(@NonNull String path, @NonNull net.sf.json.JSON json) throws IOException
Send JSON content to a Jenkins relative endpoint. You can preconfigure the web client for example to set a token for authentication, or accept error HTTP status before calling this method.- Parameters:
path
- relative path, should not start with '/'json
- the json payload to send- Returns:
- The JSON response from server.
- Throws:
IOException
-
postJSON
public JenkinsRule.JSONWebResponse postJSON(@NonNull String path, @NonNull net.sf.json.JSON json) throws IOException
POST JSON content to a Jenkins relative endpoint. You can preconfigure the web client for example to set a token for authentication or pass a crumb before calling this method.- Parameters:
path
- relative path, should not start with '/'json
- the json payload to send- Returns:
- The JSON response from server.
- Throws:
IOException
-
-