mardi 8 décembre 2015

MockMvc and Spring Security - Null FilterChainProxy

I need to test my REST Controllers which they are secured using Spring Security. I'm using MockMvc as spring security reference suggests here

http://ift.tt/1PUmu1o

Test:

@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"));
    }
}

When i'm running the JUnit test, i'm getting this failure trace

java.lang.NullPointerException at org.springframework.security.web.FilterChainProxy.getFilters(FilterChainProxy.java:223)

Also if remove the bean inside applicationContext.xml:

<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy"/>

Then i'm getting this failure trace:

java.lang.IllegalStateException: springSecurityFilterChain cannot be null. Ensure a Bean with the name springSecurityFilterChain implementing Filter is present or inject the Filter to be used. at org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurer.beforeMockMvcCreated(SecurityMockMvcConfigurer.java:62)

I have no idea why the FilterChainProxy is null. Inside my Web.xml i have declare the DelegatingFilterProxy with filter-name springSecurityFilterChain and my application works fine. Please help me! Thanks

Aucun commentaire:

Enregistrer un commentaire