mardi 8 août 2017

How to test file upload in spring boot?

I have implemented a rest service similar to this one.

UserController.java

@RestController
@RequestMapping(path = "/user")
public class UserController {

  private final UserService userService;

  @Autowired
  public UserController(UserService userService) {
    this.userService = userService;
  }

  @PostMapping(path = "/{id}/avatar")
  public void handleUpload(@PathVariable("id") int id, @RequestParam("file") MultipartFile file) {
    if (file == null) {
        throw new DashboardException("Please select a valid picture");
    }
    userService.setAvatar(id, file);
  }

}

Now I am trying to test the rest endpoint with:

UserControllerEndpointTest.java

@Test
public void successfullySetAvatar() throws Exception {
    final InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.png");
    final MockMultipartFile avatar = new MockMultipartFile("test.png", "test.png", "image/png", inputStream);


    doNothing().when(service).setAvatar(candisUserId, avatar);

    final MvcResult result = mockMvc.perform(fileUpload(urlPath).file(avatar))
            .andExpect(status().isOk())
            .andReturn();

    verify(service).setAvatar(candisUserId, avatar);
}

This fails with 400 - Required request part 'file' is not present.

What am I missing?

Aucun commentaire:

Enregistrer un commentaire