Bearer token 失败 MockMvc 测试 Java Spring Boot

4

我不明白为什么这个方法不起作用。我觉得可能是有些简单的东西被我忽略了。其他没有使用 token 的测试方法都能正常运行。目前 token 没有过期,而且我可以在 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());
}

请指定异常。 - Hash Jang
我的错误。我使用了“认证”这个词,而不是“授权”。 - Leo Williams
你能展示一下堆栈跟踪吗? - Hash Jang
1个回答

5

我之前使用了“认证”一词,而不是“授权”。时间已经很晚了。此外,正确的响应类型是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());
}

4
最好使用HttpHeaders.AUTHORIZATION。 - viki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接