Header, Cookies und Parameter mit REST-Sicherheit

Header, Cookies und Parameter mit REST-Sicherheit

1. Überblick

In diesem kurzen Tutorial werden wir einige REST-gesicherte erweiterte Szenarien untersuchen. Wir haben REST-versichert bereits im Tutoriala Guide to REST-assured untersucht.

Um fortzufahren,we’ll cover examples that show how to set headers, cookie and parameters for our requests.

Das Setup ist das gleiche wie im vorherigen Artikel. Lassen Sie uns also in unsere Beispiele eintauchen.

2. Parameter einstellen

Lassen Sie uns nun diskutieren, wie Sie verschiedene Parameter für unsere Anfrage angeben - beginnend mit den Pfadparametern.

2.1. Pfadparameter

Wir könnenpathParam(parameter-name, value) verwenden, um einen Pfadparameter anzugeben:

@Test
public void whenUsePathParam_thenOK() {
    given().pathParam("user", "eugenp")
      .when().get("/users/{user}/repos")
      .then().statusCode(200);
}

Um mehrere Pfadparameter hinzuzufügen, verwenden wir die MethodepathParams():

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

In diesem Beispiel haben wir benannte Pfadparameter verwendet, aber wir können auch unbenannte Parameter hinzufügen und sogar die beiden kombinieren:

given().pathParams("owner", "eugenp")
  .when().get("/repos/{owner}/{repo}", "tutorials")
  .then().statusCode(200);

Die resultierende URL lautet in diesem Fallhttps://api.github.com/repos/eugenp/tutorials.

Beachten Sie, dass die unbenannten Parameter indexbasiert sind.

2.2. Abfrageparameter

Als nächstes wollen wir sehen, wie wir Abfrageparameter mitqueryParam(): angeben können

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

Die Methodeparam() verhält sich wiequeryParam() mit GET-Anforderungen.

Zum Hinzufügen mehrerer Abfrageparameter können wir entweder mehrerequeryParam()-Methoden verketten oder die Parameter zu einerqueryParams()-Methode hinzufügen:

@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. Formularparameter

Schließlich können wir Formularparameter mitformParam(): angeben

@Test
public void whenUseFormParam_thenSuccess() {

    given().formParams("username", "john","password","1234").post("/");

    given().params("username", "john","password","1234").post("/");
}

Die Methodeparam() wirkt für POST-Anforderungen auf die LebensdauerformParam().

Beachten Sie auch, dassformParam() einenContent-Type-Header mit dem Wert „application/x-www-form-urlencoded“ hinzufügt.

3. Header setzen

Als nächsteswe can customize our request headers using header():

@Test
public void whenUseCustomHeader_thenOK() {

    given().header("User-Agent", "MyAppName").when().get("/users/eugenp")
      .then().statusCode(200);
}

In diesem Beispiel haben wirheader() verwendet, um denUser-Agent-Header festzulegen.

Mit der gleichen Methode können wir auch einen Header mit mehreren Werten hinzufügen:

@Test
public void whenUseMultipleHeaderValues_thenOK() {

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

In diesem Beispiel haben wir eine Anfrage mit zwei Headern:My-Header:val1 undMy-Header:val2.

Zum Hinzufügen mehrerer Header verwenden wir dieheaders()-Methode:

@Test
public void whenUseMultipleHeaders_thenOK() {

    given().header("User-Agent", "MyAppName", "Accept-Charset", "utf-8")
      .when().get("/users/eugenp")
      .then().statusCode(200);
}

4. Cookies hinzufügen

Wir können auch benutzerdefinierte Cookies für unsere Anfrage mitcookie() angeben:

@Test
public void whenUseCookie_thenOK() {

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

Wir können unser Cookie auch mit CookieBuilder anpassen:

@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. Fazit

In diesem Artikel haben wir gezeigt, wie wir Anforderungsparameter, Header und Cookies angeben können, wenn Sie REST-versichert verwenden.

Und wie immer ist der vollständige Quellcode für die Beispieleover on GitHub verfügbar.