test_webserver/README.md

121 lines
2.9 KiB
Markdown
Raw Normal View History

2016-04-28 18:11:22 +02:00
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.
2016-04-28 22:51:52 +02:00
# Installation
2016-04-28 18:11:22 +02:00
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.
2016-04-28 22:51:52 +02:00
# Exécution
2016-04-28 18:11:22 +02:00
2016-04-28 22:51:52 +02:00
## Partie "sécurité" :
2016-04-28 18:11:22 +02:00
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`.
2016-04-28 22:53:38 +02:00
`test_certificate_level`
2016-04-28 18:11:22 +02:00
Permet de vérifier la conformité avec un des niveaux normalisés proposés par Mozilla (https://wiki.mozilla.org/Security/Server_Side_TLS)
2016-04-28 22:53:38 +02:00
`test_certificate`
2016-04-28 18:11:22 +02:00
Vérifie la validité du certificat
2016-04-28 22:53:38 +02:00
`test_accepts_tls_v1`
2016-04-28 18:11:22 +02:00
Vérifie que le serveur accepte bien des connexions TLS v1
2016-04-28 22:53:38 +02:00
`test_refuse_ssl_v3`
2016-04-28 18:11:22 +02:00
Vérifie que le serveur refuse bien des connexions SSL v3
2016-04-28 22:53:38 +02:00
`test_hsts_header`
2016-04-28 18:11:22 +02:00
Vérifie la présence de l'en-tête HTTP `HTTP-Strict-Transport-Security`.
2016-04-28 22:51:52 +02:00
## Partie "redirections" :
2016-04-28 18:11:22 +02:00
bundle exec ruby -Itest test/domain_redirects_test.rb
2016-04-28 22:53:38 +02:00
`test_redirections`
2016-04-28 18:11:22 +02:00
Vérifie que les redirections attendues aient bien lieu.
2016-04-28 22:53:38 +02:00
`test_http_codes`
2016-04-28 18:11:22 +02:00
Vérifie que les codes HTTP attendus soient bien reçus.
2016-04-28 22:51:52 +02:00
## Partie "assets accessibility"
bundle exec ruby -Itest test/assets_accessibility_test.rb
2016-04-28 22:53:38 +02:00
`test_rss_feeds`
2016-04-28 22:51:52 +02:00
Vérifie la présence de flux RSS sur la page et leur fonctionnement.
2016-04-28 22:53:38 +02:00
`test_head_stylelsheets`
2016-04-28 22:51:52 +02:00
Vérifie la présence de CSS, qu'elles sont bien accessibles, et que leurs en-têtes HTTP les rendent cachables.
2016-04-28 22:53:38 +02:00
`test_head_scripts`
2016-04-28 22:51:52 +02:00
Vérifie la présence de JS, qu'ils sont bien accessibles, et que leurs en-têtes HTTP les rendent cachables.
2016-04-28 22:53:38 +02:00
`test_images`
2016-04-28 22:51:52 +02:00
Vérifie que toutes images de la page sont bien accessibles et cachables.
2016-04-28 22:53:38 +02:00
`test_https_src`
2016-04-28 22:51:52 +02:00
Vérifie que toutes les balises avec attribut `src` sont bien en HTTPS.
2016-04-28 22:53:38 +02:00
`test_cors`
2016-04-28 22:51:52 +02:00
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.