Почему происходит ошибка java.lang.AssertionError при запуске JUnit теста?
Я пытаюсь написать unit
-тест к spring MVC
-приложению и при запуске теста получаю ошибку:
java.lang.AssertionError: Status expected:<200> but was:<401>
Понимаю, что не хватает прав пользователю, но в конфигурации Spring security
указано, что доступ на нужный мне адрес есть у всех.
Гуглить пробовал.
Конфигурация Spring security:
@Configuration
@EnableWebSecurity
@EnableMethodSecurity //нужна для проверки прав ( пример в UserController)
public class WebSecurityConfig {
@Autowired
private DataSource dataSource;
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((requests) -> requests
.requestMatchers("/", "/home","/registration").permitAll()
.anyRequest().authenticated()
)
.formLogin((form) -> form
.loginPage("/login")
.permitAll()
)
.logout((logout) -> logout.permitAll());
return http.build();
}
}
Контроллер:
@org.springframework.stereotype.Controller
public class MainController {
@Autowired
private MessageRep messageRep;
@Autowired
private UserRep userRep;
@GetMapping("/")
public String greeting() {
return "greeting";
}
Класс - тест:
@WebMvcTest
class MainControllerTest {
@Autowired
private MainController controller;
@MockBean
private MessageRep messageRep;
@MockBean
private UserRep userRep;
@Autowired
private MockMvc mockMvc;
@Test
void greeting() throws Exception {
mockMvc.perform(
get("/"))
.andExpect(status().isOk());
}
}
Источник: Stack Overflow на русском