Тестирование Spring Integration не использует конфигурацию безопасности - PullRequest
0 голосов
/ 30 сентября 2019

Я новичок в интеграционном тестировании и делаю все, как в учебниках. Моя конфигурация безопасности:

@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, даже если вы вошли в систему.

Возможно, я что-то не так с тестовой конфигурацией, но я не знаю, что именно. Любая помощь приветствуется. Если я просто запусту свой сервер и попробую все вышеперечисленное, он будет работать так, как я ожидаю.

1 Ответ

0 голосов
/ 01 октября 2019

сначала мне нужно сказать mockMvc, чтобы использовать конфигурацию безопасности в @Before со строкой .apply (springSecurity ())

@Before
    public void setup() {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac)
                .apply(springSecurity())
                .build();
    }

А затем для всех ваших запросов потребуется аутентификация, которую выможно передать, добавив .with (user ("username"). password ("pass"). role ("список ваших ролей") в get / post или любым другим способом.

...