@WithMockUser does not work in integration test - Spring boot

I still get access denied, although my testing method is annotated using @WithMockUser. Why does this not work in the integration test? Everything is fine with the test with @WebAppConfiguration and MockMvc.

Testing Class:

@RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class FileUploadIntegrationTest { @Autowired private TestRestTemplate restTemplate; @MockBean private FileStorageService storageService; @Test public void classPathResourceTest() throws Exception { ClassPathResource resource = new ClassPathResource("/test/testFile.txt", getClass()); assertThat(resource.exists(), is(true)); } @Test @WithMockUser(username="tester",roles={"USER"}) public void shouldUploadFile() throws Exception { ClassPathResource resource = new ClassPathResource("/test/testFile.txt", getClass()); MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>(); map.add("file", resource); ResponseEntity<String> response = this.restTemplate.postForEntity("/files", map, String.class); // assertThat(response.getStatusCode(), is(HttpStatus.OK)); then(storageService).should().addFile((any(String.class)), any(MultipartFile.class)); } } 

Controller Class:

 @RestController @RequestMapping("/files") @PreAuthorize(value = "hasRole('ROLE_USER')") public class FileUploadController { private FileStorageService fileStorageService; private AuthenticationFacade authenticationFacade; @Autowired public FileUploadController(FileStorageService fileUploadService, AuthenticationFacade authenticationFacade) { this.fileStorageService = fileUploadService; this.authenticationFacade = authenticationFacade; } @ResponseBody @PostMapping public ResponseEntity<UUID> uploadFile(@RequestParam("file") MultipartFile file) { UUID uuid = this.fileStorageService.addFile(authenticationFacade.getAuthentication().getName(), file); if (uuid != null) return ResponseEntity.ok(uuid); else return (ResponseEntity<UUID>) ResponseEntity.badRequest(); } } 
+7
java spring spring-boot spring-security
source share
1 answer

Failed to resolve this issue with @WithMockUser.

You can try using the Profiles approach described here: fooobar.com/questions/333427 / ....

0
source share

All Articles