Cabeçalhos, cookies e parâmetros com garantia REST
1. Visão geral
Neste tutorial rápido, vamos explorar alguns cenários avançados garantidos por REST. Exploramos o REST garantido antes no tutoriala Guide to REST-assured.
Para continuar,we’ll cover examples that show how to set headers, cookie and parameters for our requests.
A configuração é a mesma do artigo anterior, então vamos mergulhar em nossos exemplos.
2. Parâmetros de configuração
Agora, vamos discutir como especificar parâmetros diferentes para nossa solicitação - começando com parâmetros de caminho.
2.1. Parâmetros do caminho
Podemos usarpathParam(parameter-name, value) para especificar um parâmetro de caminho:
@Test
public void whenUsePathParam_thenOK() {
given().pathParam("user", "eugenp")
.when().get("/users/{user}/repos")
.then().statusCode(200);
}
Para adicionar vários parâmetros de caminho, usaremos o métodopathParams():
@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);
}
Neste exemplo, usamos parâmetros de caminho nomeados, mas também podemos adicionar parâmetros não nomeados e até mesmo combinar os dois:
given().pathParams("owner", "eugenp")
.when().get("/repos/{owner}/{repo}", "tutorials")
.then().statusCode(200);
O URL resultante, neste caso, éhttps://api.github.com/repos/eugenp/tutorials.
Observe que os parâmetros sem nome são baseados em índice.
2.2. Parâmetros de consulta
A seguir, vamos ver como podemos especificar parâmetros de consulta usandoqueryParam():
@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);
}
O métodoparam() agirá comoqueryParam() com solicitações GET.
Para adicionar vários parâmetros de consulta, podemos encadear vários métodosqueryParam() ou adicionar os parâmetros a um métodoqueryParams():
@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. Parâmetros do formulário
Finalmente, podemos especificar os parâmetros do formulário usandoformParam():
@Test
public void whenUseFormParam_thenSuccess() {
given().formParams("username", "john","password","1234").post("/");
given().params("username", "john","password","1234").post("/");
}
O métodoparam() atuará porformParam() para solicitações POST.
Observe também queformParam() adiciona um cabeçalhoContent-Type com o valor “application/x-www-form-urlencoded“.
3. Configurando cabeçalhos
A seguir,we can customize our request headers using header():
@Test
public void whenUseCustomHeader_thenOK() {
given().header("User-Agent", "MyAppName").when().get("/users/eugenp")
.then().statusCode(200);
}
Neste exemplo, usamosheader() para definir o cabeçalhoUser-Agent.
Também podemos adicionar um cabeçalho com vários valores usando o mesmo método:
@Test
public void whenUseMultipleHeaderValues_thenOK() {
given().header("My-Header", "val1", "val2")
.when().get("/users/eugenp")
.then().statusCode(200);
}
Neste exemplo, teremos uma solicitação com dois cabeçalhos:My-Header:val1 eMy-Header:val2.
Para adicionar vários cabeçalhos, usaremos o métodoheaders():
@Test
public void whenUseMultipleHeaders_thenOK() {
given().header("User-Agent", "MyAppName", "Accept-Charset", "utf-8")
.when().get("/users/eugenp")
.then().statusCode(200);
}
4. Adicionando Cookies
Também podemos especificar um cookie personalizado para nossa solicitação usandocookie():
@Test
public void whenUseCookie_thenOK() {
given().cookie("session_id", "1234").when().get("/users/eugenp")
.then().statusCode(200);
}
Também podemos personalizar nosso cookie usando o cookieBuilder:
@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. Conclusão
Neste artigo, mostramos como podemos especificar parâmetros de solicitação, cabeçalhos e cookies ao usar REST garantido.
E, como sempre, o código-fonte completo dos exemplos está disponívelover on GitHub.