HTTP: // локальный / приложения / Foo

льку я перешел на 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 видна в следах), но мой запрос отклоняется, и я не понимаю, что я сделал неправильно. Спасибо за любую идею!

Ответы на вопрос(1)

Ваш ответ на вопрос