当前位置:  开发笔记 > 编程语言 > 正文

如何在https弹簧安全单元测试中避免302响应?

如何解决《如何在https弹簧安全单元测试中避免302响应?》经验,为你挑选了1个好方法。

我有java Spring Security应用程序(用jhipster构建),我正在尝试添加一些基于当前经过身份验证的用户测试逻辑的单元测试.

为此,我已将我的MockMvc对象配置为使用Web应用程序上下文和弹簧安全性,如下所示:

@Test
@Transactional
public void getAllContacts() throws Exception {
    restContactMockMvc = MockMvcBuilders
        .webAppContextSetup(context)
        .apply(springSecurity())
        .build();
    restContactMockMvc.perform(get("/api/contacts")).andExpect(status().isOk());
}

问题是我还将应用程序配置为需要HTTPS,每当我运行此单元测试时,我都会收到302重定向响应,因为它似乎试图发送HTTP请求而不是HTTPS.

我强制执行HTTPS的方式是使用以下行SecurityConfiguration.configure(HttpSecurity http):

if (env.acceptsProfiles("!dev"))http.requiresChannel().anyRequest().requiresSecure();

所以,我的问题是如何让我的单元测试正确运行?可能是通过发送模拟HTTPS请求,还是通过在运行单元测试时禁用HTTPS?



1> rhinds..:

使用Springs MockMvc,您还可以使用secure(true)方法指定要发送模拟HTTPS请求,如下所示:

restContactMockMvc.perform( get("/api/contacts").secure( true ) ).andExpect( status().isOk() )


默认情况下如何设置模拟调用安全?
推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有