名称的模拟身份验证



我正在测试我的春季MVC应用程序。要求是模拟SecurityContext,但是我需要带有某些名称的Authentication,而不是null。有什么方法可以做到吗?

这是我的代码:

Authentication auth = Mockito.mock(Authentication.class);
SecurityContext secCont = Mockito.mock(SecurityContext.class);
Mockito.when(secCont.getAuthentication()).thenReturn(auth);
SecurityContextHolder.setContext(secCont);

您在这里模拟了Spring的Authentication对象:

Authentication auth = Mockito.mock(Authentication.class);

您已经告诉Spring的SecurityContextHolder在这里存储此Authentication对象:

Mockito.when(secCont.getAuthentication()).thenReturn(auth);

因此,如果您希望模拟的Authentication对象返回"某些名称",则只需在> IT 上设置一些模拟期望即可。例如:

Mockito.when(auth.getName()).thenReturn("aName");

使用弹簧注释org.springframework.security.test.context.support.WithMockUser

可以更轻松地完成此操作
    @Test
    @WithMockUser(username = "viewUser", authorities = { "view" })
    public void mytest(){}

相关内容

  • 没有找到相关文章

最新更新