1. 概要

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

続行するには、リクエストのヘッダー、Cookie、パラメーターを設定する方法を示す例を取り上げます。

セットアップは前の記事と同じなので、例を詳しく見ていきましょう。

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. ヘッダーの設定

次に、 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().headers("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);
}

Cookie Builderを使用して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を指定する方法を示しました。

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