我正在尝试实现一个自动递增 ID 附加到我的令牌名称,以便更好地区分不同时间检索到的令牌。
我能够弄清楚创建一个名为
tokenCount
的变量,并使用以下代码在测试选项卡中自动增量它:
let tokenCount = pm.collectionVariables.get("tokenCount");
tokenCount++;
pm.collectionVariables.set("tokenCount", tokenCount);
但是,这只在我发送请求时增加;当我检索新的访问令牌时不会。有什么方法可以让我在访问令牌检索时运行此代码吗?
以下是使用 OAuth 2.0 针对 Microsoft 进行身份验证的预请求脚本示例。
您需要更改正文以匹配您正在使用的资助类型。
let currentDateTime = Date.now();
let tokenExpiry = pm.environment.get("bearerTokenExpiresOn")
// console.log("currentDateTime: " + currentDateTime);
// console.log("tokenExpiry: " + tokenExpiry);
if (!pm.environment.get("bearerToken") || currentDateTime > tokenExpiry) {
pm.test("Pre-request check for Environment Variables", function () {
let vars = ['clientId', 'clientSecret', 'tenantId', 'username', 'password', 'scope'];
vars.forEach(function (item) {
// console.log(item);
pm.expect(pm.environment.get(item), item + " variable not set").to.not.be.undefined;
pm.expect(pm.environment.get(item), item + " variable not set").to.not.be.empty;
});
pm.sendRequest({
url: 'https://login.microsoftonline.com/' + pm.environment.get("tenantId") + '/oauth2/v2.0/token',
method: 'POST',
header: 'Content-Type: application/x-www-form-urlencoded',
body: {
mode: 'urlencoded',
urlencoded: [
{ key: "client_id", value: pm.environment.get("clientId"), disabled: false },
{ key: "scope", value: pm.environment.get("scope"), disabled: false },
{ key: "username", value: pm.environment.get("username"), disabled: false },
{ key: "password", value: pm.environment.get("password"), disabled: false },
{ key: "client_secret", value: pm.environment.get("clientSecret"), disabled: false },
{ key: "grant_type", value: "password", disabled: false },
]
}
}, function (err, res) {
if (err) {
console.log(err);
} else {
pm.test("Pre-request Microsoft login Status code is 200", () => {
pm.expect(res).to.have.status(200);
let resJson = res.json();
// console.log(resJson);
let tokenName = pm.environment.get("tokenName")
let tokenCount = pm.environment.get("tokenCount");
tokenCount++;
pm.environment.set(tokenName + tokenCount, resJson.id_token);
pm.environment.set("bearerTokenExpiresOn", Date.now() + resJson.expires_in * 1000);
pm.environment.set("tokenCount", tokenCount);
// console.log("bearerTokenExpiresOn: " + pm.environment.get("bearerTokenExpiresOn"));
});
}
});
});
};
这些是处理自动递增数字的添加行。
let tokenName = pm.environment.get("tokenName")
let tokenCount = pm.environment.get("tokenCount");
tokenCount++;
pm.environment.set(tokenName + tokenCount, resJson.id_token);
pm.environment.set("tokenCount", tokenCount);
您将需要名为 tokenName 和 tokenCount 的环境变量。您还需要初始化 tokenCount。例如000。