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:val1とMy-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で利用できます。