En-têtes, cookies et paramètres avec assurance REST

1. Vue d'ensemble

Dans ce tutoriel rapide, nous explorerons certains scénarios avancés garantis par REST. Nous avons déjà exploré dans le didacticiel un guide de REST-assuré.

Pour continuer, nous allons couvrir des exemples qui montrent comment définir des en-têtes, des cookies et des paramètres pour nos requêtes.

La configuration est la même que celle de l'article précédent, alors plongons dans nos exemples.

2. Définition des paramètres

Voyons maintenant comment spécifier différents paramètres pour notre requête - en commençant par les paramètres de chemin.

2.1. Paramètres de chemin

Nous pouvons utiliser pathParam (nom-paramètre, valeur) pour spécifier un paramètre de chemin:

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

Pour ajouter plusieurs paramètres de chemin, nous utiliserons la méthode 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); }

Dans cet exemple, nous avons utilisé des paramètres de chemin nommés, mais nous pouvons également ajouter des paramètres sans nom, et même combiner les deux:

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

L'URL résultante, dans ce cas, est //api.github.com/repos/eugenp/tutorials.

Notez que les paramètres sans nom sont basés sur des index.

2.2. Paramètres de requête

Ensuite, voyons comment nous pouvons spécifier des paramètres de requête à l'aide de 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); }

La méthode param () agira comme queryParam () avec les requêtes GET.

Pour ajouter plusieurs paramètres de requête, nous pouvons soit enchaîner plusieurs méthodes queryParam () , soit ajouter les paramètres à une méthode 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. Paramètres de formulaire

Enfin, nous pouvons spécifier les paramètres du formulaire en utilisant formParam ():

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

La méthode param () agira à vie formParam () pour les requêtes POST.

Notez également que formParam () ajoute un en - tête Content-Type avec la valeur « application / x-www-form-urlencoded ».

3. Définition des en-têtes

Ensuite, nous pouvons personnaliser nos en-têtes de demande en utilisant header ():

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

Dans cet exemple, nous avons utilisé header () pour définir l'en - tête User-Agent .

Nous pouvons également ajouter un en-tête avec plusieurs valeurs en utilisant la même méthode:

@Test public void whenUseMultipleHeaderValues_thenOK() { given().header("My-Header", "val1", "val2") .when().get("/users/eugenp") .then().statusCode(200); }

Dans cet exemple, nous aurons une requête avec deux en-têtes: My-Header: val1 et My-Header: val2.

Pour ajouter plusieurs en-têtes, nous utiliserons la méthode headers () :

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

4. Ajout de cookies

Nous pouvons également spécifier un cookie personnalisé à notre demande en utilisant cookie () :

@Test public void whenUseCookie_thenOK() { given().cookie("session_id", "1234").when().get("/users/eugenp") .then().statusCode(200); }

Nous pouvons également personnaliser notre cookie à l'aide de 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. Conclusion

Dans cet article, nous avons montré comment nous pouvons spécifier des paramètres de requête, des en-têtes et des cookies lors de l'utilisation de REST-Assuré.

Et, comme toujours, le code source complet des exemples est disponible à l'adresse over sur GitHub.