Http401 в тестах, но работает в обычном режиме - PullRequest
0 голосов
/ 02 октября 2019

Я использую 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) не работает

1 Ответ

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

Этот другой вопрос stackoverflow может помочь вам: Spring Boot - Как отключить Keycloak? .

Решение здесь заключается в добавлении

spring.autoconfigure.exclude=org.keycloak.adapters.springboot.KeycloakSpringBootConfiguration

в ваш файл application-development.properties

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...