Почему происходит ошибка java.lang.AssertionError при запуске JUnit теста?

Рейтинг: 1Ответов: 0Опубликовано: 13.03.2023

Я пытаюсь написать 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());
    }

    }

Ответы

Ответов пока нет.