首页 > 解决方案 > 如何模拟使用 OAUTH2 的测试 REST 控制器

问题描述

如何测试使用 Oauth2(客户端)的 REST 控制器?我需要模拟 oauth2 并且我被卡住了。任何帮助,将不胜感激。

标签: spring-bootoauth-2.0

解决方案


希望这个答案可能会有所帮助。

实际上,当使用带有 a 的 OAuth2 时ResourceServerConfiguration,您将拥有一个无状态安全性,这将消除事先模拟用户的任何努力。

模拟用户应该做的是:

  1. 创建一个 TestOnly 加载的 ResourceServerConfiguration ,它以这种方式覆盖您的标准配置:
    public class TestConfiguration extends ResourceServerConfiguration {
      @Override
      public void configure(ResourceServerSecurityConfigurer res) {
        res.stateless(false);
        super.configure(resources);
      }
    }
  1. 添加@WithMockUser到测试:
    @Test
    @WithMockUser(username ="username_admin", authorities = {"I_AM_LEGEND"})
    public void myTestWithUser() throws Exception {
     this.mvc.perform(get("/getUsername")).andExpect(content().text().contains("username_admin"));
    }

    @Test
    public void myTestWithNoUser() throws Exception {
     this.mvc.perform(get("/getUsername")).andExpect(status().isUnauthorized());
    }

注意:我从内存中编写了代码


推荐阅读