gpt4 book ai didi

grails - 如何在集成测试中与其余客户端共享Spring Security session

转载 作者:行者123 更新时间:2023-12-02 14:29:39 29 4
gpt4 key购买 nike

我想使用请求映射测试受spring安全保护的rest API。该API主要由经过身份验证的用户使用,因此我想与登录用户一起测试该API。

在测试其余客户时,我使用了

    testCompile "org.grails:grails-datastore-rest-client:6.0.5.RELEASE"

在调用API之前,必须先对用户进行身份验证。我尝试在安装程序中执行以下操作:
    springSecurityService.reauthenticate "admin"

尽管进行了重新身份验证 call ,其余客户端无法检测到任何 session ,因此状态代码为302->重定向到登录页面。
void "test fetching execution statistic"() {
given:
RestBuilder rest = new RestBuilder()
when:
//requestHeaders.add("Cookie", "JSESSIONID=" + session.getValue());

RestResponse response = rest.post("http://localhost:8080/correctionStatistic/executionStatistic") {
json([
reportingPeriod_year: 2008,
reportingPeriod_month: 01
])
}
then:
response.status == 200
}

如何与其余客户端共享 session ?正如您在注释行中看到的那样,一种想法是在请求 header 中添加 session ID,但是如何在集成测试中请求 session ID。

最佳答案

如果仅使用Spring Security Core Plugin并为 protected URL(端点)实现传统的有状态链,则可以使用Geb并编写功能测试用例。

但是,如果您正在使用Spring Security Rest Plugin并为您的URL实现无状态链,那么您需要首先命中api/login端点并获取访问 token ,然后再在请求中使用Authorization header 进行进一步的请求。

您可以找到详细指南here

我希望这有帮助。

关于grails - 如何在集成测试中与其余客户端共享Spring Security session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41838815/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com