18
0
Fork 0

Ajout de HowtoHurl

This commit is contained in:
Jérémy Lecour 2022-12-07 20:36:28 +01:00 committed by Jérémy Lecour
parent 6e4e6c49b5
commit 35a808f5e6
1 changed files with 80 additions and 0 deletions

80
HowtoHurl.md Normal file
View File

@ -0,0 +1,80 @@
---
categories: tests http
title: Howto Hurl
...
* Site/dépôt officiel : <https://hurl.dev/>
**Hurl** est un outil en ligne de commande qui exécute des requêtes HTTP définies dans un format simple et lisible.
Il peut enchaîner les requêtes, capturer les valeurs d'en-têtes et du corps de la réponse.
Il peut récupérer des données, tester des sessions HTTP ainsi que des API JSON ou XML.
Il utilise la `libcurl` comme moteur de requêtes HTTP.
Hurl est développé en Rust, par [l'équipe « Open Source » de l'opérateur Orange](https://github.com/Orange-OpenSource/hurl/).
## Installation
Il n'y a pas de paquet dans les dépôts officiels de Debian.
On peut télécharger manuellement un paquet ou bien récupérer un binaire pré-compilé.
### Paquet Debian
~~~
# curl -LO https://github.com/Orange-OpenSource/hurl/releases/download/1.8.0/hurl_1.8.0_amd64.deb
# dpkg -i hurl_1.8.0_amd64.deb
$ hurl --version
hurl 1.8.0 libcurl/7.74.0 OpenSSL/1.1.1n zlib/1.2.11 brotli/1.0.9 libidn2/2.3.0 libssh2/1.9.0 nghttp2/1.43.0
Features (libcurl): alt-svc AsynchDNS brotli HTTP2 IDN IPv6 Largefile libz NTLM NTLM_WB SPNEGO SSL TLS-SRP UnixSockets
Features (built-in): brotli
~~~
## Utilisation
On crée un fichier par site dans `tests/monsite.hurl` :
~~~
# Redirects
GET http://example.com
HTTP/* 301
Location: https://example.com/
GET http://www.example.com
HTTP/* 301
Location: https://example.com/
# Cache headers
## 1st request, warm-up
GET https://example.com
HTTP/2 200
x-cacheable: TRUE
strict-transport-security: max-age=63072000
## 2nd request, cache should hit
GET https://example.com
HTTP/2 200
[Asserts]
header "x-cache" == "HIT"
header "age" exists
header "age" != "0"
~~~
NB : des simplifications de syntaxe sont [en cours de préparation](https://github.com/Orange-OpenSource/hurl/issues?q=is%3Aissue+author%3Ajlecour+).
On joue la commande `$ hurl --test tests/monsite.hurl` pour un seul site ou `$ hurl --test tests/*.hurl` pour tous les sites à la suite.
Codes de retour possibles :
* `0` : toutes les assertions sont satisfaites ;
* `1` : erreur d'option sur la ligne de commande ;
* `2` : erreur de lecture/analyse d'un fichier d'entrée ;
* `3` : erreur d'exécution (timeout de connexion…) ;
* `4` : erreur sur une ou plusieurs assertions non satisfaites.
Avec l'option `--verbose` on peut avoir une sortie détaillée.