Преобразование сценария предварительного запроса Postman в сценарий препроцессора Jmeter BeanShell - PullRequest
0 голосов
/ 11 июня 2019

Привет, ребята, мне нужна помощь, чтобы преобразовать этот сценарий предварительного запроса почтальона в beansheell:

Это мой сценарий предварительного запроса от почтальона

function encodeURL(str){
    return str.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, '');
}

function decodeUrl(str){
    str = (str + '===').slice(0, str.length + (str.length % 4));
    return str.replace(/-/g, '+').replace(/_/g, '/');
}

//var key = "a30e84b7ccfa267570213cd3e1873eb23e3839811260102f5e159c35f47ff5f7";
var obj = JSON.parse(request.data);
var key = obj.transactionId;
var time = Math.round(new Date().getTime());
// var time = 1525518371264
var appId = request.headers["app-id"];
var authorization = request.headers["authorization"];
var method = request.method.toUpperCase();
var url = request.url;

var urlParam = method + " /wallet/purchase/qr";
var base64url = encodeURL(btoa(request.data));
var seed = appId+authorization+time+urlParam+base64url;
var hashedHmac = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(seed, key));

console.log(request.data);
console.log(request);
console.log(time)
console.log(hashedHmac)
console.log("base64url=>" + base64url)
console.log("seed=>" + seed)
postman.setEnvironmentVariable("timeqr", time);
postman.setEnvironmentVariable("appid", appId);
postman.setEnvironmentVariable("hmacqr", hashedHmac);

И я хочу преобразовать егов BeanShell, я уже сделал это, но, кажется, не работает.Кто-нибудь может помочь мне с этим?

Вот что я сделал:

import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.HmacUtils;
import org.apache.commons.codec.digest.DigestUtils;

String appId = "ovo-apps";
String time = String.valueOf(System.currentTimeMillis());

vars.put("time", time);
vars.put("app-id", appId);

String authorization = "${__property(user_token)}";
vars.put("authorization-qr", authorization );

String urlParam = sampler.getMethod() +  " "+ sampler.getUrl().getPath();
String bodyString = sampler.getArguments().getArgument(0).getValue();
String bodyBase64 = Base64.encodeBase64URLSafeString(bodyString.getBytes());
String baseMessage = appId + authorization + time + urlParam + bodyBase64;

String secret = "${trxId}";
String secretKey = DigestUtils.sha256Hex(secret);
String signature = HmacUtils.hmacSha256Hex(secretKey, baseMessage);

vars.put("signature", signature);

Пожалуйста, помогите мне в этом

...