gpt4 book ai didi

authentication - K6 - 身份验证 - 获取授权 token

转载 作者:行者123 更新时间:2023-12-02 01:52:47 25 4
gpt4 key购买 nike

我有一个 mocha javascript 文件,其中我需要函数以 headless 浏览器模式登录到应用程序,使用凭据登录并返回 jwt 身份验证。

我想通过K6调用这个脚本。但据我了解,从 K6 调用节点模块 java 脚本是不可能的?

有替代方案吗?

最佳答案

我也刚刚开始实现 k6 并且有相同的步骤要做;)这是我的做法。

  • 您需要知道如何对您要使用的 API 进行身份验证。我假设我们有它,正如您所写的那样,您想使用节点模块。
  • 其次,使用适当的方法与API通信
  • 接下来,捕获 token 并将其附加到下一个请求 header
  • 最后,使用您想要的请求测试 API

我在带有 k6 samples for APIs 的网页上找到了代码片段.我已经缩短了一点,示例代码并结束了:

import {
describe
} from 'https://jslib.k6.io/functional/0.0.3/index.js';
import {
Httpx,
Request,
Get,
Post
} from 'https://jslib.k6.io/httpx/0.0.2/index.js';
import {
randomIntBetween,
randomItem
} from "https://jslib.k6.io/k6-utils/1.1.0/index.js";

export let options = {
thresholds: {
checks: [{
threshold: 'rate == 1.00',
abortOnFail: true
}],
},
vus: 2,
iterations: 2
};

//defining auth credentials
const CLIENT_ID = 'CLIENT_ID';
const CLIENT_SECRET = 'CLIENT_SECRET';
let session = new Httpx({
baseURL: 'https://url.to.api.com'
});

export default function testSuite() {

describe(`01. Authenticate the client for next operations`, (t) => {

let resp = session.post(`/path/to/auth/method`, {
//this sections relays on your api requirements, in short what is mandatory to be authenticated
grant_type: GRANT_TYPE,
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
});

//printing out response body/status/access_token - for debug
// console.log(resp.body);
// console.log(resp.status);
// console.log(resp.json('access_token'));

//defining checks
t.expect(resp.status).as("Auth status").toBeBetween(200, 204)
.and(resp).toHaveValidJson()
.and(resp.json('access_token')).as("Auth token").toBeTruthy();


let authToken = resp.json('access_token');
// set the authorization header on the session for the subsequent requests.
session.addHeader('Authorization', `Bearer ${authToken}`);

})

describe('02. use other API method, but with authentication token in header ', (t) => {

let response = session.post(`/path/to/some/other/post/method`, {
"Cache-Control": "no-cache",
"SomeRequieredAttribute":"AttributeValue"
});


t.expect(response.status).as("response status").toBeBetween(200, 204)
.and(response).toHaveValidJson();
})

}

关于authentication - K6 - 身份验证 - 获取授权 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70014997/

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