Как предоставить bean-компонент для WebSecurityConfiguration при написании модульного теста с использованием WebMvcTest - PullRequest
0 голосов
/ 04 апреля 2019

Я пишу юнит-тесты для проекта, сконфигурированного oauth2 для обеспечения безопасности Spring. Oauth2 настроен для потока учетных данных пароля владельца ресурса.

Я попытался отключить защиту, предоставив (secure = false) аннотацию WebMvcTest, которая работает нормально, однако я хотел бы написать модульные тесты с включенной защитой.

Модульный тест выглядит примерно так:

@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
class UserControllerTest {

@Autowired
MockMvc mockMvc;

@Test 
void test() {
RequestBuilder = MockMvcRequestBuilders.
    get("/api/users/").accept(MediaType.APPLICATION_JSON);
    MvcResult  mvcResult = mockMvc.perform(requestBuilder).andReturn();
    assertEquals("Some string", mvcResult.response().contentAsString());
  }
}

Обратите внимание, что / api / ** настроен для аутентификации конечной точки сервером ресурсов.

Теперь, согласно моему пониманию, аннотация @WebMvcTest также автоматически связывает класс, помеченный @EnableWebSecurity, который, в свою очередь, автоматически связывает bean-компонент соответствия запросов с использованием инжектора конструктора следующим образом:

@Configuration
@EnableWebSecurity
class WebSecurityConfiguration extends WebSecurityConfigurerAdapter{

    @Qualifier("resourceServerRequestMatcher")
    @Autowired
    private RequestMatcher requestMatcher;

    public WebSecurityConfiguration(RequestMatcher requestMatcher){
        this.requestMatcher = requestMatcher; 
    }
}

Итак, когда я запускаю модульный тест, я получаю следующее исключение.

Consider defining a bean of type 'org.springframework.security.web.util.matcher.RequestMatcher' in your configuration.

Я понимаю, о чем просит исключение, я немного запутался в том, как это должно быть сделано в классе юнит-теста.

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