Как сгенерировать токен JWT для тестирования модуля контроллера покоя? - PullRequest
0 голосов
/ 06 февраля 2020

Я работаю над модульным тестированием для защищенных конечных точек отдыха. Чтобы проверить это, мне нужно добавить токен авторизации в шапке.

Как создать токен для каждого макета Mvc http-вызова? Более простой способ, которым я могу придумать, - это вызывать «api / authentication» каждый раз перед каждым тестом. Тогда юнит-тестирование будет зависеть от «API / аутентификации».

В настоящее время я использую @WebMvcTest(restController.class). Тогда он только загружает restController, и «API / аутентификация» не будет доступна.

Как мне выполнить модульное тестирование для API sewried rest JWT?

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Для этой цели есть аннотация @WithMockUser из Springframework security. Вы можете найти использование здесь:

https://docs.spring.io/spring-security/site/docs/5.0.x/reference/html/test-method.html

 @Test
 @WithMockUser(username = "test", password = "test", roles = "USER")
 public void canDeleteYoyo() throws Exception{
     this.mockMvc
         .perform(delete("/admin/templates/1"))
0 голосов
/ 06 февраля 2020

Вот как я с этим справился.

Сначала введите TestRestTemplate:

@Autowired
 private TestRestTemplate restTemplate;

Затем в методе @Before вызовите api / authentication и сохраните токен jwt:

@Before
public void login() {
        ResponseEntity<UserTokenState> responseEntity = restTemplate.postForEntity("/api/authentication",
                new JwtAuthenticationRequest(email, password), UserTokenState.class);
        this.accessToken = "Bearer " + responseEntity.getBody().getAccessToken();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...