Testing con Spring Security Context

Muy buenas, retomamos de nuevo algunos tutoriales, y para volver a las andadas, más que un tutorial es un tip por si en algún momento te has tenido que enfrentar con la necesidad de testear un método o una función que previamente recupera un usuario mediante Spring Security, algo por el estilo de esto:


public App getUser() {
 User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
 return user;
}

Cuando hacemos test unitarios lo que debemos hacer es crear un mock de esto, pero ¿como lo podemos hacer?


Bien, pues antes de ejecutar tu test deberás hacer lo siguiente:


public class BaseTest {


 @Before
 public void setupMock() {
   MockitoAnnotations.initMocks(this);
 }
 
 @Test
 public void mockUser() {
 User user = mock(User.class);
 Authentication authentication = mock(Authentication.class);
 SecurityContext securityContext = mock(SecurityContext.class);
 when(securityContext.getAuthentication()).thenReturn(authentication);
 SecurityContextHolder.setContext(securityContext);
 when(SecurityContextHolder.getContext().getAuthentication().getPrincipal()).thenReturn(user);
 }
 
}

Como vemos de esta forma podremos probar cualquier método que recupere a un usuario, simulando su funcionamiento sin ningún problema.


Espero que te haya gustado, nos vemos en la próxima :)

14 vistas0 comentarios

Entradas Recientes

Ver todo

©2020 por Juanma Perez.