2016-12-01 15 views
7

Tôi vẫn nhận được quyền truy cập bị từ chối mặc dù phương pháp thử nghiệm của tôi được chú thích bằng @WithMockUser. Tại sao điều này không làm việc trong thử nghiệm tích hợp? Mọi thứ đều ổn với thử nghiệm với @WebAppConfiguration và MockMvc.@WithMockUser không hoạt động trong Kiểm tra tích hợp - Khởi động mùa xuân

thử nghiệm 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)); 
    } 
} 

điều khiển lớp:

@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(); 
    } 

} 
+0

Bạn đã giải quyết nó chưa? Tôi có vấn đề để có được điều này để làm việc cũng như – BigDong

+0

Thật không may,/ – Milso

+0

bạn có sử dụng an ninh mùa xuân oauth2? – BigDong

Trả lời

Các vấn đề liên quan