false false host ${__property(host,,127.0.0.1)} = scheme ${__property(scheme,,http)} = port ${__property(port,,5000)} = xpubNoFunds zpub6roF3uF1YsrxvSK9cC7kpT7xt45i6aZffVg5SHWkqcEMTpA2fnB9eF45wgM7EXAmFDazxyWGsDbwCMUTiteYFhBJNLrgpkBjVet9S98UXor = xpubWithFunds zpub6rsRjqj6BTbD9DjqrY4p14tUx5kdA8ZGCTJD99wZTxD5wfvCkyXKrK3s7M3B1eFN6NbRhmbDDRDC8LF3Bn5gmxxN9rF8mDpZsGC6isGrK1g = paidChargeCount 5 = userTipCount 5 = thinkTime 3000 = ${host} ${scheme} 6 false false stopthread false 1 1 1 1370726934000 1370726934000 false false false true fragments/init-server.jmx false true fragments/init-account.jmx false true false usr ${userId} = true false enable watchonly = true ${host} ${port} ${scheme} utf-8 /extensions GET true false true false Referer ${scheme}://${host}:${port}/extensions?usr=${userId} Accept-Language en-US,en;q=0.5 Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 false usr ${userId} = true ${host} ${port} ${scheme} UTF-8 /watchonly/ GET true false true false Accept-Language en-US,en;q=0.5 Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 Scan Blockchain Assertion.response_data false 2 ${host} ${port} ${scheme} UTF-8 /watchonly/api/v1/config GET true false true false Referer ${scheme}://${host}:${port}/watchonly/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 {"mempool_endpoint":"https://mempool.space","receive_gap_limit":20,"change_gap_limit":5,"sats_denominated":true,"network":"Mainnet"} Assertion.response_data false 8 false network Mainnet = true ${host} ${port} ${scheme} UTF-8 /watchonly/api/v1/wallet GET true false true false Referer ${scheme}://${host}:${port}/watchonly/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 [] Assertion.response_data false 8 true false {"title":"segwit","masterpub":"${xpubWithFunds}","network":"Mainnet","meta":"{\"accountPath\":\"m/84'/0'/0'\"}"} = ${host} ${port} ${scheme} utf-8 /watchonly/api/v1/wallet POST true false true false Referer ${scheme}://${host}:${port}/watchonly/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${adminkey} Origin ${scheme}://${host}:${port} Content-Type application/json;charset=utf-8 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 groovy true var resp = JSON.parse(prev.getResponseDataAsString()) if (!resp.id) { AssertionResult.setFailureMessage("Onchain account not created"); AssertionResult.setFailure(true) } delete resp.id var expectedAccount = [{ "masterpub": "zpub6roF3uF1YsrxvSK9cC7kpT7xt45i6aZffVg5SHWkqcEMTpA2fnB9eF45wgM7EXAmFDazxyWGsDbwCMUTiteYFhBJNLrgpkBjVet9S98UXor", "fingerprint": "8eb84369", "title": "segwit", "address_no": 79, "balance": 0, "type": "p2wpkh", "network": "Mainnet", "meta": "{\"accountPath\":\"m/84'/0'/0'\"}" }] if (JSON.stringify(resp) !== JSON.stringify(expectedAccount)) { AssertionResult.setFailureMessage("Expected account incorrect: " + JSON.stringify(expectedAccount)); AssertionResult.setFailure(true) } javascript true var resp = JSON.parse(prev.getResponseDataAsString()) vars.put("onchainAccountId", resp.id || 'no-onchain-account-id'); false network Mainnet = true ${host} ${port} ${scheme} UTF-8 /watchonly/api/v1/wallet GET true false true false Referer ${scheme}://${host}:${port}/watchonly/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* javascript true var accounts = JSON.parse(prev.getResponseDataAsString()) if (accounts.length === 0) { AssertionResult.setFailureMessage("No onchain account found"); AssertionResult.setFailure(true) } var accountId = vars.get("onchainAccountId") if (accountId !== accounts[0].id) { AssertionResult.setFailureMessage("Incorrect account id: "+accountId + " / "+accounts[0].id); AssertionResult.setFailure(true) } 200 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /watchonly/api/v1/addresses/${onchainAccountId} GET true false true false Referer ${scheme}://${host}:${port}/watchonly/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* javascript true var addresses = JSON.parse(prev.getResponseDataAsString()) if (addresses.length !== 25) { AssertionResult.setFailureMessage("Expected 25 addresses, got " + addresses.length ); AssertionResult.setFailure(true) } 200 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /watchonly/api/v1/address/${onchainAccountId} GET true false true false Referer ${scheme}://${host}:${port}/watchonly/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* javascript true var resp = JSON.parse(prev.getResponseDataAsString()) var expectedAddress = 'bc1qtmfyj6s76xhrsgd4aw6qq9tc9d48vnd0690k5w' if (resp.address !== expectedAddress) { AssertionResult.setFailureMessage("Expected addresses '"+expectedAddress+"', got " + resp.address ); AssertionResult.setFailure(true) } 200 Assertion.response_code false 8 false true false usr ${userId} = true false enable satspay = true ${host} ${port} ${scheme} utf-8 /extensions GET true false true false Referer ${scheme}://${host}:${port}/extensions?usr=${userId} Accept-Language en-US,en;q=0.5 Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 false usr ${userId} = true ${host} ${port} ${scheme} UTF-8 /satspay/ GET true false true false Referer ${scheme}://${host}:${port}/extensions?usr=${userId}&enable=satspay Accept-Language en-US,en;q=0.5 Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 <h5 class="text-subtitle1 q-my-none">Charges</h5> Assertion.response_data false 2 ${host} ${port} ${scheme} UTF-8 /satspay/api/v1/charges GET true false true false Referer ${scheme}://${host}:${port}/satspay/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 [] Assertion.response_data false 8 true false {"onchain":true,"onchainwallet":"${onchainAccountId}","lnbits":false,"description":"Onchain Charge","time":1111,"amount":1111,"lnbitswallet":null} = ${host} ${port} ${scheme} utf-8 /satspay/api/v1/charge POST true false true false Referer ${scheme}://${host}:${port}/satspay/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Origin ${scheme}://${host}:${port} Content-Type application/json;charset=utf-8 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var resp = JSON.parse(prev.getResponseDataAsString()) vars.put("chargeId", resp.id || 'no-charge-id'); 200 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /satspay/${chargeId} GET true false true false Referer ${scheme}://${host}:${port}/satspay/ Accept-Language en-US,en;q=0.5 Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /satspay/api/v1/charge/balance/${chargeId} GET true false true false Referer ${scheme}://${host}:${port}/satspay/${chargeId} Accept-Language en-US,en;q=0.5 X-Api-Key undefined Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 true false {"onchain":false,"onchainwallet":null,"lnbits":true,"description":"lightning charge - to expire","time":1,"amount":10,"lnbitswallet":"${walletId}","webhook":"https://google.com","completelink":"https://twitter.com","completelinktext":"Have Fun"} = ${host} ${port} ${scheme} utf-8 /satspay/api/v1/charge POST true false true false Accept-Language en-US,en;q=0.5 X-Api-Key ${adminkey} Origin ${scheme}://${host}:${port} Content-Type application/json;charset=utf-8 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 false true true ${paidChargeCount} 1 1 chargeCounter false 10 1 amountGenerator true true false true true false {"onchain":false,"onchainwallet":null,"lnbits":true,"description":"lightning charge [${chargeCounter}]","time":1220,"amount":${amountGenerator},"lnbitswallet":"${walletId}","webhook":"http://localhost:8081","completelink":"https://twitter.com","completelinktext":"Have Fun"} = ${host} ${port} ${scheme} utf-8 /satspay/api/v1/charge POST true false true false Accept-Language en-US,en;q=0.5 X-Api-Key ${adminkey} Origin ${scheme}://${host}:${port} Content-Type application/json;charset=utf-8 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* javascript true var resp = JSON.parse(prev.getResponseDataAsString()) vars.put("lightningChargeId", resp.id || 'no-lightning-charge-id'); vars.put("paymentRequest", resp.payment_request || 'no-lpayment-request'); 200 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /satspay/${lightningChargeId} GET true false true false Accept-Language en-US,en;q=0.5 Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /satspay/api/v1/charge/balance/${lightningChargeId} GET true false true false Accept-Language en-US,en;q=0.5 X-Api-Key undefined Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var resp = JSON.parse(prev.getResponseDataAsString()) if (resp.balance !== 0) { AssertionResult.setFailureMessage("Expected balance to be zero, got " + resp.amount); AssertionResult.setFailure(true) } if (resp.paid) { AssertionResult.setFailureMessage("Expected charge to not be paid"); AssertionResult.setFailure(true) } 1 0 ${thinkTime} 1000 100 true false {"out":true,"bolt11":"${paymentRequest}"} = ${host} ${port} ${scheme} utf-8 /api/v1/payments POST true false true false Accept-Language en-US,en;q=0.5 X-Api-Key ${adminWalletKey} Origin ${scheme}://${host}:${port} Content-Type application/json;charset=utf-8 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 201 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /satspay/api/v1/charge/balance/${lightningChargeId} GET true false true false Accept-Language en-US,en;q=0.5 X-Api-Key undefined Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var resp = JSON.parse(prev.getResponseDataAsString()) var amount = +vars.get('amountGenerator') if (resp.balance !== amount) { AssertionResult.setFailureMessage("Expected balance to be "+amount+", got " + resp.amount); AssertionResult.setFailure(true) } if (!resp.paid) { AssertionResult.setFailureMessage("Expected charge to be paid"); AssertionResult.setFailure(true) } ${host} ${port} ${scheme} UTF-8 /satspay/api/v1/charge/${lightningChargeId} GET true false true false Accept-Language en-US,en;q=0.5 X-Api-Key ${adminkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var payment = JSON.parse(prev.getResponseDataAsString()) if (!payment.paid || !payment.lnbitswallet || !payment.webhook){ AssertionResult.setFailureMessage("Charge not correctly updated after paiment: "+ payment.id); AssertionResult.setFailure(true) } var extra = JSON.parse(payment.extra) if (!extra.webhook_response) { AssertionResult.setFailureMessage("Webhook response missing for payment: "+ payment.id); AssertionResult.setFailure(true) } var separatorIndex = extra.webhook_response.indexOf("\r\n\r\n") if (separatorIndex == -1) { AssertionResult.setFailureMessage("Webhook response has wrong format"+ extra.webhook_response); AssertionResult.setFailure(true) } var headers = extra.webhook_response.substring(0, separatorIndex) var bodyStr = extra.webhook_response.substring(separatorIndex) var body = JSON.parse(bodyStr) if (vars.get("lightningChargeId") !== body.id) { AssertionResult.setFailureMessage("Wrong webhook charge id. Expected: "+ vars.get("lightningChargeId") + ", but got "+ body.id); AssertionResult.setFailure(true) } if (vars.get("paymentRequest") !== body.payment_request) { AssertionResult.setFailureMessage("Wrong webhook charge payment request. Expected: "+ vars.get("paymentRequest") + ", but got "+ body.payment_request); AssertionResult.setFailure(true) } false true ${host} ${port} ${scheme} UTF-8 /satspay/api/v1/charges GET true false true false Referer ${scheme}://${host}:${port}/satspay/?usr=${userId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var resp = JSON.parse(prev.getResponseDataAsString()) var paidChargeCount = +vars.get('paidChargeCount') var totalChargeCount = paidChargeCount + 2; // one onchain and one to expire if (resp.length !== totalChargeCount) { AssertionResult.setFailureMessage("Expected charges count to be "+totalChargeCount+", got " + resp.length); AssertionResult.setFailure(true) } ${host} ${port} ${scheme} UTF-8 /api/v1/wallet GET true false true false Referer ${scheme}://${host}:${port}/wallet?usr=${userId}&wal=${walletId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 true var resp = JSON.parse(prev.getResponseDataAsString()) var paidChargeCount = +vars.get('paidChargeCount') var balance = 0 var startAmount = 10 for (var i=0; i< paidChargeCount; i++) { balance += startAmount + i } // millisats if (resp.balance !== balance * 1000) { AssertionResult.setFailureMessage("Expected balance to be "+balance+", but got: "+ resp.balance); AssertionResult.setFailure(true) } vars.put("userBalance", resp.balance) javascript ${host} ${port} ${scheme} UTF-8 /api/v1/payments GET true false true false Referer ${scheme}://${host}:${port}/wallet?usr=${userId}&wal=${walletId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 true var resp = JSON.parse(prev.getResponseDataAsString()) var paidChargeCount = +vars.get('paidChargeCount') // one payment is the expired one var totalPaymentsCount = paidChargeCount + 1 if (resp.length != totalPaymentsCount) { AssertionResult.setFailureMessage("Expected total "+totalPaymentsCount+" paymet, but got: "+ resp.length); AssertionResult.setFailure(true) } var pendingCount = 0 for (var i=0; i<resp.length; i++) { var payment = resp[i] if (payment.pending) pendingCount++ } if (pendingCount !== 1) { AssertionResult.setFailureMessage("Expected one pending paymet, but got: "+ pendingCount); AssertionResult.setFailure(true) } javascript false true false usr ${userId} = true false enable tipjar = true ${host} ${port} ${scheme} utf-8 /extensions GET true false true false Accept-Language en-US,en;q=0.${paidChargeCount} Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 false usr ${userId} = true ${host} ${port} ${scheme} UTF-8 /tipjar/ GET true false true false Accept-Language en-US,en;q=0.${paidChargeCount} Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 New TipJar Assertion.response_data false 2 ${host} ${port} ${scheme} UTF-8 /tipjar/api/v1/tipjars GET true false true false Accept-Language en-US,en;q=0.${paidChargeCount} X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 [] Assertion.response_data false 8 true false {"wallet":"${walletId}","name":"Nakamoto","webhook":"${scheme}://${host}:8081"} = ${host} ${port} ${scheme} utf-8 /tipjar/api/v1/tipjars POST true false true false Accept-Language en-US,en;q=0.${paidChargeCount} X-Api-Key ${adminkey} Origin ${scheme}://${host}:${port} Content-Type application/json;charset=utf-8 Accept-Encoding gzip, deflate User-Agent Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var resp = JSON.parse(prev.getResponseDataAsString()) vars.put("tipjarId", resp.id || 'no-tipjar-id'); javascript true var resp = JSON.parse(prev.getResponseDataAsString()) if (resp.name !== "Nakamoto") { AssertionResult.setFailureMessage("Expected tipjar name to be 'Nakamoto', got " + resp.name); AssertionResult.setFailure(true) } ${host} ${port} ${scheme} UTF-8 /tipjar/${tipjarId} GET true false true false Accept-Language en-US,en;q=0.${paidChargeCount} Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 false true true ${userTipCount} 1 1 tipCounter true true false true true false {"tipjar":"${tipjarId}","name":"Hal","sats":21,"message":"Let's go ...${tipCounter}!"} = ${host} ${port} ${scheme} utf-8 /tipjar/api/v1/tips POST true false true false Accept-Language en-US,en;q=0.${paidChargeCount} Origin ${scheme}://${host}:${port} Content-Type application/json;charset=utf-8 Accept-Encoding gzip, deflate User-Agent Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var resp = JSON.parse(prev.getResponseDataAsString()) if (!resp.redirect_url || !resp.redirect_url.startsWith("/satspay/")) { AssertionResult.setFailureMessage("Expected redirect url to start with '/satspay/', but was: " + resp.redirect_url); AssertionResult.setFailure(true) } javascript true var resp = JSON.parse(prev.getResponseDataAsString()) vars.put("tipChargeUrl", resp.redirect_url || 'no-tip-charge-url'); if (resp.redirect_url) { var tipChargeId = resp.redirect_url.split("/")[2] vars.put("tipChargeId", tipChargeId || 'no-tip-charge-id'); } ${host} ${port} ${scheme} UTF-8 ${tipChargeUrl} GET true false true false Referer ${scheme}://${host}:${port}/tipjar/2 Accept-Language en-US,en;q=0.${paidChargeCount} Upgrade-Insecure-Requests 1 Accept-Encoding gzip, deflate User-Agent Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 200 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /satspay/api/v1/charge/${tipChargeId} GET true false true false Referer ${scheme}://${host}:${port}/satspay/${chargeId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var resp = JSON.parse(prev.getResponseDataAsString()) var tipCounter = +vars.get("tipCounter") var name = "Hal" var description = "Let's go ..." + tipCounter + "!" if (resp.description !== description) { AssertionResult.setFailureMessage("Expected name to be 'Hal', but was: " + resp.name); AssertionResult.setFailure(true) } if (resp.description !== description) { AssertionResult.setFailureMessage("Expected description to be 'Let's go!', but was: " + resp.description); AssertionResult.setFailure(true) } javascript true var resp = JSON.parse(prev.getResponseDataAsString()) vars.put("tipPaymentRequest", resp.payment_request || 'no-tip-payment-request'); ${host} ${port} ${scheme} UTF-8 /tipjar/api/v1/tips GET true false true false Accept-Language en-US,en;q=0.${paidChargeCount} X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 javascript true var resp = JSON.parse(prev.getResponseDataAsString()) var tipCounter = +vars.get("tipCounter") if (resp.length !== tipCounter) { AssertionResult.setFailureMessage("Expected "+tipCounter+" tips, but got: " + resp.length); AssertionResult.setFailure(true) } else { var tip = resp[tipCounter - 1] var message = "Let's go ..." + tipCounter + "!" if (!tip || tip.name !== "Hal" || tip.message !== message || tip.sats !== 21) { AssertionResult.setFailureMessage("Expected tip to '" + message + "', but was: " + JSON.stringify(resp)); AssertionResult.setFailure(true) } } 1 0 ${thinkTime} 1000 100 true false {"out":true,"bolt11":"${tipPaymentRequest}"} = ${host} ${port} ${scheme} utf-8 /api/v1/payments POST true false true false Accept-Language en-US,en;q=0.5 X-Api-Key ${adminWalletKey} Origin ${scheme}://${host}:${port} Content-Type application/json;charset=utf-8 Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 201 Assertion.response_code false 8 ${host} ${port} ${scheme} UTF-8 /api/v1/wallet GET true false true false Referer ${scheme}://${host}:${port}/wallet?usr=${userId}&wal=${walletId} Accept-Language en-US,en;q=0.5 X-Api-Key ${inkey} Accept-Encoding gzip, deflate User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0 Accept application/json, text/plain, */* 200 Assertion.response_code false 8 true var resp = JSON.parse(prev.getResponseDataAsString()) var tipCounter = +vars.get('tipCounter') var userBalance = +vars.get("userBalance") userBalance += 21 * 1000 // millisats if (resp.balance !== userBalance) { AssertionResult.setFailureMessage("Expected balance to be "+userBalance+", but got: "+ resp.balance); AssertionResult.setFailure(true) } vars.put("userBalance", userBalance) javascript false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true 100 true (wallet){1} false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true true 8081 0 25 8888 windowsupdate\.microsoft\.com.* (?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|eot|otf|ttf|mp4|woff|woff2) .*msg\.yahoo\.com.* www\.download\.windowsupdate\.com.* toolbarqueries\.google\..* http?://self-repair\.mozilla\.org.* tiles.*\.mozilla\.com.* .*detectportal\.firefox\.com.* us\.update\.toolbar\.yahoo\.com.* .*\.google\.com.*/safebrowsing/.* api\.bing\.com.* toolbar\.google\.com.* .*yimg\.com.* toolbar\.msn\.com.* (?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|eot|otf|ttf|mp4|woff|woff2)[\?;].* toolbar\.avg\.com/.* www\.google-analytics\.com.* pgq\.yahoo\.com.* safebrowsing.*\.google\.com.* sqm\.microsoft\.com.* g\.msn.* clients.*\.google.* .*toolbar\.yahoo\.com.* geo\.yahoo\.com.* true 4 false false true true false true false 0 true UTF-8 false saveConfig true true true true true true true true true true true true true false true true true true 0 true true true true true true true true recording.xml