Class HttpRequest

    • Constructor Detail

      • HttpRequest

        public HttpRequest()
    • Method Detail

      • isKeepAlive

        public Boolean isKeepAlive()
      • withKeepAlive

        public HttpRequest withKeepAlive​(Boolean isKeepAlive)
        Match on whether the request was made using an HTTP persistent connection, also called HTTP keep-alive, or HTTP connection reuse
        Parameters:
        isKeepAlive - true if the request was made with an HTTP persistent connection
      • isSecure

        public Boolean isSecure()
      • withSecure

        public HttpRequest withSecure​(Boolean isSsl)
        Match on whether the request was made over SSL (i.e. HTTPS)
        Parameters:
        isSsl - true if the request was made with SSL
      • withSocketAddress

        public HttpRequest withSocketAddress​(SocketAddress socketAddress)
        Specify remote address if the remote address can't be derived from the host header, if no value is specified the host header will be used to determine remote address
        Parameters:
        socketAddress - the remote address to send request to
      • withSocketAddress

        public HttpRequest withSocketAddress​(String host,
                                             Integer port,
                                             SocketAddress.Scheme scheme)
        Specify remote address if the remote address can't be derived from the host header, if no value is specified the host header will be used to determine remote address
        Parameters:
        host - the remote host or ip to send request to
        port - the remote port to send request to
        scheme - the scheme to use for remote socket
      • withMethod

        public HttpRequest withMethod​(String method)
        The HTTP method to match on such as "GET" or "POST"
        Parameters:
        method - the HTTP method such as "GET" or "POST"
      • withMethod

        public HttpRequest withMethod​(NottableString method)
        The HTTP method all method except a specific value using the "not" operator, for example this allows operations such as not("GET")
        Parameters:
        method - the HTTP method to not match on not("GET") or not("POST")
      • getMethod

        public String getMethod​(String defaultValue)
      • withPath

        public HttpRequest withPath​(String path)
        The path to match on such as "/some_mocked_path" any servlet context path is ignored for matching and should not be specified here regex values are also supported such as ".*_path", see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html for full details of the supported regex syntax
        Parameters:
        path - the path such as "/some_mocked_path" or a regex
      • withPath

        public HttpRequest withPath​(NottableString path)
        The path to not match on for example not("/some_mocked_path") with match any path not equal to "/some_mocked_path", the servlet context path is ignored for matching and should not be specified here regex values are also supported such as not(".*_path"), see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html for full details of the supported regex syntax
        Parameters:
        path - the path to not match on such as not("/some_mocked_path") or not(".*_path")
      • matches

        public boolean matches​(String method,
                               String... paths)
      • getQueryStringParameters

        public Parameters getQueryStringParameters()
      • withQueryStringParameters

        public HttpRequest withQueryStringParameters​(List<Parameter> parameters)
        The query string parameters to match on as a list of Parameter objects where the values or keys of each parameter can be either a string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Parameters:
        parameters - the list of Parameter objects where the values or keys of each parameter can be either a string or a regex
      • withQueryStringParameters

        public HttpRequest withQueryStringParameters​(Parameter... parameters)
        The query string parameters to match on as a varags Parameter objects where the values or keys of each parameter can be either a string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Parameters:
        parameters - the varags Parameter objects where the values or keys of each parameter can be either a string or a regex
      • withQueryStringParameters

        public HttpRequest withQueryStringParameters​(Map<String,​List<String>> parameters)
        The query string parameters to match on as a Map> where the values or keys of each parameter can be either a string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Parameters:
        parameters - the Map> object where the values or keys of each parameter can be either a string or a regex
      • withQueryStringParameter

        public HttpRequest withQueryStringParameter​(Parameter parameter)
        Adds one query string parameter to match on as a Parameter object where the parameter values list can be a list of strings or regular expressions (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Parameters:
        parameter - the Parameter object which can have a values list of strings or regular expressions
      • withQueryStringParameter

        public HttpRequest withQueryStringParameter​(String name,
                                                    String... values)
        Adds one query string parameter to match which can specified using plain strings or regular expressions (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Parameters:
        name - the parameter name
        values - the parameter values which can be a varags of strings or regular expressions
      • withQueryStringParameter

        public HttpRequest withQueryStringParameter​(NottableString name,
                                                    NottableString... values)
        Adds one query string parameter to match on or to not match on using the NottableString, each NottableString can either be a positive matching value, such as string("match"), or a value to not match on, such as not("do not match"), the string values passed to the NottableString can also be a plain string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Parameters:
        name - the parameter name as a NottableString
        values - the parameter values which can be a varags of NottableStrings
      • getQueryStringParameterList

        public List<Parameter> getQueryStringParameterList()
      • hasQueryStringParameter

        public boolean hasQueryStringParameter​(String name,
                                               String value)
      • getFirstQueryStringParameter

        public String getFirstQueryStringParameter​(String name)
      • withBody

        public HttpRequest withBody​(String body)
        The exact string body to match on such as "this is an exact string body"
        Specified by:
        withBody in interface HttpObject<HttpRequest,​Body>
        Parameters:
        body - the body on such as "this is an exact string body"
      • withBody

        public HttpRequest withBody​(String body,
                                    Charset charset)
        The exact string body to match on such as "this is an exact string body"
        Specified by:
        withBody in interface HttpObject<HttpRequest,​Body>
        Parameters:
        body - the body on such as "this is an exact string body"
        charset - character set the string will be encoded in
      • withBody

        public HttpRequest withBody​(Body body)
        The body match rules on such as using one of the Body subclasses as follows:

        exact string match: - exact("this is an exact string body");

        or

        - new StringBody("this is an exact string body")

        regular expression match: - regex("username[a-z]{4}");

        or

        - new RegexBody("username[a-z]{4}");

        json match: - json("{username: 'foo', password: 'bar'}");

        or

        - json("{username: 'foo', password: 'bar'}", MatchType.STRICT);

        or

        - new JsonBody("{username: 'foo', password: 'bar'}");

        json schema match: - jsonSchema("{type: 'object', properties: { 'username': { 'type': 'string' }, 'password': { 'type': 'string' } }, 'required': ['username', 'password']}");

        or

        - jsonSchemaFromResource("org/mockserver/model/loginSchema.json");

        or

        - new JsonSchemaBody("{type: 'object', properties: { 'username': { 'type': 'string' }, 'password': { 'type': 'string' } }, 'required': ['username', 'password']}");

        xpath match: - xpath("/element[key = 'some_key' and value = 'some_value']");

        or

        - new XPathBody("/element[key = 'some_key' and value = 'some_value']");

        body parameter match: - params( param("name_one", "value_one_one", "value_one_two") param("name_two", "value_two") );

        or

        - new ParameterBody( new Parameter("name_one", "value_one_one", "value_one_two") new Parameter("name_two", "value_two") );

        binary match: - binary(IOUtils.readFully(getClass().getClassLoader().getResourceAsStream("example.pdf"), 1024));

        or

        - new BinaryBody(IOUtils.readFully(getClass().getClassLoader().getResourceAsStream("example.pdf"), 1024));

        for more details of the supported regular expression syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html for more details of the supported json syntax see http://jsonassert.skyscreamer.org for more details of the supported json schema syntax see http://json-schema.org/ for more detail of XPath syntax see http://saxon.sourceforge.net/saxon6.5.3/expressions.html

        Specified by:
        withBody in interface HttpObject<HttpRequest,​Body>
        Parameters:
        body - an instance of one of the Body subclasses including StringBody, ParameterBody or BinaryBody
      • withHeaders

        public HttpRequest withHeaders​(List<Header> headers)
        The headers to match on as a list of Header objects where the values or keys of each header can be either a string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withHeaders in interface HttpObject<HttpRequest,​Body>
        Parameters:
        headers - the list of Header objects where the values or keys of each header can be either a string or a regex
      • withHeaders

        public HttpRequest withHeaders​(Header... headers)
        The headers to match on as a varags of Header objects where the values or keys of each header can be either a string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withHeaders in interface HttpObject<HttpRequest,​Body>
        Parameters:
        headers - the varags of Header objects where the values or keys of each header can be either a string or a regex
      • withHeader

        public HttpRequest withHeader​(Header header)
        Adds one header to match on as a Header object where the header values list can be a list of strings or regular expressions (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withHeader in interface HttpObject<HttpRequest,​Body>
        Parameters:
        header - the Header object which can have a values list of strings or regular expressions
      • withHeader

        public HttpRequest withHeader​(String name,
                                      String... values)
        Adds one header to match which can specified using plain strings or regular expressions (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withHeader in interface HttpObject<HttpRequest,​Body>
        Parameters:
        name - the header name
        values - the header values which can be a varags of strings or regular expressions
      • withHeader

        public HttpRequest withHeader​(NottableString name,
                                      NottableString... values)
        Adds one header to match on or to not match on using the NottableString, each NottableString can either be a positive matching value, such as string("match"), or a value to not match on, such as not("do not match"), the string values passed to the NottableString can also be a plain string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withHeader in interface HttpObject<HttpRequest,​Body>
        Parameters:
        name - the header name as a NottableString
        values - the header values which can be a varags of NottableStrings
      • replaceHeader

        public HttpRequest replaceHeader​(Header header)
        Adds one header to match on as a Header object where the header values list can be a list of strings or regular expressions (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        replaceHeader in interface HttpObject<HttpRequest,​Body>
        Parameters:
        header - the Header object which can have a values list of strings or regular expressions
      • containsHeader

        public boolean containsHeader​(String name)
        Returns true if a header with the specified name has been added
        Specified by:
        containsHeader in interface HttpObject<HttpRequest,​Body>
        Parameters:
        name - the header name
        Returns:
        true if a header has been added with that name otherwise false
      • containsHeader

        public boolean containsHeader​(String name,
                                      String value)
        Returns true if a header with the specified name and value has been added
        Parameters:
        name - the header name
        value - the header value
        Returns:
        true if a header has been added with that name otherwise false
      • withCookies

        public HttpRequest withCookies​(List<Cookie> cookies)
        The cookies to match on as a list of Cookie objects where the values or keys of each cookie can be either a string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withCookies in interface HttpObject<HttpRequest,​Body>
        Parameters:
        cookies - a list of Cookie objects
      • withCookies

        public HttpRequest withCookies​(Cookie... cookies)
        The cookies to match on as a varags Cookie objects where the values or keys of each cookie can be either a string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withCookies in interface HttpObject<HttpRequest,​Body>
        Parameters:
        cookies - a varargs of Cookie objects
      • withCookie

        public HttpRequest withCookie​(Cookie cookie)
        Adds one cookie to match on as a Cookie object where the cookie values list can be a list of strings or regular expressions (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withCookie in interface HttpObject<HttpRequest,​Body>
        Parameters:
        cookie - a Cookie object
      • withCookie

        public HttpRequest withCookie​(String name,
                                      String value)
        Adds one cookie to match on, which can specified using either plain strings or regular expressions (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withCookie in interface HttpObject<HttpRequest,​Body>
        Parameters:
        name - the cookies name
        value - the cookies value
      • withCookie

        public HttpRequest withCookie​(NottableString name,
                                      NottableString value)
        Adds one cookie to match on or to not match on using the NottableString, each NottableString can either be a positive matching value, such as string("match"), or a value to not match on, such as not("do not match"), the string values passed to the NottableString can be a plain string or a regex (for more details of the supported regex syntax see http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html)
        Specified by:
        withCookie in interface HttpObject<HttpRequest,​Body>
        Parameters:
        name - the cookies name
        value - the cookies value
      • socketAddressFromHostHeader

        public InetSocketAddress socketAddressFromHostHeader()