我有资源服务器,当它启动时-它正在发送请求到身份验证服务器("http://localhost:xxxx/auth/oauth/token_key"),当所有的启动和运行时,它是正常的。
但是当我测试我的服务时,我根本不需要这个。我如何禁用资源服务器,或者我应该模拟一些东西,这样它就不会依赖于auth服务器(用于将来的控制器安全测试)?
我的spring boot main:
@SpringBootApplication
@EnableEurekaClient
@EnableResourceServer
public class CalendarApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(CalendarApplication.class, args);
}
}application.yml
security:
basic:
enabled: false
oauth2:
resource:
jwt:
keyUri: http://localhost:xxxx/auth/oauth/token_key测试类注释:
@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(value = TypeController.class, secure = false)
public class TypeControllerTest {}发布于 2018-03-26 15:41:38
为什么不使用单独的配置文件(@Profile("test"))为您的@AuthenticationServer创建单独的@Configuration?这样,您就不需要禁用安全性,并且可以拥有内存中的令牌。我就是这么处理的。您还可以为您的测试完全禁用Spring Security。看看this question吧。
发布于 2018-03-26 19:52:55
您可以使用@WithMockUser进行测试
发布于 2017-08-02 23:52:02
我解决这个问题的方法是在用于测试的数据库中创建一个令牌,并确保对API的请求在向被测资源发出请求之前使用了该令牌。
您确实希望您的令牌在那里,因为它可以作为一种合理的安全性检查。如果您希望在没有特定令牌的情况下无法访问此资源,那么这将是一个有用的测试。
https://stackoverflow.com/questions/45465445
复制相似问题