J'ai essaie de lancer un test MVC baseSpring avec l'MockMvc Test avec CORS filtre
@Test
public void shouldReturnDefaultMessage() throws Exception {
this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
.andExpect(content().string(containsString("Hello World")));
}
Cependant, cela donne toujours java.lang.IllegalArgumentException: Header value must not be null
j'ai découvert que si je désactive filtre CORS le test travail sans erreurs.
Mon SimpleCORSFilter
@Component
public class SimpleCORSFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(SimpleCORSFilter.class);
public SimpleCORSFilter() {
log.info("SimpleCORSFilter init");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
//...
chain.doFilter(req, res);
}
}
Une partie de ma sécurité Config
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserDetailsServiceImp userDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and()
.addFilterBefore(new SimpleCORSFilter(),UsernamePasswordAuthenticationFilter.class);
}
}
Seulement si je retire le @component dans le SimpleCORSFilter et supprimer la ligne .addFilterBefore(new SimpleCORS...)
dans SecurityConfig les travaux d'essai.
Comment utiliser mockMVC dans mon test? Ou comment désactiver le CORSFilter pour le test ou comment faire la demande dans mockMvc correctement afin qu'il ne jette pas une erreur à propos de "valeur d'en-tête ne doit pas être nulle".
J'ai essayé de définir une valeur d'en-tête aléatoire dans le mockMvc mais cela n'a pas changé l'erreur.
J'ai essayé d'ajouter une valeur d'en-tête aléatoire en premier. Ce qui a entraîné la même erreur. Ajouter "Origine" comme vous l'avez mentionné a fonctionné. Merci! – isADon