В Spring Boot 1.4.1 я хочу выполнить модульное тестирование (не интеграционное тестирование) с помощью сервисного метода, доступ к которому ограничен @ PreAuthorize.
Проблема в том, что @PreAuthorize, похоже, небыть проверенным при запуске тестового соло из Eclipse (пока не пытайтесь с mvn test).
Тогда, если мне удастся чудесным образом правильно запустить тест, я попытаюсь работать с интерфейсом StudyService, а не сimpl.
Вот мой тестовый класс:
@RunWith(MockitoJUnitRunner.class)
public class TestMethodSecurity {
private static final Long STUDY_ID = 1L;
@Mock
private StudyRepository studyRepository;
@InjectMocks
private StudyServiceImpl studyService;
@Before
public void setup() {
given(studyRepository.findOne(STUDY_ID)).willReturn(ModelsUtil.createStudy());
}
@Test
public void findByIdWithoutAccessRightTest() {
Study study = studyService.findById(STUDY_ID);
}
}
Это сервис:
@Service
public class StudyServiceImpl implements StudyService {
@Autowired
private StudyRepository studyRepository;
@Override
@PreAuthorize("hasAnyRole('DOES NOT EVENT CHECK SYNTAX")
public Study findById(final Long id) {
return studyRepository.findOne(id);
}
}
Тест пройден успешно, что не удалось.