Tester des services REST avec REST Assured

REST Assured est un DSL Java open source de chez Jayway simplifiant les tests de services REST. Il permet de créer des requêtes de type POST, GET, PUT, DELETE et HEAD et peut être utilisé pour valider et vérifier la réponse de ces types de requêtes.

Ok, étant donné que la documentation est bien faite, je ne vais pas entrer dans les détails, mais voici un avant-goût, en reprenant quelques exemples présents dans la documentation, qui j’espère vous donnera envie d’approfondir.

Exemple 1 – JSON :

Partons du principe qu’une requête GET sur http://localhost:8080/lotto retourne le JSON suivant :

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"lotto":{
"lottoId":5,
"winning-numbers":[2,45,34,23,7,5,3],
"winners":[{
"winnerId":23,
"numbers":[2,45,34,23,3,5]
},{
"winnerId":54,
"numbers":[52,3,12,11,18,22]
}]
}
}

REST assured nous permet d’exécuter la requête GET et à en vérifier la réponse.

Vérifions que lottoId est égal à 5 :

1
2
3
4
expect()
.body("lotto.lottoId", equalTo(5))
.when()
.get("/lotto");

Maintenant nous allons nous assurer que les winnerId sont 23 et 54 :

1
2
3
4
expect()
.body("lotto.winners.winnerId", hasItems(23, 54))
.when()
.get("/lotto");

Exemple 2 – XML :

Le XML peut être validé d’une façon similaire. Imaginons qu’une requête POST vers http://localhost:8080/greetXML nous retourne :

<greeting>
   <firstName>{params("firstName")}</firstName>
   <lastName>{params("lastName")}</lastName>
</greeting>

On peut facilement valider la réponse comme ceci :

1
2
3
4
5
6
given()
.parameters("firstName", "John", "lastName", "Doe")
.expect()
.body("greeting.firstName", equalTo("John"))
.when()
.post("/greetXML");

Il est également possible de valider une réponse XML en utilisant X-path:

1
2
3
4
5
expect()
.body(hasXPath("/greeting/firstName[text()='John']"))
.with()
.parameters("firstName", "John", "lastName", "Doe")
.post("/greetXML");

Il est également possible de récupérer d’autres éléments d’une requête: les Headers, les cookies, le status etc …

Response response = get("/lotto");

// Get all headers
Headers allHeaders = response.getHeaders();
// Get a single header value:
String headerName = response.getHeader("headerName");

// Get all cookies as simple name-value pairs
Map<String, String> allCookies = response.getCookies();
// Get a single cookie value:
String cookieValue = response.getCookie("cookieName");

// Get status line
String statusLine = response.getStatusLine();
// Get status code
int statusCode = response.getStatusCode();

Le but ici n’étant pas de traduire la documentation, si vous désirez avoir plus de détails concernant cet outil visiblement assez simple d’utilisation permettant une grande lisibilité des tests grâce à l’application du pattern Fluent Builder et se voulant plutôt complet, voici quelques liens:

Documentation REST Assured
La javadoc
Une autre page de documentation

Quelques exemples de classe de test :

REST Assured tests
JsonPathTest
XmlPathTest

Article sur le blog de Jayway

Et pour les plus motivés, voici le magazine JayView comprenant un article de 5 page trés complet sur REST assured.

VN:R_U [1.9.22_1171]
Rating: 0 (from 0 votes)
Share
Ce contenu a été publié dans Non classé. Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire