MockMVC не возвращает никакого значения при получении токена JWT в тесте JUnit - PullRequest
0 голосов
/ 24 октября 2019
@Test
public void getUsers_Success() throws Exception {

            when(userRepository.findAll()).thenReturn(userList.getUsers());

            String token = TokenAuthenticationService.createToken("me@me.com");
            assertNotNull(token);

            RequestBuilder request = MockMvcRequestBuilders
                    .get("/api/v1/users")
                    .header("Authorization", "Bearer "+ token);

            MvcResult result = mockMvc.perform(request)
                    .andExpect(status().isOk())
                    .andExpect(content().json(usersJson))
                    .andReturn();

            result.getResponse().getContentAsString();
        }

Вот поколение токенов

public static String createToken(String username) {
        String jwt = Jwts.builder()
                .setSubject(username)
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATIONTIME))
                .signWith(SignatureAlgorithm.HS512, SECRET)
                .compact();

        return jwt;
    }

Когда я запускаю этот тест, ответ всегда пуст. И тогда разбор json не выполняется, потому что ответ пуст.

1 Ответ

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

Метод signWith(SignatureAlgorithm.HS512, SECRET) устарел и будет удален в будущих выпусках. Вы должны использовать:

signWith(SECRET, SignatureAlgorithm.HS512)

Я полагаю, что SECRET является объектом String => вам нужно сгенерировать секретный ключ на основе вашего секрета:

signWith(Keys.hmacShaKeyFor(SECRET.getBytes()), SignatureAlgorithm.HS512)
...