Мне нужно проверить мои контроллеры REST, которые они защищены с помощью Spring Security. Я использую MockMvc в качестве ссылки весной безопасности предполагает здесьMockMvc и Spring Security - Null FilterChainProxy
http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#test-mockmvc
Тест:
@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class LikesTest {
protected MockMvc mockMvc;
@Autowired
private WebApplicationContext context;
@Before
public void setup() {
mockMvc = MockMvcBuilders
.webAppContextSetup(context)
//.standaloneSetup(new MessageController())
.apply(SecurityMockMvcConfigurers.springSecurity())
.build();
}
@Test
@WithMockUser("user")
public void testAddLike() throws Exception {
mockMvc.perform(get("/like?msgId=4&like=false"));
}
}
Когда я бегу тест JUnit, я получаю этот отказ след
java.lang.NullPointerException at org.springfra mework.security.web.FilterChainProxy.getFilters (FilterChainProxy.java:223)
Кроме того, если удалить компонент внутри applicationContext.xml:
<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy"/>
Тогда я получаю этот отказ след:
java.lang.IllegalStateException: springSecurityFilterChain не может быть null. Убедитесь, что Bean с именем springSecurityFilterChain реализующий фильтр присутствует или вводит фильтр, который будет использоваться. в org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurer.beforeMockMvcCreated (SecurityMockMvcConfigurer.java:62)
Я понятия не имею, почему FilterChainProxy равна нулю. Внутри моего Web.xml я объявляю DelegatingFilterProxy с именем фильтра springSecurityFilterChain, и мое приложение отлично работает. Пожалуйста, помогите мне! Спасибо
Я предполагаю, что это связано с https://jira.spring.io/browse/SEC-3144 –
>>> Просто убедитесь, что у вас есть правильные конфигурации контекста. Если люди знают, как их конфигурации должны выглядеть, тогда они не придут на этот пост. – Mrusful
Нехорошо было бы дать более подробную информацию, чем «Просто убедитесь, что у вас есть правильные конфигурации контекста», который является ответом, который может быть применен, вероятно, к всем связанным с весной вопросам, не давая читателю ни малейшего понятия о реальном решении. –