Поскольку я перешел на Spring Boot 2.0.5 с 1.x, не имея возможности отключить безопасность, я не могу заставить тестовые роли работать с фиктивными MVC-тестами:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ApplicationsControllerShould {
...
@Autowired
private MockMvc mockMvc;
private ObjectMapper mapper = new ObjectMapper();
@Test
@WithMockUser(roles = "ADMIN")
public void handle_CRUD_for_applications() throws Exception {
Application app = Application.builder()
.code(APP_CODE).name(APP_NAME)
.build();
mockMvc.perform(post("/applications")
.accept(MediaType.APPLICATION_JSON_UTF8)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(mapper.writeValueAsString(app)))
.andExpect(authenticated())
.andExpect(status().isOk()); // failure 403!
...
Моя конечная точка контроллерадаже не защищен!
@RestController
@RequestMapping("/applications")
public class ApplicationsController {
...
@PostMapping
public Application addApplication(@RequestBody Application application) {
Assert.isTrue(!applicationsDao.existsById(application.getCode()), "Application code already exists: " + application.getCode());
return applicationsDao.save(application);
}
}
Итак, я имею в тесте сеанс (#authenticated завершается неудачно, когда @WithMockUser закомментирован) и роль между прочим (ROLE_ADMIN виден в следах), но мой запросотвергается, и я не понимаю, что я сделал не так.Спасибо за любую идею!