在 OAuth 资源服务器配置的 Web 应用程序中再次运行 Spring Boot 集成测试的最佳方法是什么。
我可以想到两种理论方法:
我想知道其他人是如何解决这个问题的。
最佳答案
这个答案与 Ondrej 提供的答案非常相似,但要简单得多。
Spring Security 4 提供测试支持。要使用它,请确保您有 spring-security-test-4.0.2.RELEASE.jar (或类路径上的更新版本)。您还需要确保使用 spring-test-4.1.0.RELEASE(或更新版本)。
接下来,您可以使用 MockMvc 作为其他答案所指示的。但是,如果您setup MockMvc具有以下内容:
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@WebAppConfiguration
public class OAuthTests {
@Autowired
private WebApplicationContext context;
private MockMvc mvc;
@Before
public void setup() {
mvc = MockMvcBuilders
.webAppContextSetup(context)
// ADD THIS!!
.apply(springSecurity())
.build();
}
这使它如此
简而言之,您应该能够执行以下操作:
@Test
@WithSecurityContext('user')
public void performOAuth() throws Exception {
...
// No need for apply(security())!!
restParcelMockMvc.perform(get("/api/some-resource"))
.andExpect(...);
}
我鼓励您通读 Spring Security Testing section 的其余部分引用,因为它提供了许多其他详细信息,包括如何使用自定义身份验证。
关于spring-security - Spring OAuth 和引导集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31641562/