mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-27 11:24:45 +08:00
82 lines
2.8 KiB
JavaScript
82 lines
2.8 KiB
JavaScript
import http from "k6/http";
|
|
import { sleep, check } from "k6";
|
|
import { Counter } from "k6/metrics";
|
|
import { setup_merchant_apikey } from "./helper/setup.js";
|
|
import { random_string } from "./helper/misc.js";
|
|
import { readBaseline, storeResult } from "./helper/compare-result.js";
|
|
|
|
export const requests = new Counter("http_reqs");
|
|
|
|
const baseline = readBaseline("payment-create-and-confirm");
|
|
|
|
export const options = {
|
|
stages: [
|
|
{ duration: "10s", target: 25 }, // ramp up users to 25 in 10 seconds
|
|
{ duration: "10s", target: 25 }, // maintain 25 users for 10 seconds
|
|
{ duration: "10s", target: 0 } // ramp down to 0 users in 10 seconds
|
|
],
|
|
thresholds: {
|
|
'http_req_duration': ['p(90) < 500'], // 90% of requests must finish within 500ms.
|
|
},
|
|
};
|
|
|
|
export function setup() {
|
|
return setup_merchant_apikey();
|
|
}
|
|
|
|
export default function(data) {
|
|
const create_payment_payload = {
|
|
"amount": 6540,
|
|
"currency": "USD",
|
|
"confirm": false,
|
|
"capture_method": "automatic",
|
|
"capture_on": "2022-09-10T10:11:12Z",
|
|
"amount_to_capture": 6540,
|
|
"customer_id": random_string(),
|
|
"description": "Its my first payment request",
|
|
"return_url": "http://example.com/payments",
|
|
"authentication_type": "three_ds",
|
|
"payment_method": "card",
|
|
"statement_descriptor_name": "Juspay",
|
|
"statement_descriptor_suffix": "Router"
|
|
};
|
|
let create_payment_res = http.post("http://router-server:8080/payments", JSON.stringify(create_payment_payload), {
|
|
"headers": {
|
|
"Content-Type": "application/json",
|
|
"api-key" : data.api_key
|
|
},
|
|
});
|
|
check(create_payment_res, {
|
|
"create payment status 200": (r) => r.status === 200,
|
|
});
|
|
const payment_id = create_payment_res.json().payment_id;
|
|
const confirm_payment_payload = {
|
|
"return_url": "http://example.com/payments",
|
|
"setup_future_usage": "off_session",
|
|
"authentication_type": "no_three_ds",
|
|
"payment_method": "card",
|
|
"payment_method_data": {
|
|
"card": {
|
|
"card_number": "4242424242424242",
|
|
"card_exp_month": "10",
|
|
"card_exp_year": "35",
|
|
"card_holder_name": "John Doe",
|
|
"card_cvc": "123"
|
|
}
|
|
}
|
|
};
|
|
let confirm_payment_res = http.post(`http://router-server:8080/payments/${payment_id}/confirm`, JSON.stringify(confirm_payment_payload), {
|
|
"headers": {
|
|
"Content-Type": "application/json",
|
|
"api-key" : data.api_key
|
|
},
|
|
});
|
|
check(confirm_payment_res, {
|
|
"confirm payment status 200": (r) => r.status === 200,
|
|
});
|
|
};
|
|
|
|
export function handleSummary(data) {
|
|
return storeResult("payment-create-and-confirm", baseline, data)
|
|
}
|