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

1概要

このクイックチュートリアルでは、RESTで保証された高度なシナリオをいくつか探ります。前のチュートリアルリンクでREST-assuredについて調べました。

続けるために、** リクエストのヘッダ、クッキー、パラメータを設定する方法を示す例を説明します。

設定は前の記事と同じですので、例を見てみましょう。

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

この例では、 User-Agent ヘッダーを設定するために header() を使用しました。

同じ方法で複数の値を持つヘッダを追加することもできます。

@Test
public void whenUseMultipleHeaderValues__thenOK() {

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

この例では、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() を使用して、リクエストにカスタムクッキーを指定することもできます。

@Test
public void whenUseCookie__thenOK() {

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

cookie Builder を使ってクッキーをカスタマイズすることもできます。

@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アシュアードを使用するときに要求パラメーター、ヘッダー、およびCookieを指定する方法を説明しました。

そして、いつものように、例の完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/testing-modules/rest-assured[GitHubで利用可能]です。