模拟身份验证的名称

时间:2017-09-04 13:14:20

标签: java spring authentication junit mockito

我正在测试我的Spring MVC应用程序。 要求是模拟Get-Module,但我需要SecurityContext一些名称,而不是null。有没有办法做到这一点?

这是我的代码:

Authentication

2 个答案:

答案 0 :(得分:2)

你在这里嘲笑了Spring的Authentication对象:

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

你告诉Spring的SecurityContextHolder将这个Authentication对象存储在这里:

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

所以,如果你想让被模拟的Authentication对象返回"某个名字"然后在上设置一些模拟期望值。例如:

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

答案 1 :(得分:1)

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

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