测试 RestController 时出现意外的 401 错误

问题描述 投票:0回答:1

`

我尝试通过添加用户来测试登录方法,当我想登录时,我收到 401 响应而不是 200

用户控制器

/**
 * Login form
 * @param user the user we are trying to log in with
 * @return JWT
 */
@PostMapping("/login")
public String login(@RequestBody User user){
    System.out.println(user);
    return userService.login(user);
}

@Test
@DisplayName("Should Login Successful")
public void shouldLoginSuccessful() throws Exception {               
    User user = new User( VALID_USERNAME_EXAMPLE, VALID_PASSWORD_INPUT_EXAMPLE ); 
    assertDoesNotThrow(() -> userService.register(user));
    assertFalse(userRepository.findAll().isEmpty()); // Verify the list is not empty
    assertEquals(1, userRepository.findAll().size()); // Verify there is just one user


    String userJson = objectMapper.writeValueAsString(user);

    mockMvc.perform(MockMvcRequestBuilders
                    .post("/login")
                    .contentType(MediaType.APPLICATION_JSON)
                    .content(userJson)) // Attach the JSON payload
            .andExpect(status().isOk());
}`

我尝试访问端点“/login”,我应该得到 200 响应,但我得到 401 UNAUTHORIZED 响应

java spring testing spring-restcontroller
1个回答
0
投票

您可以向我展示有关 userService 登录功能的更多详细信息吗?

如果您使用 Spring Security,请检查 SpringSecurity 配置。

//ex
@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/login").permitAll()  
        .anyRequest().authenticated();   
}
© www.soinside.com 2019 - 2024. All rights reserved.