7
votes

Spring 3 Test d'intégration du contrôleur MVC - Inject Principal dans la méthode

Dans le cadre du printemps 3 MVC, il est possible d'injecter l'objet d'utilisateur (principe) actuellement connecté dans une méthode du contrôleur.

par exemple par exemple xxx

Ceci est documenté Dans le cadre de la documentation de printemps 3 ici: http: // statique. springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmbapping-Arguments .

Ceci fonctionne dans le Code de production. Cependant, je ne sais pas comment tester cela. Lorsque je crée un test d'intégration (après avoir configuré le contexte de sécurité du ressort) aussi) et appelez la méthode de la poignée du contrôleur, le principal est toujours nul! xxx

Les tests fonctionnent correctement et tout sauf le principal est NULL. < p> Des idées?

TIA

Ayub


0 commentaires

3 Réponses :


2
votes

Je fais quelque chose comme ça dans mes tests avant d'appeler le code à l'aide de la sécurité de printemps (tel que le résolveur de paramètres principaux que vous testez):

SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken("wiseau", "Love is blind"));


0 commentaires

11
votes

Après un aspect rapide dans les sources de printemps, cela devrait fonctionner:

request.setUserPrincipal(somePrincipal);


0 commentaires

4
votes

J'ai essayé de le faire il y a quelque temps, voici la méthode que j'ai utilisée pour configurer l'authentification.

protected void setSecurityContext(String login){
            userDetailsTest = userManager.loadUserByUsername(login);
            TestingAuthenticationToken testingAuthenticationToken = new TestingAuthenticationToken(userDetailsTest, userDetailsTest.getAuthorities());
            SecurityContext securityContext = new SecurityContextImpl();
            securityContext.setAuthentication((Authentication) testingAuthenticationToken);
            SecurityContextHolder.setContext(securityContext);
         } 


2 commentaires

Bonjour j'ai essayé l'exemple ci-dessus, ce qui est similaire à ce que j'ai essayé plus tôt.


Oups, qu'est-ce que je voulais dire, j'ai essayé ce qui précède et que cela ne semblait pas marcher. Merci