2016-07-25 99 views
1

我正在使用@WithMockUser测试在简单的弹簧引导Web服务中使用基本身份验证保护的控制器方法。我的注释看起来像:@WithMockUser忽略用户名,密码字段?

@WithMockUser(username = 'admin', password = 'mypassword', roles = ['ADMIN']) 

看来不过,用户名和密码字段被忽略。即使我指定了不正确的用户名或密码,测试也会通过。然而,角色字段确实似乎被使用,并且测试失败且具有无效角色。

也许我误解了这个注解的作用,但是我应该能够使用它来验证提供给安全方法的不正确凭据的行为吗?

谢谢!

--John

+0

不,你不应该。它做什么它重新填充给定用户的'SecurityContext'。它不允许你测试其他任何东西。如果您需要,您需要使用Springs Mock MVC测试支持来进行系统测试或完整集成测试,包括手动注册您的安全配置。 –

回答

0

如果您正在使用Spring MVC的测试(即MockMvc),你会做类似如下:

mvc.perform(get("/").with(httpBasic("user","password"))) // ... 

这的的Testing HTTP Basic Authentication部分记录Spring Security参考手册。

如果您已经配置了测试以使用嵌入式Servlet容器启动Spring Boot,则可以使用支持“基本HTTP身份验证(使用用户名和密码)”的Spring Boot的TestRestTemplate