1. Обзор
В этом кратком руководстве мы рассмотрим некоторые продвинутые сценарии, гарантирующие безопасность. Мы исследовали REST-assured ранее в учебнике Руководство по REST-assured .
Чтобы продолжить, мы рассмотрим примеры, которые показывают, как установить заголовки, файлы cookie и параметры для наших запросов.
Настройка такая же, как и в предыдущей статье, поэтому давайте погрузимся в наши примеры.
2. Настройка параметров
Теперь давайте обсудим, как указать различные параметры для нашего запроса – начиная с параметров пути.
2.1. Параметры пути
Мы можем использовать PathParam(имя параметра, значение) для указания параметра пути:
@Test public void whenUsePathParam_thenOK() { given().pathParam("user", "eugenp") .when().get("/users/{user}/repos") .then().statusCode(200); }
Для добавления нескольких параметров пути мы будем использовать метод path Params() :
@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. Параметры запроса
Далее давайте посмотрим, как мы можем указать параметры запроса с помощью query Param():
@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); }
То парам() метод будет действовать следующим образом 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("/"); }
То парам() метод будет действовать всю жизнь формПарам() для почтовых запросов.
Также обратите внимание, что FormParam() добавляет заголовок Content-Type со значением ” application/x-www-form-urlencoded “.
3. Настройка заголовков
Далее, мы можем настроить заголовки наших запросов с помощью 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.
Для добавления нескольких заголовков мы будем использовать заголовки() метод:
@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 с помощью файла cookie Строитель :
@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-assured.
И, как всегда, полный исходный код для примеров доступен на GitHub .