he definido este método en mi controlador MVC primavera:¿Cómo JUnit prueba una anotación @PreAuthorize y su EL de resorte especificado por un controlador MVC de resorte?
@RequestMapping(value = "{id}/content", method=RequestMethod.POST)
@PreAuthorize("principal.user.userAccount instanceof T(com.anonym.model.identity.PedagoAccount) AND principal.user.userAccount.userId == #object.pedago.userId AND #form.id == #object.id")
public String modifyContent(@PathVariable("id") Project object, @Valid @ModelAttribute("form") ProjectContentForm form) {
....
}
Luego, en mi prueba JUnit me gustaría llamar a este método y asegurarse de que la condición se verifica preauthorize. Pero cuando configuro el usuario principal en mi prueba JUnit con una cuenta incorrecta, no hay ningún error y el método se completa. Parece que la anotación está anulada.
Pero cuando llamo a este método de una manera normal (sin pruebas), se verifica la autorización previa.
Si es posible, ¿cómo probar esta anotación en una prueba junit y cómo atrapar la excepción si arroja una?
Gracias,
Nicolas
Solo una nota para los demás que usan "principal" en PreAuthorize, esto fallará con una excepción de nullpointerexcpetion y no activará una reautorización a menos que incluya algo similar a isAuthenticated() en la anotación PreAuthorize o en security.xml – chrismarx