Deseamos darte la mejor solución que hemos encontrado online. Nosotros queremos que te sirva de ayuda y si puedes compartir alguna mejora hazlo libremente.
Solución:
Para mí, en Spring Boot 2.2.4 (JUnit5), lo siguiente parece haber funcionado y omitir el filtro de seguridad.
@ExtendWith(SpringExtension.class)
@WebMvcTest(SomeController.class)
@AutoConfigureMockMvc(addFilters = false)
public class SomeControllerTest {
...
Nota: esto simplemente deshabilita cualquier filtro en la configuración de SpringSecurity. No deshabilitará la seguridad por completo. En otras palabras, seguirá arrancando la seguridad sin cargar ningún filtro.
Puedes configurar seguro =false en la anotación @WebMvcTest. Omitirá la configuración automática de MockMvc de seguridad de primavera en su Prueba
@WebMvcTest(controllers = SomeController.class, secure = false)
public class SomeControllerTest {
Nota del autor: a partir de 2021, esta respuesta ha quedado obsoleta durante algunos años y probablemente no funcione para usted.
Con Spring Security 4+, encuentro @WithMockUser
anotación para ser muy útil. Proporciona un usuario y una contraseña simulados para probar los métodos de seguridad de Spring anotados con @PreAuthorize o @PostAuthorize. Todo lo que necesita hacer es anotar el método de prueba con @WithMockUser
. El rol predeterminado para el usuario es USER
. También puede anular el nombre de usuario y la función predeterminados.
//default
@Test
@WithMockUser
public void getProfile()
//your test here
//with username and roles
@Test
@WithMockUser(username = "john", roles="ADMIN")
public void getProfile()
//your test here
NOTA: Esta anotación se puede utilizar para clases.
@WithMockUser(username = "john", roles="ADMIN")
public class UsersAdminSecurityTest
Aquí tienes las reseñas y valoraciones
Nos puedes secundar nuestro análisis escribiendo un comentario y dejando una puntuación te damos la bienvenida.