RESTで保証されたヘッダー、Cookie、パラメーター
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:val1とMy-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で入手できます。