| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | === SecurityMockMvcResultHandlersSpring Security provides a few ``ResultHandler``s implementations.In order to use Spring Security's ``ResultHandler``s implementations ensure the following static import is used:[source,java]----import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultHandlers.*;----==== Exporting the SecurityContextOften times we want to query a repository to see if some `MockMvc` request actually persisted in the database.In some cases our repository query uses the xref:features/integrations/data.adoc[Spring Data Integration] to filter the results based on current user's username or any other property.Let's see an example:A repository interface:[source,java]----private interface MessageRepository extends JpaRepository<Message, Long> {	@Query("SELECT m.content FROM Message m WHERE m.sentBy = ?#{ principal?.name }")	List<String> findAllUserMessages();}----Our test scenario:[source,java]----mvc	.perform(post("/message")		.content("New Message")		.contentType(MediaType.TEXT_PLAIN)	)	.andExpect(status().isOk());List<String> userMessages = messageRepository.findAllUserMessages();assertThat(userMessages).hasSize(1);----This test won't pass because after our request finishes, the `SecurityContextHolder` will be cleared out by the filter chain.We can then export the `TestSecurityContextHolder` to our `SecurityContextHolder` and use it as we want:[source,java]----mvc	.perform(post("/message")		.content("New Message")		.contentType(MediaType.TEXT_PLAIN)	)	.andDo(exportTestSecurityContext())	.andExpect(status().isOk());List<String> userMessages = messageRepository.findAllUserMessages();assertThat(userMessages).hasSize(1);----[NOTE]====Remember to clear the `SecurityContextHolder` between your tests, or it may leak amongst them====
 |