rest-assured-header-cookie-parameter
Headers, Cookies and Parameters with REST-assured
1. Overview
In this quick tutorial, we’ll explore some REST-assured advanced scenarios. We explored REST-assured before in the tutorial a Guide to REST-assured.
To continue, we’ll cover examples that show how to set headers, cookie and parameters for our requests.
The setup is the same as the previous article, so let’s dive into our examples.
2. Setting Parameters
Now, let’s discuss how to specify different parameters to our request – starting with path parameters.
2.1. Path Parameters
@Test
public void whenUsePathParam_thenOK() {
given().pathParam("user", "eugenp")
.when().get("/users/{user}/repos")
.then().statusCode(200);
}
To add multiple path parameters we’ll use the pathParams() method:
@Test
public void whenUseMultiplePathParam_thenOK() {
given().pathParams("owner", "eugenp", "repo", "tutorials")
.when().get("/repos/{owner}/{repo}")
.then().statusCode(200);
given().pathParams("owner", "eugenp")
.when().get("/repos/{owner}/{repo}","tutorials")
.then().statusCode(200);
}
In this example, we’ve used named path parameters, but we can also add unnamed parameters, and even combine the two:
given().pathParams("owner", "eugenp")
.when().get("/repos/{owner}/{repo}", "tutorials")
.then().statusCode(200);
The resulting URL, in this case, is https://api.github.com/repos/eugenp/tutorials.
Note that the unnamed parameters are index-based.
2.2. Query Parameters
@Test
public void whenUseQueryParam_thenOK() {
given().queryParam("q", "john").when().get("/search/users")
.then().statusCode(200);
given().param("q", "john").when().get("/search/users")
.then().statusCode(200);
}
The param() method will act like queryParam() with GET requests.
For adding multiple query parameters, we can either chain several queryParam() methods, or add the parameters to a queryParams() method:
@Test
public void whenUseMultipleQueryParam_thenOK() {
int perPage = 20;
given().queryParam("q", "john").queryParam("per_page",perPage)
.when().get("/search/users")
.then().body("items.size()", is(perPage));
given().queryParams("q", "john","per_page",perPage)
.when().get("/search/users")
.then().body("items.size()", is(perPage));
}
2.3. Form Parameters
@Test
public void whenUseFormParam_thenSuccess() {
given().formParams("username", "john","password","1234").post("/");
given().params("username", "john","password","1234").post("/");
}
The param() method will act life formParam() for POST requests.
Also note that formParam() adds a Content-Type header with the value “application/x-www-form-urlencoded“.
3. Setting Headers
@Test
public void whenUseCustomHeader_thenOK() {
given().header("User-Agent", "MyAppName").when().get("/users/eugenp")
.then().statusCode(200);
}
In this example, we’ve used header() to set the User-Agent header.
We can also add a header with multiple values using the same method:
@Test
public void whenUseMultipleHeaderValues_thenOK() {
given().header("My-Header", "val1", "val2")
.when().get("/users/eugenp")
.then().statusCode(200);
}
In this example, we’ll have a request with two headers: My-Header:val1 and My-Header:val2.
For adding multiple headers, we’ll use the headers() method:
@Test
public void whenUseMultipleHeaders_thenOK() {
given().header("User-Agent", "MyAppName", "Accept-Charset", "utf-8")
.when().get("/users/eugenp")
.then().statusCode(200);
}
4. Adding Cookies
@Test
public void whenUseCookie_thenOK() {
given().cookie("session_id", "1234").when().get("/users/eugenp")
.then().statusCode(200);
}
We can also customize our cookie using cookie Builder:
@Test
public void whenUseCookieBuilder_thenOK() {
Cookie myCookie = new Cookie.Builder("session_id", "1234")
.setSecured(true)
.setComment("session id cookie")
.build();
given().cookie(myCookie)
.when().get("/users/eugenp")
.then().statusCode(200);
}
5. Conclusion
In this article, we’ve shown how we can specify request parameters, headers, and cookies when using REST-assured.
And, as always, the full source code for the examples is available over on GitHub.