From 35a808f5e6bbb1596e219f66cffca69379067646 Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Wed, 7 Dec 2022 20:36:28 +0100 Subject: [PATCH] Ajout de HowtoHurl --- HowtoHurl.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 HowtoHurl.md diff --git a/HowtoHurl.md b/HowtoHurl.md new file mode 100644 index 00000000..2160b64b --- /dev/null +++ b/HowtoHurl.md @@ -0,0 +1,80 @@ +--- +categories: tests http +title: Howto Hurl +... + +* Site/dépôt officiel : + +**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. \ No newline at end of file