Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →