我有资源服务器,当它启动时 - 它正在向身份验证服务器发送请求(“http://localhost:xxxx/auth/oauth/token_key”),并且在所有启动并运行时都可以。
但是当我测试我的服务时,我根本不需要它。如何禁用资源服务器或者我应该模拟一些东西,以便它不依赖于auth服务器(对于控制器的未来安全测试)?
我的春季靴子主要:
@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 {}
答案 0 :(得分:4)
为什么不为具有单独个人资料(@Configuration
)的@AuthenticationServer
创建单独的@Profile("test")
?这样,您不需要禁用安全性并且可以拥有内存中令牌。这就是我处理它的方式。您还可以完全禁用Spring Security以进行测试。看看this question。
答案 1 :(得分:2)
您可以使用@WithMockUser
进行测试
答案 2 :(得分:0)
我解决这个问题的方法是在我用于测试的数据库中创建一个令牌,并确保对我的API的请求在向资源发出请求之前使用了令牌正在测试中。
您 希望您的令牌存在,因为它可以作为一种合理的安全性检查。如果您希望在没有特定令牌的情况下无法访问此资源,那么这是一个非常有用的测试。