Il s'agit d'un ensemble de scripts, de type "tests unitaires" permettant de valider le comportement d'un service web, du point de vue d'un client web. # Installation Au minimum il faut Ruby pour l'exécution des scripts. Il faut également : - OpenSSL - Python 2 - Bash (>= 4) - coreutils Une fois Ruby installé, depuis le dossier du projet : bundle install Ça va installer localement des paquets Ruby nécessaires. # Exécution ## Partie "sécurité" : bundle exec ruby -Itest test/secrity_test.rb Il est possible d'utiliser un certificat SSL racine stocké en local (`test/certs/_my_cert.pem`) et paramétré dans la méthode `root_certificate`. Il est possible d'utiliser un binaire `open_ssl` personnalisé, géré dans la méthode `openssl_path`. `test_certificate_level` Permet de vérifier la conformité avec un des niveaux normalisés proposés par Mozilla (https://wiki.mozilla.org/Security/Server_Side_TLS) `test_certificate` Vérifie la validité du certificat `test_accepts_tls_v1` Vérifie que le serveur accepte bien des connexions TLS v1 `test_refuse_ssl_v3` Vérifie que le serveur refuse bien des connexions SSL v3 `test_hsts_header` Vérifie la présence de l'en-tête HTTP `HTTP-Strict-Transport-Security`. ## Partie "redirections" : bundle exec ruby -Itest test/domain_redirects_test.rb `test_redirections` Vérifie que les redirections attendues aient bien lieu. `test_http_codes` Vérifie que les codes HTTP attendus soient bien reçus. ## Partie "assets accessibility" bundle exec ruby -Itest test/assets_accessibility_test.rb `test_rss_feeds` Vérifie la présence de flux RSS sur la page et leur fonctionnement. `test_head_stylelsheets` Vérifie la présence de CSS, qu'elles sont bien accessibles, et que leurs en-têtes HTTP les rendent cachables. `test_head_scripts` Vérifie la présence de JS, qu'ils sont bien accessibles, et que leurs en-têtes HTTP les rendent cachables. `test_images` Vérifie que toutes images de la page sont bien accessibles et cachables. `test_https_src` Vérifie que toutes les balises avec attribut `src` sont bien en HTTPS. `test_cors` Vérifie les en-têtes CORS sur la feuille de style et toutes les polices web qu'elle référence. ## Partie "cookies" bundle exec ruby -Itest test/cookies_test.rb `test_no_session_on_pages` Vérifie que certaines pages ne poussent pas de cookies. `test_session_on_pages` Vérifie que certaines pages poussent bien un cookie. ## Partie "cache HTTP" bundle exec ruby -Itest test/http_cache_test.rb `test_varnish_hit` Vérifie que certaines pages sont bien servies puis mises en cache par Varnish. `test_homepage_first_visit` Vérifie que certaines pages ont des en-têtes corrects pour le cache public. `test_homepage_second_visit` Vérifie que certaines pages rechargées en transmettant les infos de cache reçoivent une réponse "304". `test_login_first_visit` Vérifie que certaines pages ne soient pas mises en cache.