Ejecute pruebas unitarias en controladores que requieren autenticación
Tengo una aplicación de arranque de primavera que requiere inicio de sesión para algunas acciones. Estoy tratando de probarlos usandoMockMvc
, pero no parece funcionar. Sigo recibiendo una respuesta HTTP con el estado 403 (prohibido). Probablemente hay algo mal con la parte de autenticación.
He intentado seguir eldocumentación, pero no pude hacerlo funcionar.
Este es mi código de prueba actual:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {Application.class})
@WebIntegrationTest("server.port = 8093")
public class PasswordChangeTests {
@Autowired
private EmbeddedWebApplicationContext webApplicationContext;
@Autowired
private UserRepository userRepository;
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
this.mockMvc = MockMvcBuilders
.webAppContextSetup(webApplicationContext)
.apply(springSecurity())
.build();
}
@Test
public void changePasswordWorks() throws Exception {
// Send password change request
PasswordChangeRepresentation passwordChange = new PasswordChangeRepresentation(DefaultUsers.Admin.getPassword(), "12345678");
mockMvc.perform(MockMvcRequestBuilders.request(HttpMethod.POST, "/password/change")
.content(new ObjectMapper().writeValueAsString(passwordChange))
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
// Check that the password has been changed
User user = this.userRepository.findByUsername(DefaultUsers.Admin.getEmail());
Assert.assertEquals(user.getPassword(), "12345678");
}
}
Lo siento si me falta algo obvio. Esta es mi primera experiencia con botas de primavera.