Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 8 · Application directe du cours
Un administrateur imaginaire
Sécuriser l'application · niveau 2
Énoncé
Un test annoté @WithMockUser(username = "personne", roles = "ADMIN") crée un livre et obtient 201. Le compte personne n'existe pourtant pas en base. Pourquoi le test passe-t-il ? Quand utiliser @WithMockUser, et quand httpBasic(…) ?
Corrigé
// Exercice 8.9 : @WithMockUser ne vérifie AUCUN mot de passe, ni même que le compte existe
@Test
@WithMockUser(username = "personne", roles = "ADMIN")
void ex9_unUtilisateurSimule() {
assertThat(mvc.post().uri("/api/livres")
.contentType(MediaType.APPLICATION_JSON).content(LIVRE))
.hasStatus(201);
}
@WithMockUser ne passe pas par l'authentification : il place directement une identité toute faite dans le contexte de sécurité du test. Ni le UserDetailsService, ni BCrypt ne sont appelés ; seules les règles d'autorisation sont vérifiées. On l'utilise pour tester ce que peut faire un rôle (les tests du chapitre 7 adaptés en section 8.6) ; on utilise httpBasic(…) pour tester l'authentification elle-même : mots de passe, comptes désactivés, comptes en base.
100 % gratuit
La suite du chapitre est sur Adloun
- 9 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.