承载令牌失败 MockMvc 测试 Java Spring Boot

Leo*_*ams 4 java spring-boot bearer-token mockmvc

我不明白为什么这不起作用。我假设这是我忽略的简单事情。所有其他不使用令牌的测试方法都可以正常工作。目前令牌没有过期时间,我可以通过 Postman 很好地使用它。

@Test
public void getUser() throws Exception {

    String token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsd2lsbGlhbXMxNiIsInJvbGVzIjoidXNlciIsImlhdCI6MTUxNDQ0OTgzM30.WKMQ_oPPiDcc6sGtMJ1Y9hlrAAc6U3xQLuEHyAnM1FU";
    MvcResult mvcResult = mockMvc.perform(

            MockMvcRequestBuilders.get("/api/users/lwilliams16")
            .header("authentication", "Bearer " + token))
            .andExpect(status().isOk())
            .andExpect(content().contentType(MediaType.APPLICATION_JSON))
            .andDo(print())
            .andReturn();

    System.out.println(mvcResult.getResponse().getContentAsString());
}
Run Code Online (Sandbox Code Playgroud)

Leo*_*ams 6

我使用的是“身份验证”一词,而不是“授权”。现在已经晚了。此外,正确的响应类型是 APPLICATION_JSON_UTF8。

@Test
public void getUser() throws Exception {

    String token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsd2lsbGlhbXMxNiIsInJvbGVzIjoidXNlciIsImlhdCI6MTUxNDQ0OTgzM30.WKMQ_oPPiDcc6sGtMJ1Y9hlrAAc6U3xQLuEHyAnM1FU";
    MvcResult mvcResult = mockMvc.perform(

            MockMvcRequestBuilders.get("/api/users/lwilliams16")
            .header("authorization", "Bearer " + token))
            .andExpect(status().isOk())
            .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
            .andDo(print())
            .andReturn();

    System.out.println(mvcResult.getResponse().getContentAsString());
}
Run Code Online (Sandbox Code Playgroud)

  • 最好使用 HttpHeaders.AUTHORIZATION (4认同)