Cabeçalhos, cookies e parâmetros com garantia REST

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.