Я использую Keycloak, но для тестов я отключил его
keycloak.enabled = false
В моем конфиге я использовал почти все, чтобы пройти тест как анонимный
public class KeyCloakConfig extends KeycloakWebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.headers().frameOptions().disable();
http
.anonymous().and() .csrf().disable()
.authorizeRequests()
.antMatchers("/ingredients").permitAll();
}
}
В тесте я 'я получил 401, даже когда с @ WithAnonymousUser
@WebMvcTest(value = IngredientController.class)
@TestPropertySource("classpath:application-development.properties")
class IngredientControllerTest {
@MockBean
IngredientService ingredientService;
@Autowired
MockMvc mockMvc;
@AfterEach
void tearDown() {
reset(ingredientService);
}
@Test
@WithAnonymousUser
void getAllIngredients() throws Exception {
given(ingredientService.findAll()).willReturn(Arrays.asList(new Ingredient(),new Ingredient()));
mockMvc.perform(get("/ingredients"))
.andExpect(status().isOk());
then(ingredientService).should().findAll();
assertThat(ingredientService.findAll()).hasSize(2);
}
}
Что забавно, когда я использую аннотацию @WithMockUser в тесте, все в порядке, также включите мой веб-сервис, и я иду к этомуurl все также в порядке
Также у меня есть базовая аутентификация, потому что класс конфигурации отключен, я уверен, что он базовый, потому что в журнале я вижу Использование сгенерированного пароля безопасности: 52cce531-b308-4d90-b76f-8984a88879fd,Как добавить в класс конфигурации класс слайса? @SpringJUnitConfig (classes = TestSecurityConfig.class) не работает