cnumr / EcoIndex

Dépôt du site www.ecoindex.fr
http://www.ecoindex.fr
Other
68 stars 13 forks source link

Soucis au niveau des type de tests effectués - API - Verif content-type #143

Closed DocRoms closed 2 years ago

DocRoms commented 2 years ago

Ce soucis est un soucis API, il faut que l'on puisse vérifier le type mime du content-type de la ressource testée. Vu que nous ne souhaitons tester que des sites internet, il nous faut vérifier que le content type soit bien égal à text/html.

Idéalement, il faudrait renvoyer une erreur à intérpreter coté front, que nos users sachent que les APIs et les ressources CSS/JS ne peuvent pas être testé unitairement.

Discussed in https://github.com/cnumr/EcoIndex/discussions/140

Originally posted by **DocRoms** September 17, 2022 @vvatelot m'a également transmis la liste du `top 50` des sites testés sur ecoIndex v2, et j'ai pu constaté que nous avions la possibilité de tester non pas que des pages, mais aussi des ressources ou des pages API. Ainsi, si on teste une route API qui renvoie du JSON, ou un fichier CSS, on s'octroie un grade A, sans difficulté. Ici il faut que l'on fasse deux vérifications : - la première coté FRONT, en testant le type d'URL et en vérifiant que l'on tente pas de tester une ressource (JS/CSS/PNG/...) - la seconde coté API, en testant le `content-type` que celui-ci retourne bien du `text/html`. Les deux vérifications sont essentielles, la première va éviter de faire trop d'appels à l'API, la seconde valider le résultat.
vvatelot commented 2 years ago

Voilà la réponse proposée si la ressource analysée n'est pas une page html. L'API renverrait une 500 avec le contenu:

{
  "detail": {
    "args": [
      {
        "message": "This resource is not a standard page with mimeType 'text/html'"
      }
    ],
    "exception": "TypeError",
    "message": null
  }
}

OK ?

vvatelot commented 2 years ago

Finalement, il s'agira d'une erreur avec le code custom 520:

{
  "detail": {
    "mimetype": "text/css",
    "message": "This resource is not a standard page with mimeType 'text/html'"
  }
}
yaaax commented 2 years ago

Ca me parait plus simple :)