Header, Cookies und Parameter mit REST-Sicherheit

1. Übersicht

In diesem kurzen Tutorial werden wir einige REST-gesicherte erweiterte Szenarien untersuchen. Wir haben REST-Assured zuvor im Tutorial als Leitfaden für REST-Assured untersucht.

Um fortzufahren, werden Beispiele behandelt, die zeigen, wie Header, Cookies und Parameter für unsere Anforderungen festgelegt werden.

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 wir verschiedene Parameter für unsere Anfrage angeben können - beginnend mit den Pfadparametern.

2.1. Pfadparameter

Wir können pathParam (Parametername, Wert) 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 pathParams () -Methode:

@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 Fall //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 mit queryParam () 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 param () -Methode verhält sich wie queryParam () mit GET-Anforderungen.

Zum Hinzufügen mehrerer Abfrageparameter können wir entweder mehrere queryParam () -Methoden verketten oder die Parameter einer queryParams () -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 mit formParam () Formularparameter angeben :

@Test public void whenUseFormParam_thenSuccess() { given().formParams("username", "john","password","1234").post("/"); given().params("username", "john","password","1234").post("/"); }

Die param () -Methode fungiert für POST-Anforderungen als Life FormParam () .

Beachten Sie außerdem, dass formParam () einen Content-Type- Header mit dem Wert „ application / x-www-form-urlencodedhinzufügt .

3. Header setzen

Als nächstes können wir unsere Anforderungsheader mit header () anpassen :

@Test public void whenUseCustomHeader_thenOK() { given().header("User-Agent", "MyAppName").when().get("/users/eugenp") .then().statusCode(200); }

In diesem Beispiel haben wir header () verwendet , um den User-Agent- Header festzulegen.

Mit derselben 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 und My-Header: val2.

Zum Hinzufügen mehrerer Header verwenden wir die Methode headers () :

@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 mit cookie () 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 dem Cookie Builder 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. Schlussfolgerung

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 Beispiele auf GitHub verfügbar.