Заголовки, файлы cookie и параметры с гарантией REST

Заголовки, файлы cookie и параметры с гарантией REST

1. обзор

В этом кратком руководстве мы рассмотрим некоторые расширенные сценарии с поддержкой REST. Мы уже изучали REST-гарантию ранее в учебникеa Guide to REST-assured.

Чтобы продолжить,we’ll cover examples that show how to set headers, cookie and parameters for our requests.

Настройка такая же, как и в предыдущей статье, поэтому давайте погрузимся в наши примеры.

2. Настройка параметров

Теперь давайте обсудим, как указать различные параметры для нашего запроса, начиная с параметров пути.

2.1. Параметры пути

Мы можем использоватьpathParam(parameter-name, value) для указания параметра пути:

@Test
public void whenUsePathParam_thenOK() {
    given().pathParam("user", "eugenp")
      .when().get("/users/{user}/repos")
      .then().statusCode(200);
}

Чтобы добавить несколько параметров пути, мы будем использовать методpathParams():

@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);
}

В этом примере мы использовали параметры именованного пути, но мы также можем добавить безымянные параметры и даже объединить их:

given().pathParams("owner", "eugenp")
  .when().get("/repos/{owner}/{repo}", "tutorials")
  .then().statusCode(200);

Результирующий URL-адрес в данном случаеhttps://api.github.com/repos/eugenp/tutorials.

Обратите внимание, что безымянные параметры основаны на индексе.

2.2. Параметры запроса

Затем давайте посмотрим, как мы можем указать параметры запроса с помощьюqueryParam():

@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);
}

Методparam() будет действовать какqueryParam() с запросами GET.

Для добавления нескольких параметров запроса мы можем либо связать несколько методовqueryParam(), либо добавить параметры в методqueryParams():

@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. Параметры формы

Наконец, мы можем указать параметры формы, используяformParam():

@Test
public void whenUseFormParam_thenSuccess() {

    given().formParams("username", "john","password","1234").post("/");

    given().params("username", "john","password","1234").post("/");
}

Методparam() будет действовать на протяжении жизниformParam() для запросов POST.

Также обратите внимание, чтоformParam() добавляет заголовокContent-Type со значением «application/x-www-form-urlencoded».

3. Установка заголовков

Далее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);
}

В этом примере мы использовалиheader() для установки заголовкаUser-Agent.

Мы также можем добавить заголовок с несколькими значениями, используя один и тот же метод:

@Test
public void whenUseMultipleHeaderValues_thenOK() {

    given().header("My-Header", "val1", "val2")
      .when().get("/users/eugenp")
      .then().statusCode(200);
}

В этом примере у нас будет запрос с двумя заголовками:My-Header:val1 иMy-Header:val2..

Для добавления нескольких заголовков воспользуемся методомheaders():

@Test
public void whenUseMultipleHeaders_thenOK() {

    given().header("User-Agent", "MyAppName", "Accept-Charset", "utf-8")
      .when().get("/users/eugenp")
      .then().statusCode(200);
}

4. Добавление файлов cookie

Мы также можем указать пользовательский файл cookie для нашего запроса, используяcookie():

@Test
public void whenUseCookie_thenOK() {

    given().cookie("session_id", "1234").when().get("/users/eugenp")
      .then().statusCode(200);
}

Мы также можем настроить наш файл cookie с помощью файла 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. Заключение

В этой статье мы показали, как можно указать параметры запроса, заголовки и файлы cookie при использовании REST-гарантированного.

И, как всегда, доступен полный исходный код примеровover on GitHub.