Ajout de HowtoHurl
This commit is contained in:
parent
6e4e6c49b5
commit
35a808f5e6
80
HowtoHurl.md
Normal file
80
HowtoHurl.md
Normal 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.
|
Loading…
Reference in a new issue