|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface ResponseSpecification
Allows you to specify how the expected response must look like in order for a test to pass.
Method Summary | |
---|---|
ResponseSpecification |
and()
Syntactic sugar, e.g. |
ResponseSpecification |
body(org.hamcrest.Matcher<?> matcher,
org.hamcrest.Matcher<?>... additionalMatchers)
Expect that the response body conforms to one or more Hamcrest matchers. |
ResponseSpecification |
body(String key,
List<Argument> arguments,
org.hamcrest.Matcher matcher,
Object... additionalKeyMatcherPairs)
Same as body(String, org.hamcrest.Matcher, Object...) expect that you can pass arguments to the key. |
ResponseSpecification |
body(String key,
org.hamcrest.Matcher<?> matcher,
Object... additionalKeyMatcherPairs)
Expect that the JSON or XML response body conforms to one or more Hamcrest matchers. |
ResponseSpecification |
content(org.hamcrest.Matcher<?> matcher,
org.hamcrest.Matcher<?>... additionalMatchers)
Expect that the response content conforms to one or more Hamcrest matchers. |
ResponseSpecification |
content(String key,
List<Argument> arguments,
org.hamcrest.Matcher matcher,
Object... additionalKeyMatcherPairs)
Same as content(String, java.util.List, org.hamcrest.Matcher, Object...) expect that you can pass arguments to the key. |
ResponseSpecification |
content(String key,
org.hamcrest.Matcher<?> matcher,
Object... additionalKeyMatcherPairs)
Expect that the JSON or XML response content conforms to one or more Hamcrest matchers. |
ResponseSpecification |
contentType(groovyx.net.http.ContentType contentType)
Set the response content type to be contentType . |
ResponseSpecification |
contentType(String contentType)
Set the response content type to be contentType . |
ResponseSpecification |
cookie(String cookieName)
Expect that a cookie exist in the response, regardless of value (it may have no value at all). |
ResponseSpecification |
cookie(String cookieName,
org.hamcrest.Matcher<?> expectedValueMatcher)
Expect that a response cookie matches the supplied cookie name and hamcrest matcher. |
ResponseSpecification |
cookie(String cookieName,
Object expectedValue)
Expect that a response cookie matches the supplied name and value. |
ResponseSpecification |
cookies(Map<String,?> expectedCookies)
Expect that response cookies matches those specified in a Map. |
ResponseSpecification |
cookies(String firstExpectedCookieName,
Object firstExpectedCookieValue,
Object... expectedCookieNameValuePairs)
Expect that response cookies matches the supplied cookie names and values. |
ResponseSpecification |
defaultParser(Parser parser)
Register a default predefined parser that will be used if no other parser (registered or pre-defined) matches the response content-type. |
ResponseSpecification |
expect()
Syntactic sugar, e.g. |
RequestSpecification |
given()
Returns the request com.jayway.restassured.specification so that you can define the properties of the request. |
ResponseSpecification |
header(String headerName,
org.hamcrest.Matcher<?> expectedValueMatcher)
Expect that a response header matches the supplied header name and hamcrest matcher. |
ResponseSpecification |
header(String headerName,
String expectedValue)
Expect that a response header matches the supplied name and value. |
ResponseSpecification |
headers(Map<String,?> expectedHeaders)
Expect that response headers matches those specified in a Map. |
ResponseSpecification |
headers(String firstExpectedHeaderName,
Object firstExpectedHeaderValue,
Object... expectedHeaders)
Expect that response headers matches the supplied headers and values. |
ResponseSpecification |
log()
Log (i.e. |
ResponseSpecification |
logOnError()
Log (i.e. |
ResponseSpecification |
parser(String contentType,
Parser parser)
Register a content-type to be parsed using a predefined parser. |
RequestSpecification |
request()
Returns the request com.jayway.restassured.specification so that you can define the properties of the request. |
ResponseSpecification |
response()
Syntactic sugar, e.g. |
ResponseSpecification |
root(String rootPath)
Set the root path of the response body so that you don't need to write the entire path for each expectation. |
ResponseSpecification |
rootPath(String rootPath)
Set the root path of the response body so that you don't need to write the entire path for each expectation. |
ResponseSpecification |
spec(ResponseSpecification responseSpecificationToMerge)
Expect that the response matches an entire specification. |
ResponseSpecification |
specification(ResponseSpecification responseSpecificationToMerge)
Expect that the response matches an entire specification. |
ResponseSpecification |
statusCode(int expectedStatusCode)
Expect that the response status code matches an integer. |
ResponseSpecification |
statusCode(org.hamcrest.Matcher<Integer> expectedStatusCode)
Expect that the response status code matches the given Hamcrest matcher. |
ResponseSpecification |
statusLine(org.hamcrest.Matcher<String> expectedStatusLine)
Expect that the response status line matches the given Hamcrest matcher. |
ResponseSpecification |
statusLine(String expectedStatusLine)
Expect that the response status line matches the given String. |
ResponseSpecification |
that()
Syntactic sugar, e.g. |
ResponseSpecification |
then()
Syntactic sugar, e.g. |
ResponseSpecification |
when()
Syntactic sugar, e.g. |
RequestSpecification |
with()
Returns the request com.jayway.restassured.specification so that you can define the properties of the request. |
Methods inherited from interface com.jayway.restassured.specification.RequestSender |
---|
delete, delete, get, get, head, head, post, post, put, put |
Method Detail |
---|
ResponseSpecification content(org.hamcrest.Matcher<?> matcher, org.hamcrest.Matcher<?>... additionalMatchers)
// Expect that the response content (body) contains the string "winning-numbers" expect().content(containsString("winning-numbers")).when().get("/lotto"); // Expect that the response content (body) contains the string "winning-numbers" and "winners" expect().content(containsString("winning-numbers"), containsString("winners")).when().get("/lotto");
matcher
- The hamcrest matcher that must response content must match.additionalMatchers
- Optionally additional hamcrest matchers that must return true
.
ResponseSpecification content(String key, org.hamcrest.Matcher<?> matcher, Object... additionalKeyMatcherPairs)
Assume that a GET request to "/lotto" returns a JSON response containing:
{ "lotto":{ "lottoId":5, "winning-numbers":[2,45,34,23,7,5,3], "winners":[{ "winnerId":23, "numbers":[2,45,34,23,3,5] },{ "winnerId":54, "numbers":[52,3,12,11,18,22] }] }}You can verify that the lottoId is equal to 5 like this:
expect().content("lotto.lottoId", equalTo(5)).when().get("/lotto");You can also verify that e.g. one of the the winning numbers is 45.
expect().content("lotto.winning-numbers", hasItem(45)).when().get("/lotto");Or both at the same time:
expect().content("lotto.lottoId", equalTo(5)).and().content("lotto.winning-numbers", hasItem(45)).when().get("/lotto");or a slightly short version:
expect().content("lotto.lottoId", equalTo(5), "lotto.winning-numbers", hasItem(45)).when().get("/lotto");
Assume that a GET request to "/xml" returns a XML response containing:
<greeting> <firstName>John</firstName> <lastName>Doe</lastName> </greeting>You can now verify that the firstName is equal to "John" like this:
expect().content("greeting.firstName", equalTo("John")).when().get("/xml");To verify both the first name and last name you can do like this:
expect().content("greeting.firstName", equalTo("John")).and().content("greeting.lastName", equalTo("Doe")).when().get("/xml");Or the slightly shorter version of:
expect().content("greeting.firstName", equalTo("John"), "greeting.lastName", equalTo("Doe")).when().get("/xml");
Note that if the response content type is not of type application/xml or application/json you cannot use this verification.
The only difference between the content
and body
methods are of syntactic nature.
matcher
- The hamcrest matcher that must response content must match.additionalKeyMatcherPairs
- Optionally additional hamcrest matchers that must return true
.
ResponseSpecification body(String key, List<Argument> arguments, org.hamcrest.Matcher matcher, Object... additionalKeyMatcherPairs)
body(String, org.hamcrest.Matcher, Object...)
expect that you can pass arguments to the key. This
is useful in situations where you have e.g. pre-defined variables that constitutes the key:
String someSubPath = "else"; int index = 1; expect().body("something.%s[%d]", withArgs(someSubPath, index), equalTo("some value")). ..or if you have complex root paths and don't wish to duplicate the path for small variations:
expect(). root("filters.filterConfig[%d].filterConfigGroups.find { it.name == 'Gold' }.includes"). body("", withArgs(0), hasItem("first")). body("", withArgs(1), hasItem("second")). ..The key and arguments follows the standard formatting syntax of Java.
Note that withArgs
can be statically imported from the com.jayway.restassured.RestAssured
class.
key
- The body keymatcher
- The hamcrest matcher that must response body must match.additionalKeyMatcherPairs
- Optionally additional hamcrest matchers that must return true
.
body(String, org.hamcrest.Matcher, Object...)
ResponseSpecification statusCode(org.hamcrest.Matcher<Integer> expectedStatusCode)
expect().statusCode(equalTo(200)).when().get("/something");
expectedStatusCode
- The expected status code matcher.
ResponseSpecification statusCode(int expectedStatusCode)
expect().statusCode(200).when().get("/something");This is the same as:
expect().statusCode(equalTo(200)).when().get("/something");
expectedStatusCode
- The expected status code.
ResponseSpecification statusLine(org.hamcrest.Matcher<String> expectedStatusLine)
expect().statusLine(equalTo("No Content")).when().get("/something");
expectedStatusLine
- The expected status line matcher.
ResponseSpecification statusLine(String expectedStatusLine)
expect().statusLine("No Content").when().get("/something");This is the same as:
expect().statusLine(equalTo("No Content")).when().get("/something");
expectedStatusLine
- The expected status line.
ResponseSpecification headers(Map<String,?> expectedHeaders)
E.g. expect that the response of the GET request to "/something" contains header headerName1=headerValue1 and headerName2=headerValue2:
Map expectedHeaders = new HashMap(); expectedHeaders.put("headerName1", "headerValue1")); expectedHeaders.put("headerName2", "headerValue2"); expect().response().headers(expectedHeaders).when().get("/something");
You can also use Hamcrest matchers:
Map expectedHeaders = new HashMap(); expectedHeaders.put("Content-Type", containsString("charset=UTF-8")); expectedHeaders.put("Content-Length", "160"); expect().headers(expectedHeaders).when().get("/something");
expectedHeaders
- The Map of expected response headers
ResponseSpecification headers(String firstExpectedHeaderName, Object firstExpectedHeaderValue, Object... expectedHeaders)
E.g. expect that the response of the GET request to "/something" contains header Pragma=no-cache and Content-Encoding=gzip:
expect().headers("Pragma", "no-cache", "Content-Encoding", "gzip").when().get("/something");
You can also use Hamcrest matchers:
expect().response().headers("Content-Type", containsString("application/json"), "Pragma", equalsTo("no-cache")).when().get("/something");and you can even mix string matching and hamcrest matching:
expect().headers("Content-Type", containsString("application/json"), "Pragma", "no-cache").when().get("/something");
firstExpectedHeaderName
- The name of the first headerfirstExpectedHeaderValue
- The value of the first headerexpectedHeaders
- A list of expected "header name" - "header value" pairs.
ResponseSpecification header(String headerName, org.hamcrest.Matcher<?> expectedValueMatcher)
E.g. expect that the response of the GET request to "/something" contains header Pragma=no-cache:
expect().header("Pragma", containsString("no")).when().get("/something");
You can also expect several headers:
expect().header("Pragma", equalsTo("no-cache")),and().header("Content-Encoding", containsString("zip")).when().get("/something");Also take a look at
headers(String, Object, Object...)
)} for a short version of passing multiple headers.
headerName
- The name of the expected headerexpectedValueMatcher
- The Hamcrest matcher that must conform to the value
ResponseSpecification header(String headerName, String expectedValue)
E.g. expect that the response of the GET request to "/something" contains header Pragma=no-cache:
expect().header("Pragma", "no-cache").when().get("/something");
You can also expect several headers:
expect().header("Pragma", "no-cache"),and().header("Content-Encoding", "gzip").when().get("/something");Also take a look at
headers(String, Object, Object...)
for a short version of passing multiple headers.
headerName
- The name of the expected headerexpectedValue
- The value of the expected header
ResponseSpecification cookies(Map<String,?> expectedCookies)
E.g. expect that the response of the GET request to "/something" contains cookies cookieName1=cookieValue1 and cookieName2=cookieValue2:
Map expectedCookies = new HashMap(); expectedCookies.put("cookieName1", "cookieValue1")); expectedCookies.put("cookieName2", "cookieValue2"); expect().response().cookies(expectedCookies).when().get("/something");
You can also use Hamcrest matchers:
Map expectedCookies = new HashMap(); expectedCookies.put("cookieName1", containsString("Value1")); expectedCookies.put("cookieName2", "cookieValue2"); expect().cookies(expectedCookies).when().get("/something");
expectedCookies
- A Map of expected response cookies
ResponseSpecification cookie(String cookieName)
cookieName
- the cookie to validate that it exists
ResponseSpecification cookies(String firstExpectedCookieName, Object firstExpectedCookieValue, Object... expectedCookieNameValuePairs)
E.g. expect that the response of the GET request to "/something" contains cookies cookieName1=cookieValue1 and cookieName2=cookieValue2:
expect().cookies("cookieName1", "cookieValue1", "cookieName2", "cookieValue2").when().get("/something");
You can also use Hamcrest matchers:
expect().response().cookies("cookieName1", containsString("Value1"), "cookieName2", equalsTo("cookieValue2")).when().get("/something");and you can even mix string matching and hamcrest matching:
expect().cookies("cookieName1", containsString("Value1"), "cookieName2", "cookieValue2").when().get("/something");
firstExpectedCookieName
- The name of the first cookiefirstExpectedCookieValue
- The value of the first cookieexpectedCookieNameValuePairs
- A list of expected "cookie name" - "cookie value" pairs.
ResponseSpecification cookie(String cookieName, org.hamcrest.Matcher<?> expectedValueMatcher)
E.g. expect that the response of the GET request to "/something" contain cookie cookieName1=cookieValue1
expect().cookie("cookieName1", containsString("Value1")).when().get("/something");
You can also expect several cookies:
expect().cookie("cookieName1", equalsTo("cookieValue1")),and().cookie("cookieName2", containsString("Value2")).when().get("/something");Also take a look at
cookies(String, Object, Object...)
for a short version of passing multiple cookies.
cookieName
- The name of the expected cookieexpectedValueMatcher
- The Hamcrest matcher that must conform to the value
ResponseSpecification cookie(String cookieName, Object expectedValue)
E.g. expect that the response of the GET request to "/something" contain cookie cookieName1=cookieValue1:
expect().cookie("cookieName1", "cookieValue1").when().get("/something");
You can also expect several cookies:
expect().cookie("cookieName1", "cookieValue1"),and().cookie("cookieName2", "cookieValue2").when().get("/something");Also take a look at
cookies(String, Object, Object...)
for a short version of passing multiple cookies.
cookieName
- The name of the expected cookieexpectedValue
- The value of the expected cookie
ResponseSpecification log()
given().filter(ResponseLoggingFilter.responseLogger()). ..
ResponseSpecification logOnError()
given().filter(ErrorLoggingFilter.errorLogger()). ..
ResponseSpecification rootPath(String rootPath)
expect(). body("x.y.firstName", is(..)). body("x.y.lastName", is(..)). body("x.y.age", is(..)). body("x.y.gender", is(..)). when(). get(..);you can use a root path and do:
expect(). rootPath("x.y"). body("firstName", is(..)). body("lastName", is(..)). body("age", is(..)). body("gender", is(..)). when(). get(..);Note that this method is exactly the same as
root(String)
.
rootPath
- The root path to use.ResponseSpecification root(String rootPath)
expect(). body("x.y.firstName", is(..)). body("x.y.lastName", is(..)). body("x.y.age", is(..)). body("x.y.gender", is(..)). when(). get(..);you can use a root and do:
expect().root("x.y"). body("firstName", is(..)). body("lastName", is(..)). body("age", is(..)). body("gender", is(..)). when(). get(..);Note that this method is exactly the same as
rootPath(String)
but slightly shorter.
rootPath
- The root path to use.ResponseSpecification contentType(groovyx.net.http.ContentType contentType)
contentType
.
Note that this will affect the way the response is decoded.
E,g. if you can't use JSON/XML matching (see e.g. body(String, Matcher, Object...)
) if you specify a
content-type of "text/plain". If you don't specify the response content type REST Assured will automatically try to
figure out which content type to use.
contentType
- The content type of the response.
ResponseSpecification contentType(String contentType)
contentType
.
Note that this will affect the way the response is decoded.
E,g. if you can't use JSON/XML matching (see e.g. body(String, Matcher, Object...)
) if you specify a
content-type of "text/plain". If you don't specify the response content type REST Assured will automatically try to
figure out which content type to use.
contentType
- The content type of the response.
ResponseSpecification body(org.hamcrest.Matcher<?> matcher, org.hamcrest.Matcher<?>... additionalMatchers)
// Expect that the response body (content) contains the string "winning-numbers" expect().body(containsString("winning-numbers")).when().get("/lotto"); // Expect that the response body (content) contains the string "winning-numbers" and "winners" expect().body(containsString("winning-numbers"), containsString("winners")).when().get("/lotto");
matcher
- The hamcrest matcher that must response body must match.additionalMatchers
- Optionally additional hamcrest matchers that must return true
.
ResponseSpecification body(String key, org.hamcrest.Matcher<?> matcher, Object... additionalKeyMatcherPairs)
Assume that a GET request to "/lotto" returns a JSON response containing:
{ "lotto":{ "lottoId":5, "winning-numbers":[2,45,34,23,7,5,3], "winners":[{ "winnerId":23, "numbers":[2,45,34,23,3,5] },{ "winnerId":54, "numbers":[52,3,12,11,18,22] }] }}You can verify that the lottoId is equal to 5 like this:
expect().body("lotto.lottoId", equalTo(5)).when().get("/lotto");You can also verify that e.g. one of the the winning numbers is 45.
expect().body("lotto.winning-numbers", hasItem(45)).when().get("/lotto");Or both at the same time:
expect().body("lotto.lottoId", equalTo(5)).and().body("lotto.winning-numbers", hasItem(45)).when().get("/lotto");or a slightly short version:
expect().body("lotto.lottoId", equalTo(5), "lotto.winning-numbers", hasItem(45)).when().get("/lotto");
Assume that a GET request to "/xml" returns a XML response containing:
<greeting> <firstName>John</firstName> <lastName>Doe</lastName> </greeting>You can now verify that the firstName is equal to "John" like this:
expect().body("greeting.firstName", equalTo("John")).when().get("/xml");To verify both the first name and last name you can do like this:
expect().body("greeting.firstName", equalTo("John")).and().body("greeting.lastName", equalTo("Doe")).when().get("/xml");Or the slightly shorter version of:
expect().body("greeting.firstName", equalTo("John"), "greeting.lastName", equalTo("Doe")).when().get("/xml");
Note that if the response body type is not of type application/xml or application/json you cannot use this verification.
The only difference between the content
and body
methods are of syntactic nature.
key
- The body keymatcher
- The hamcrest matcher that must response body must match.additionalKeyMatcherPairs
- Optionally additional hamcrest matchers that must return true
.
ResponseSpecification content(String key, List<Argument> arguments, org.hamcrest.Matcher matcher, Object... additionalKeyMatcherPairs)
content(String, java.util.List, org.hamcrest.Matcher, Object...)
expect that you can pass arguments to the key. This
is useful in situations where you have e.g. pre-defined variables that constitutes the key:
String someSubPath = "else"; int index = 1; expect().body("something.%s[%d]", withArgs(someSubPath, index), equalTo("some value")). ..or if you have complex root paths and don't wish to duplicate the path for small variations:
expect(). root("filters.filterConfig[%d].filterConfigGroups.find { it.name == 'Gold' }.includes"). body("", withArgs(0), hasItem("first")). body("", withArgs(1), hasItem("second")). ..The key and arguments follows the standard formatting syntax of Java.
Note that withArgs
can be statically imported from the com.jayway.restassured.RestAssured
class.
key
- The body keymatcher
- The hamcrest matcher that must response body must match.additionalKeyMatcherPairs
- Optionally additional hamcrest matchers that must return true
.
content(String, org.hamcrest.Matcher, Object...)
ResponseSpecification when()
expect().body(containsString("OK")).when().get("/something");is that same as:
expect().body(containsString("OK")).get("/something");
RequestSpecification given()
expect().body(containsString("OK")).given().parameters("param1", "value1").when().get("/something");
ResponseSpecification that()
expect().that().body(containsString("OK")).when().get("/something");is that same as:
expect().body(containsString("OK")).get("/something");
RequestSpecification request()
expect().body(containsString("OK")).and().request().parameters("param1", "value1").when().get("/something");
ResponseSpecification response()
expect().response().body(containsString("OK")).when().get("/something");is that same as:
expect().body(containsString("OK")).get("/something");
ResponseSpecification and()
expect().body(containsString("OK")).and().body(containsString("something else")).when().get("/something");is that same as:
expect().body(containsString("OK")).body(containsString("something else")).when().get("/something");
RequestSpecification with()
expect().body(containsString("OK")).and().with().request().parameters("param1", "value1").get("/something");
ResponseSpecification then()
expect().body(containsString("OK")).then().get("/something");is that same as:
expect().body(containsString("OK")).get("/something");
ResponseSpecification expect()
expect().body(containsString("OK")).and().expect().body(containsString("something else")).when().get("/something");is that same as:
* expect().body(containsString("OK")).and().body(containsString("something else")).when().get("/something");
ResponseSpecification spec(ResponseSpecification responseSpecificationToMerge)
ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); expect(). spec(responseSpec). body("x.y.z", equalTo("something")). when(). get("/something");This is useful when you want to reuse multiple different expectations in several tests.
The specification passed to this method is merged with the current specification. Note that the supplied specification can overwrite data in the current specification. The following settings are overwritten:
specification(ResponseSpecification)
but the name is a bit shorter.
responseSpecificationToMerge
- The specification to merge with.
ResponseSpecification specification(ResponseSpecification responseSpecificationToMerge)
ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); expect(). specification(responseSpec). body("x.y.z", equalTo("something")). when(). get("/something");This is useful when you want to reuse multiple different expectations in several tests.
The specification passed to this method is merged with the current specification. Note that the supplied specification can overwrite data in the current specification. The following settings are overwritten:
spec(ResponseSpecification)
but the name is a bit longer.
responseSpecificationToMerge
- The specification to merge with.
ResponseSpecification parser(String contentType, Parser parser)
expect().body("document.child", equalsTo("something"))..Since application/vnd.uoml+xml is not registered to be processed by the XML parser by default you need to explicitly tell REST Assured to use this parser before making the request:
expect().parser("application/vnd.uoml+xml", Parser.XML).when(). ..;You can also specify by it for every response by using:
RestAssured.registerParser("application/vnd.uoml+xml", Parser.XML);
contentType
- The content-type to registerparser
- The parser to use when verifying the response.ResponseSpecification defaultParser(Parser parser)
expect().defaultParser(Parser.JSON).when(). ..;You can also specify it for every response by using:
RestAssured.defaultParser(Parser.JSON);
parser
- The parser to use when verifying the response if no other parser is found for the response content-type.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |