首页 文章

如何在头文件中使用授权编写路由/ endpoints 的单元测试?

提问于
浏览
0

我正在使用Springh编写此路由并使用auth0进行授权 . 它应该在 Headers 中没有授权时返回401,并且当 Headers 中有一个有效的auth0 id_token时返回200 . 为它编写单元测试的正确方法是什么?

要在 Headers 中获得授权,我应该获得真正的id_token,还是有办法模拟一个?如果我应该使用真正的id_token,将它作为字符串存储在测试代码中是否合适,还是应该将其存储在其他地方(例如作为环境变量)以保护它?

1 回答

  • 0

    Spring有 @WithMockUser 注释,以帮助测试需要经过身份验证的用户的方法 . 这可以使用如下:

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class MyControllerTests {
    
        private MockMvc mockMvc;
    
        @Before
        public void setup() {
            mockMvc = MockMvcBuilders
                .webAppContextSetup(context)
                .apply(springSecurity())
                .build();
        }
    
        @Test
        @WithMockUser(roles = "ADMIN")
        public void shouldUpdateEntry() throws Exception {
            ....
        }
    }
    

    请注意,这不会测试身份验证本身 . @WithMockUser 意味着用于测试使用给定权限运行的方法 .

相关问题