REST保証のヘッダ、クッキー、パラメータ

REST保証付きのヘッダー、Cookie、およびパラメーター

1. 概要

このクイックチュートリアルでは、RESTで保証された高度なシナリオをいくつか紹介します。 以前、チュートリアルa Guide to REST-assuredでREST保証について説明しました。

続行するには、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);
}

この例では、名前付きパスパラメータを使用しましたが、名前なしパラメータを追加したり、次の2つを組み合わせたりすることもできます。

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()メソッドは、GET要求ではqueryParam()のように機能します。

複数のクエリパラメータを追加するには、複数の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()メソッドは、POST要求に対して有効期間formParam()を実行します。

また、formParam()は、値「application/x-www-form-urlencoded」のContent-Typeヘッダーを追加することに注意してください。

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:val1My-Header:val2.の2つのヘッダーを持つリクエストがあります

複数のヘッダーを追加するには、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を指定することもできます。

@Test
public void whenUseCookie_thenOK() {

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

CookieBuilderを使用して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. 結論

この記事では、REST-assuredを使用するときにリクエストパラメータ、ヘッダー、Cookieを指定する方法を示しました。

そして、いつものように、例の完全なソースコードはover on GitHubで利用できます。