gpt4 book ai didi

javascript - 无法识别 JS 文件中的缓冲区(使用 Karate Framework 进行 API 测试自动化)

转载 作者:行者123 更新时间:2023-11-30 11:30:23 25 4
gpt4 key购买 nike

我们正在使用 karate 框架自动化测试。在我们的一项功能中,我们需要解码 token 并在响应中获取范围。一切正常,除了 js 中的这段代码。

function(token) {
return JSON.parse(new Buffer(token.split('.')[1],'base64').toString('ascii')).scope;
}

错误:

Caused by: <eval>:2 ReferenceError: "Buffer" is not defined
Caused by: jdk.nashorn.internal.runtime.ECMAException

在官方教程中说 javascript 是 Karate 的“原生”,所以我们不明白为什么 Buffer 不被识别?我们应该做什么?感谢您的帮助

最佳答案

我能够使用以下代码成功地将 JWT token 负载进行 base64Decode 到 JSON,而无需 Java 方法:

  Background:
* def parseJwt =
"""
function(token) {
var base64Url = token.split('.')[1];
var base64Str = base64Url.replace(/-/g, '+').replace(/_/g, '/');
var Base64 = Java.type('java.util.Base64');
var decoded = Base64.getDecoder().decode(base64Str);
var String = Java.type('java.lang.String')
return new String(decoded)
};
"""

Scenario: JWT Token
Given path 'jwt/authenticate'
And header x-goog-authenticated-user-email = 'email'
And request {}
When method get
Then status 200
* json result = parseJwt(responseHeaders['Set-Cookie'][0])
* match result == {permissions: [1,2,3], iss: "us", exp: "#number", email: "email"}

注意:似乎确实需要使用 json 而不是 def,因为 Karate 如果将字符串解析为 json 本身会更好。此外,您可以从 header 而不是 cookie 中获取 token ,如本例所示,如果是这样,只需更改您正在寻找的 responseHeader。

关于javascript - 无法识别 JS 文件中的缓冲区(使用 Karate Framework 进行 API 测试自动化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46450804/

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