Я новичок в интеграционном тестировании и делаю все, как в учебниках. Моя конфигурация безопасности:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/ticket/create")
.access("hasAnyAuthority('MANAGER','EMPLOYEE')")
.and().authorizeRequests().antMatchers("/api/**","/ticket/*")
.access("isAuthenticated()")
.and().formLogin().loginPage("/login").failureUrl("/login?error")
.and().formLogin().defaultSuccessUrl("/ticket/all", true)
.usernameParameter("email")
.passwordParameter("password")
.and().csrf().disable();
}
Все мое приложение требует входа в систему.
Теперь я пытаюсь запустить простой тест для просмотра главной страницы моего приложения, которая: / ticket / all
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebAppInit.class, WebMvcConfig.class, WebSecurityConfig.class, HibernateConfig.class, SecurityWebApplicationInitializer.class})
@WebAppConfiguration
public class TicketLoginControllerTest extends TestCase {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setup() throws Exception {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testTicketOverviewAll() throws Exception {
mockMvc.perform(get("/ticket/all"))
.andExpect(status().isOk());
}
}
Пройти тест, даже если я не аутентифицирован.
Теперь мой URL: / ticket / create запрещен для роли ENGINEER
, но когда я пытаюсь
@Test
public void testTicketOverviewAll() throws Exception {
mockMvc.perform(get("/ticket/create"))
.andExpect(status().isOk());
}
все еще нормально, когда должно быть запрещено 401, даже если вы вошли в систему.
Возможно, я что-то не так с тестовой конфигурацией, но я не знаю, что именно. Любая помощь приветствуется. Если я просто запусту свой сервер и попробую все вышеперечисленное, он будет работать так, как я ожидаю.