From c9af15b32007c536318fa0ae0ab46c9f0e5d7a05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dni=20=E2=9A=A1?= Date: Fri, 29 Mar 2024 11:18:49 +0100 Subject: [PATCH] test: run jmeter test from `lnbits-extensions` repo (#2374) * test: run jmeter test from `lnbits-extensions` repo moves the integration tests for extensions into the `lnbits-extensions` repo. more info here: https://github.com/lnbits/lnbits-extensions/pull/283 --- .github/workflows/jmeter.yml | 64 +- integration/extensions-enable-all.jmx | 947 ------- integration/fragments/init-account.jmx | 488 ---- integration/fragments/init-server.jmx | 487 ---- integration/lnurl.jmx | 2595 ----------------- integration/tpos.jmx | 3214 --------------------- integration/watchonly-satspay-tipjar.jmx | 3222 ---------------------- 7 files changed, 14 insertions(+), 11003 deletions(-) delete mode 100644 integration/extensions-enable-all.jmx delete mode 100644 integration/fragments/init-account.jmx delete mode 100644 integration/fragments/init-server.jmx delete mode 100644 integration/lnurl.jmx delete mode 100644 integration/tpos.jmx delete mode 100644 integration/watchonly-satspay-tipjar.jmx diff --git a/.github/workflows/jmeter.yml b/.github/workflows/jmeter.yml index 2373589c6..a4ec082f3 100644 --- a/.github/workflows/jmeter.yml +++ b/.github/workflows/jmeter.yml @@ -1,4 +1,4 @@ -name: JMeter Tests +name: JMeter Extension Tests on: workflow_call: @@ -15,7 +15,7 @@ on: type: string jobs: - action_build: + jmeter: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -24,66 +24,30 @@ jobs: with: python-version: ${{ inputs.python-version }} - - name: create logs and reports dir - run: | - mkdir logs - mkdir reports - - name: run LNbits env: LNBITS_ADMIN_UI: true LNBITS_EXTENSIONS_DEFAULT_INSTALL: "watchonly, satspay, tipjar, tpos, lnurlp, withdraw" LNBITS_BACKEND_WALLET_CLASS: FakeWallet run: | - poetry run lnbits > logs/lnbits.log & + poetry run lnbits & sleep 5 - - name: install jmeter + - name: clone lnbits-extensions, install jmeter and run tests run: | - java -version - wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.6.2.zip - unzip apache-jmeter-5.6.2.zip - $GITHUB_WORKSPACE/apache-jmeter-5.6.2/bin/jmeter -v + git clone https://github.com/lnbits/lnbits-extensions + cd lnbits-extensions + mkdir logs + mkdir reports + make install-jmeter + make start-mirror-server + make test - - name: start mirror server - run: | - libs_dir=$GITHUB_WORKSPACE/apache-jmeter-5.6.2/lib/ - echo "Fix bad Jmeter lib names. Lib dir: $libs_dir" - - mv $libs_dir/slf4j-api-1.7.36.jar $libs_dir/slf4j-api-1.7.25.jar - mv $libs_dir/log4j-slf4j-impl-2.20.0.jar $libs_dir/log4j-slf4j-impl-2.11.0.jar - mv $libs_dir/log4j-api-2.20.0.jar $libs_dir/log4j-api-2.11.1.jar - mv $libs_dir/log4j-core-2.20.0.jar $libs_dir/log4j-core-2.11.1.jar - mv $libs_dir/log4j-1.2-api-2.20.0.jar $libs_dir/og4j-1.2-api-2.11.1.jar - - echo "Starting the mirror server on dfault port 8081." - $GITHUB_WORKSPACE/apache-jmeter-5.6.2/bin/mirror-server & - - - name: run jmx scripts - run: | - for file in $( ls $GITHUB_WORKSPACE/integration/*.jmx); do - echo "Running test with $file" - filename=$(basename "$file" ".jmx") - $GITHUB_WORKSPACE/apache-jmeter-5.6.2/bin/jmeter -n -t $file -l logs/$filename.log -e -o reports ; - error_count=$(cat jmeter.log | grep -m 1 "summary =" | awk '{print $19}') - echo "Error count: '$error_count'" - echo "##########" - echo "$error_count" == "0" - echo "###########$error_count ###########" - if [ "$error_count" = "0" ]; then - echo "Test $filename OK." - rm -r reports/* - else - echo "Test $filename failed. Error count: '$error_count'." - exit 1 - fi - done - - - - uses: actions/upload-artifact@v4 + - name: upload jmeter test results + uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: jmeter-test-results + name: jmeter-extension-test-results path: | reports/ logs/ diff --git a/integration/extensions-enable-all.jmx b/integration/extensions-enable-all.jmx deleted file mode 100644 index ab841a865..000000000 --- a/integration/extensions-enable-all.jmx +++ /dev/null @@ -1,947 +0,0 @@ - - - - - false - false - - - - - - - - - - - host - ${__property(host,,127.0.0.1)} - = - - - scheme - ${__property(scheme,,http)} - = - - - port - ${__property(port,,5000)} - = - - - excludedExtensions - discordbot,cashu - Comma separated values, no spaces. - = - - - - - - - - - ${host} - ${port} - ${scheme} - - - 6 - Java - 20000 - 30000 - - - - - - - - stopthread - - false - 1 - - 1 - 1 - 1370726934000 - 1370726934000 - false - - - false - - - - - false - false - - - - false - true - - - - fragments/init-server.jmx - - - - - true - - - - false - {"username":"admin","password":"admin_password"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/auth - POST - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/ - - - Accept-Language - en-US,en;q=0.5 - - - Origin - ${scheme}://${host}:${port} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0 - - - Accept - application/json, text/plain, */* - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - raw.githubusercontent.com - "" - https - - /lnbits/lnbits-extensions/main/extensions.json - GET - true - false - true - false - - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()); -var excludedExtensions = (vars.get("excludedExtensions") || "").split(","); - -var extensions = {}; - -for (var i = 0; i < resp.extensions.length; i++) { - var ext = resp.extensions[i]; - if (excludedExtensions.indexOf(ext.id) === -1) { - extensions[ext.id] = true; - } -} - -extensionList = Object.keys(extensions); -vars.put("extensions", extensionList); -vars.put("extensionsLength", extensionList.length); - - - - - - false - true - false - - - - true - ${extensionsLength} - - - - 1 - ${extensionsLength} - 1 - extensionIndex - - true - - - - javascript - - - true - var extensions = vars.get("extensions") -var extensionIndex = vars.get("extensionIndex") - -vars.put("extension", extensions.split(",")[extensionIndex - 1]) - - - - - false - true - by admin - - - - - - - ${host} - ${port} - ${scheme} - utf-8 - /api/v1/extension/${extension}/releases - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0. - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla.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 - - - Sec-Fetch-Dest - empty - - - X-Api-Key - ${adminWalletKey} - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - true - - - - false - { - "ext_id": "${ext_id}", - "archive": "${archive}", - "source_repo": "${source_repo}", - "version": "${version}" -} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/extension - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminkey} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) -var latestRelease = resp[resp.length - 1] - -var ext_id = vars.get("extension") - -vars.put("ext_id", ext_id) -vars.put("archive", latestRelease.archive) -vars.put("source_repo", latestRelease.source_repo) -vars.put("version", latestRelease.version) - - - - - - - - - false - ${extension} - = - true - activate - - - - ${host} - ${port} - ${scheme} - utf-8 - extensions - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0. - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla.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 - - - Sec-Fetch-Dest - empty - - - X-Api-Key - ${adminWalletKey} - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - false - true - - - - - - - false - enable - ${extension} - = - true - - - - ${host} - ${port} - ${scheme} - utf-8 - /extensions - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - 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 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - 3000 - for the callback to be invoked - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /${extension} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Referer - ${scheme}://${host}:${port}/tpos/ - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - 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 - - - - - - - - 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 - - - - 8081 - 0 - 25 - - - - - diff --git a/integration/fragments/init-account.jmx b/integration/fragments/init-account.jmx deleted file mode 100644 index d7ea3af1a..000000000 --- a/integration/fragments/init-account.jmx +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - / - 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 - - - - - true - - - - false - {"name":"a1"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/account - POST - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/ - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - Origin - ${scheme}://${host}:${port} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/117.0 - - - Accept - application/json, text/plain, */* - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - true - - - var resp = JSON.parse(prev.getResponseDataAsString()) - -vars.put("userId", resp.user || "no-user-id"); -vars.put("walletId", resp.id || "no-wallet-id"); -vars.put("inkey", resp.inkey || 'no-inkey'); -vars.put("adminkey", resp.adminkey || 'no-adminkey'); - - javascript - - - - - true - - - - false - {"usr":"${userId}"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/auth/usr - POST - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/ - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - Origin - ${scheme}://${host}:${port} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/117.0 - - - Accept - application/json, text/plain, */* - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - false - wal - ${walletId} - = - true - - - - ${host} - ${port} - ${scheme} - UTF-8 - /wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/ - - - 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 - /api/v1/currencies - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?wal=${walletId} - - - 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 - - - - - ["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BRL","BSD","BTN","BWP","BYN","BYR","BZD","CAD","CDF","CHF","CLF","CLP","CNH","CNY","COP","CRC","CUC","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GGP","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","IMP","INR","IQD","IRT","ISK","JEP","JMD","JOD","JPY","KES","KGS","KHR","KMF","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRO","MUR","MVR","MWK","MXN","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STD","SVC","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYU","UZS","VEF","VES","VND","VUV","WST","XAF","XAG","XAU","XCD","XDR","XOF","XPD","XPF","XPT","YER","ZAR","ZMW","ZWL"] - - - Assertion.response_data - false - 8 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?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()) - -if (resp.balance !== 0) { - AssertionResult.setFailureMessage("Balance is not zero, but: "+ resp.balance); - AssertionResult.setFailure(true) -} - - javascript - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/payments - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?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, */* - - - - - - - [] - - - Assertion.response_data - false - 8 - - - - - - - diff --git a/integration/fragments/init-server.jmx b/integration/fragments/init-server.jmx deleted file mode 100644 index d80e34da5..000000000 --- a/integration/fragments/init-server.jmx +++ /dev/null @@ -1,487 +0,0 @@ - - - - - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - / - GET - false - false - true - false - - - - Detected the start of a redirect chain - - - - - - 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:121.0) Gecko/20100101 Firefox/121.0 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 - - - - - - - 200 - 307 - - - Assertion.response_code - false - 40 - - - - true - is_first_install - location: (.*) - $1$ - not-first-install - 0 - all - - - - - ${__groovy(vars.get('is_first_install').contains("first_install"),)} - false - true - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /first_install - 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:121.0) Gecko/20100101 Firefox/121.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 - - - - - true - - - - false - {"username":"admin","password":"admin_password","password_repeat":"admin_password"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/auth/first_install - PUT - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/first_install - - - Accept-Language - en-US,en;q=0.5 - - - Origin - ${scheme}://${host}:${port} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0 - - - Accept - application/json, text/plain, */* - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - ${__groovy(!vars.get('is_first_install').contains("first_install"),)} - false - true - - - - true - - - - false - {"username":"admin","password":"admin_password"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/auth - POST - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/ - - - Accept-Language - en-US,en;q=0.5 - - - Origin - ${scheme}://${host}:${port} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0 - - - Accept - application/json, text/plain, */* - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallets - 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:121.0) Gecko/20100101 Firefox/121.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 - - - - true - - - var resp = JSON.parse(prev.getResponseDataAsString())[0] - -vars.put("adminWalletId", resp.id || "no-admin-wallet-id"); -vars.put("adminWalletKey", resp.adminkey || 'no-adminkey'); - - javascript - - - - - true - - - - false - {"amount":"1000000","id":"${adminWalletId}"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /admin/api/v1/topup - PUT - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?&wal=c1daa33fc4014ef69cd1505f14f322c2 - - - Accept-Language - en-US,en;q=0.5 - - - Origin - ${scheme}://${host}:${port} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0 - - - Accept - application/json, text/plain, */* - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/auth/logout - POST - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/ - - - Accept-Language - en-US,en;q=0.5 - - - Origin - ${scheme}://${host}:${port} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0 - - - Accept - application/json, text/plain, */* - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - diff --git a/integration/lnurl.jmx b/integration/lnurl.jmx deleted file mode 100644 index d74b64119..000000000 --- a/integration/lnurl.jmx +++ /dev/null @@ -1,2595 +0,0 @@ - - - - - false - false - - - - - - - - - - - host - ${__property(host,,127.0.0.1)} - = - - - scheme - ${__property(scheme,,http)} - = - - - port - ${__property(port,,5000)} - = - - - paidChargeCount - 5 - = - - - userTipCount - 5 - = - - - thinkTime - 3000 - = - - - lnurlpCount - 5 - = - - - lnurlwCount - 5 - = - - - paymentCountPerLnurlp - 2 - = - - - withdrawCountPerLnurlw - 2 - = - - - - - - - - - ${host} - ${port} - ${scheme} - - - 6 - - - - - - stopthread - - false - 1 - - 1 - 1 - 1370726934000 - 1370726934000 - false - - - false - - - - - false - false - - - - false - true - - - - fragments/init-server.jmx - - - - - false - true - - - - fragments/init-account.jmx - - - - - false - true - - - - - - - false - enable - lnurlp - = - true - - - - ${host} - ${port} - ${scheme} - utf-8 - /extensions - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - 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 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - v-for="extension in filteredExtensions" - - - Assertion.response_data - false - 2 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /lnurlp/ - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Referer - ${scheme}://${host}:${port}/extensions?enable=lnurlp - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - 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 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - New pay link - curl -X POST http://127.0.0.1:5000/lnurlp/api/v1/links -d - - - Assertion.response_data - false - 2 - - - - - - - - false - all_wallets - true - = - true - - - - ${host} - ${port} - ${scheme} - UTF-8 - /lnurlp/api/v1/links - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - X-Api-Key - ${inkey} - - - Accept-Encoding - gzip, deflate, br - - - 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, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - [] - - - Assertion.response_data - false - 8 - - - - - - false - true - - - - true - ${lnurlpCount} - - - - 1 - ${lnurlpCount} - 1 - lnurlpCounter - - true - - - - false - true - - - - true - - - - false - {"description":"receive payments ${lnurlpCounter}","min":11,"comment_chars":128,"webhook_url":"http://localhost:8081","webhook_headers":"{\"h1\": \"1\"}","webhook_body":"{\"b2\": 2}","success_text":"All goood!","success_url":"https://lnbits.com","max":${lnurlpCounter}1} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /lnurlp/api/v1/links - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminkey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -var walletId = vars.get("walletId") -var lnurlpCounter = +vars.get("lnurlpCounter") - -if (!resp.id) { - AssertionResult.setFailureMessage("Pay Link not created"); - AssertionResult.setFailure(true) -} else if (resp.wallet !== walletId){ - AssertionResult.setFailureMessage("Pay Link description expected to be '"+walletId+"', but was: " + resp.wallet); - AssertionResult.setFailure(true) -} else if (resp.description !== "receive payments "+lnurlpCounter){ - AssertionResult.setFailureMessage("Pay Link description expected to be 'receive payments "+lnurlpCounter+"', but was: " + resp.description); - AssertionResult.setFailure(true) -} - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -vars.put("payLinkId", resp.id || 'no-pay-link-id'); -vars.put("payLinkLnurl", resp.lnurl || 'no-pay-link-lnurl'); - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /lnurlp/link/${payLinkId} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - 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 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - Copy LNURL - ${payLinkLnurl} - - - Assertion.response_data - false - 2 - - - - - - - - false - all_wallets - true - = - true - - - - ${host} - ${port} - ${scheme} - UTF-8 - /lnurlp/api/v1/links/${payLinkId} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - X-Api-Key - ${inkey} - - - Accept-Encoding - gzip, deflate, br - - - 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, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - lnurl - ${payLinkLnurl} - true - false - false - true - - - - - - - - false - all_wallets - true - = - true - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/lnurlscan/${payLinkLnurl} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - X-Api-Key - ${adminWalletKey} - - - Accept-Encoding - gzip, deflate, br - - - 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, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - domain - ${host}:${port} - true - false - false - true - - - - tag - payRequest - true - false - false - true - - - - commentAllowed - 128 - true - false - false - true - - - - kind - pay - true - false - false - true - - - - description - receive payments ${lnurlpCounter} - true - false - false - true - - - - payLinkCallback - callback - 0 - no-paylink-callback - - - - payLinkDescriptionHash - description_hash - 0 - no-paylink-description-hash - - - - - true - ${paymentCountPerLnurlp} - - - - 1 - ${paymentCountPerLnurlp} - 1 - lnurlpPaymentCounter - - true - - - - false - true - - - - true - - - - false - {"callback":"${scheme}://${host}:${port}/lnurlp/api/v1/lnurl/cb/${payLinkId}","description_hash":"${payLinkDescriptionHash}","amount":1${lnurlpCounter}000,"comment":"xxq ${lnurlpCounter}","description":"receive payments ${lnurlpCounter}"} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /api/v1/payments/lnurl - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminWalletKey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - success_action - - false - false - false - false - - - - paymenHash - payment_hash - 0 - no-paymenthash - - - - - 3000 - for the webhook to be called - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/payments/${paymenHash} - GET - true - false - true - false - - - - - - - - - X-Api-Key - ${inkey} - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - $.details.extra.wh_success - true - true - false - false - false - - - - $.details.extra.wh_message - OK - true - false - false - false - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) -var paymenHash = vars.get("paymenHash") - - -var whResp = resp.details.extra.wh_response -var separatorIndex = whResp.indexOf("\r\n\r\n") -if (separatorIndex == -1) { - AssertionResult.setFailureMessage("Webhook response has wrong format: " + whResp); - AssertionResult.setFailure(true) -} else { - var headers = whResp.substring(0, separatorIndex) - var bodyStr = whResp.substring(separatorIndex) - var body = JSON.parse(bodyStr) - if (body.payment_hash !== paymenHash) { - AssertionResult.setFailureMessage("Incorrect webhook payment hash: " + JSON.stringify(body)); - AssertionResult.setFailure(true) - } else if (headers.indexOf("h1: 1") === -1) { - AssertionResult.setFailureMessage("Expected header missing: 'h1': '1'"); - AssertionResult.setFailure(true) - } else if (!body.body || !body.body.b2 || body.body.b2 !== 2) { - AssertionResult.setFailureMessage("Expected body field missing: \"body\": {\"b2\": 2}, found: " + JSON.stringify(body.body)); - AssertionResult.setFailure(true) - } -} - - - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?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 lnurlpCounter = +vars.get('lnurlpCounter') - - -var userBalance = +vars.get("userBalance") -userBalance += 10 + lnurlpCounter - -// millisats -if (resp.balance !== userBalance * 1000) { - AssertionResult.setFailureMessage("Expected balance to be "+userBalance * 1000+", but got: "+ resp.balance); - AssertionResult.setFailure(true) -} - -vars.put("userBalance", userBalance) - javascript - - - - - - - - - - false - true - - - - - - - false - enable - withdraw - = - true - - - - ${host} - ${port} - ${scheme} - utf-8 - /extensions - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Referer - ${scheme}://${host}:${port}/extensions - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - ${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/5.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 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - v-for="extension in filteredExtensions" - - - Assertion.response_data - false - 2 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /withdraw/ - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.5 - - - Upgrade-Insecure-Requests - ${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/5.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 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - Withdraw links - curl -X GET http://127.0.0.1:5000/withdraw/api/v1/links -H - - - Assertion.response_data - false - 2 - - - - - - - - false - all_wallets - true - = - true - - - - ${host} - ${port} - ${scheme} - UTF-8 - /withdraw/api/v1/links - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.5 - - - X-Api-Key - ${inkey} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - [] - - - Assertion.response_data - false - 8 - - - - - - false - true - - - - true - - - - false - {"name":"receive wallet"} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /api/v1/wallet - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.5 - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminkey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - name - receive wallet - true - false - false - false - - - - receiveInkey - inkey - 0 - no-receive-inkey - - - - - true - ${lnurlwCount} - - - - 1 - - 1 - lnurlwCounter - - false - - - - false - true - - - - true - - - - false - { - "is_unique": false, - "use_custom": false, - "title": "withdraw ${lnurlwCounter}", - "min_withdrawable": 10, - "max_withdrawable":${lnurlwCounter}0, - "uses": 5, - "wait_time": 1, - "webhook_url": "http://localhost:8081", - "webhook_headers": "{\"h1\": \"1\"}", - "webhook_body": "{\"b2\": 2}", - "custom_url": null -} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /withdraw/api/v1/links - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.5 - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminkey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -var walletId = vars.get("walletId") -var lnurlwCounter = +vars.get("lnurlwCounter") - -if (!resp.id) { - AssertionResult.setFailureMessage("Withdraw Link not created"); - AssertionResult.setFailure(true) -} else if (resp.wallet !== walletId) { - AssertionResult.setFailureMessage("Withdraw Link wallet expected to be '" + walletId + "', but was: " + resp.wallet); - AssertionResult.setFailure(true) -} else if (resp.title !== "withdraw " + lnurlwCounter) { - AssertionResult.setFailureMessage("Withdraw Link description expected to be 'withdraw " + lnurlwCounter + "', but was: " + resp.description); - AssertionResult.setFailure(true) -} - - - - withdrawLinkId - id - 0 - no-withdraw-link-id - - - - withdrawLinkLnurl - lnurl - 0 - no-withdraw-link-lnurl - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /withdraw/${withdrawLinkId} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.5 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/5.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 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - Copy LNURL - ${withdrawLinkLnurl} - - - Assertion.response_data - false - 2 - - - - - - - - false - all_wallets - true - = - true - - - - ${host} - ${port} - ${scheme} - UTF-8 - /withdraw/api/v1/links/${withdrawLinkId} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - X-Api-Key - ${inkey} - - - Accept-Encoding - gzip, deflate, br - - - 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, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - lnurl - ${withdrawLinkLnurl} - true - false - false - true - - - - - - - - false - all_wallets - true - = - true - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/lnurlscan/${withdrawLinkLnurl} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - X-Api-Key - ${adminWalletKey} - - - Accept-Encoding - gzip, deflate, br - - - 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, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - domain - ${host}:${port} - true - false - false - true - - - - tag - withdrawRequest - true - false - false - true - - - - kind - withdraw - true - false - false - true - - - - defaultDescription - withdraw ${lnurlwCounter} - true - false - false - true - - - - withdrawLinkCallback - callback - 0 - no-withdrawlink-callback - - - - - true - ${withdrawCountPerLnurlw} - - - - 1 - ${withdrawCountPerLnurlw} - 1 - lnurlwWithdrawCounter - - true - - - - false - true - - - - true - - - - false - {"out":false,"amount":10,"memo":"withdraw ${lnurlwCounter}","unit":"sat","lnurl_callback":"${withdrawLinkCallback}"} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /api/v1/payments - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${receiveInkey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - lnurl_response - true - true - false - false - true - - - - paymenHash - payment_hash - 0 - no-payment-hash - - - - - 3000 - for the callback to be invoked - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/payments/${paymenHash} - GET - true - false - true - false - - - - - - - - - X-Api-Key - ${inkey} - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - $.details.extra.wh_success - true - true - false - false - false - - - - $.details.extra.wh_message - OK - true - false - false - false - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) -var paymenHash = vars.get("paymenHash") - - -var whResp = resp.details.extra.wh_response -var separatorIndex = whResp.indexOf("\r\n\r\n") -if (separatorIndex == -1) { - AssertionResult.setFailureMessage("Webhook response has wrong format: " + whResp); - AssertionResult.setFailure(true) -} else { - var headers = whResp.substring(0, separatorIndex) - var bodyStr = whResp.substring(separatorIndex) - var body = JSON.parse(bodyStr) - if (body.payment_hash !== paymenHash) { - AssertionResult.setFailureMessage("Incorrect webhook payment hash: " + JSON.stringify(body)); - AssertionResult.setFailure(true) - } else if (headers.indexOf("h1: 1") === -1) { - AssertionResult.setFailureMessage("Expected header missing: 'h1': '1'"); - AssertionResult.setFailure(true) - } else if (!body.body || !body.body.b2 || body.body.b2 !== 2) { - AssertionResult.setFailureMessage("Expected body field missing: \"body\": {\"b2\": 2}, found: " + JSON.stringify(body.body)); - AssertionResult.setFailure(true) - } -} - - - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?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 userBalance = +vars.get("userBalance") -userBalance -= 10 - -// millisats -if (resp.balance !== userBalance * 1000) { - AssertionResult.setFailureMessage("Expected balance to be "+userBalance * 1000+", but got: "+ resp.balance); - AssertionResult.setFailure(true) -} - -vars.put("userBalance", userBalance) - javascript - - - - - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?wal=${walletId} - - - Accept-Language - en-US,en;q=0.5 - - - X-Api-Key - ${receiveInkey} - - - 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 withdrawAmount = 10; -var lnurlwCount = +vars.get("lnurlwCount"); -var withdrawCountPerLnurlw = +vars.get("withdrawCountPerLnurlw"); - -var userBalance = withdrawAmount * lnurlwCount * withdrawCountPerLnurlw; - -// millisats -if (resp.balance !== userBalance * 1000) { - AssertionResult.setFailureMessage( - "Expected balance to be " + - userBalance * 1000 + - ", but got: " + - resp.balance - ); - AssertionResult.setFailure(true); -} - 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 - - - - - - diff --git a/integration/tpos.jmx b/integration/tpos.jmx deleted file mode 100644 index 37da0bf10..000000000 --- a/integration/tpos.jmx +++ /dev/null @@ -1,3214 +0,0 @@ - - - - - false - false - - - - - - - - - - - host - ${__property(host,,127.0.0.1)} - = - - - scheme - ${__property(scheme,,http)} - = - - - port - ${__property(port,,5000)} - = - - - thinkTime - 3000 - = - - - - - - - - - ${host} - ${port} - ${scheme} - - - 6 - Java - 20000 - 30000 - - - - - - - - stopthread - - false - 1 - - 1 - 1 - 1370726934000 - 1370726934000 - false - - - false - - - - - false - false - - - - false - true - - - - fragments/init-server.jmx - - - - - false - true - - - - fragments/init-account.jmx - - - - - false - true - - - - - - - false - enable - tpos - = - true - - - - ${host} - ${port} - ${scheme} - utf-8 - /extensions - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${paidChargeCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - 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 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/ - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Referer - ${scheme}://${host}:${port}/tpos/ - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 - - - Sec-Fetch-Dest - empty - - - - - - - - - - false - all_wallets - true - = - true - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Referer - ${scheme}://${host}:${port}/tpos/ - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - X-Api-Key - ${adminkey} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - - false - true - - - - - - pin - 2222 - = - - - timeBtw - = - 1 - - - withdrawLmt - = - 100000 - - - tipOptions - [2, 5] - = - - - memo - TPoS test - = - - - - - - true - - - - false - {"name":"tips wallet"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminkey} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()); - -var walletId = vars.get("walletId"); -var userId = vars.get("userId"); -if (!resp.id) { - AssertionResult.setFailureMessage("TPoS not created"); - AssertionResult.setFailure(true); -} else if (resp.user !== userId) { - AssertionResult.setFailureMessage( - "TPoS user id expected to be '" + userId + "', but was: " + resp.user - ); - AssertionResult.setFailure(true); -} else if (resp.name !== "tips wallet") { - AssertionResult.setFailureMessage( - "TPoS name expected to be 'tips wallet', but was: " + resp.name - ); - AssertionResult.setFailure(true); -} - - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -vars.put("tipWalletId", resp.id || "no-tip-wallet-id"); -vars.put("tipinkey", resp.inkey || 'no-tip-inkey'); -vars.put("tipadminkey", resp.adminkey || 'no-tip-adminkey'); - - - - - - true - - - - false - {"name":"Test","wallet":"${walletId}","currency":"USD"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminkey} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -var walletId = vars.get("walletId") - -if (!resp.id) { - AssertionResult.setFailureMessage("TPoS not created"); - AssertionResult.setFailure(true) -} else if (resp.wallet !== walletId){ - AssertionResult.setFailureMessage("TPoS description expected to be '"+walletId+"', but was: " + resp.wallet); - AssertionResult.setFailure(true) -} - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -vars.put("tposId", resp.id || 'no-tpos-id'); - - - - - true - - - - false - {"tip_options":"${tipOptions}","tip_wallet":"${tipWalletId}"} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${tposId} - PUT - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminkey} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 40 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -var walletId = vars.get("walletId") -var tipWalletId = vars.get("tipWalletId") -var tipOptions = vars.get("tipOptions") - -if (!resp.id) { - AssertionResult.setFailureMessage("TPoS not updated"); - AssertionResult.setFailure(true) -} else if (resp.wallet !== walletId){ - AssertionResult.setFailureMessage("TPoS description expected to be '"+walletId+"', but was: " + resp.wallet); - AssertionResult.setFailure(true) -} else if (resp.tip_wallet != tipWalletId) { - AssertionResult.setFailureMessage("Tip wallet expected to be '"+tipWalletId+"', but was: " + resp.tip_wallet); - AssertionResult.setFailure(true) -} else if (resp.tip_options != tipOptions) { - AssertionResult.setFailureMessage("Tip options expected to be '"+tipOptions+"', but was: " + resp.tip_options); - AssertionResult.setFailure(true) -} - - - - - true - - - - false - {"withdrawpin":${pin},"withdrawbtwn":${timeBtw},"name":"Test ATM","wallet":"${walletId}","currency":"EUR","withdrawlimit":${withdrawLmt}} - = - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminkey} - - - Content-Type - application/json - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -var walletId = vars.get("walletId") - -if (!resp.id) { - AssertionResult.setFailureMessage("TPoS not created"); - AssertionResult.setFailure(true) -} else if (resp.wallet !== walletId){ - AssertionResult.setFailureMessage("TPoS description expected to be '"+walletId+"', but was: " + resp.wallet); - AssertionResult.setFailure(true) -} - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -vars.put("ATMtposId", resp.id || 'no-tpos-id'); - - - - - - false - true - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/${tposId} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Referer - ${scheme}://${host}:${port}/tpos/ - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - ⬅ - ok - - - Assertion.response_data - false - 2 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/rate/EUR - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - rate - null - true - false - true - false - - - - - - false - true - - - - 1000 - 10 - - true - - amount - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${tposId}/invoices?amount=${amount}&memo=${memo} - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - Content-Type - application/x-www-form-urlencoded - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - payment_request - - false - false - false - true - - - - payment_hash - - false - false - false - true - - - - paymentRequest - payment_request - 0 - no-payment-request - - - - paymentHash - payment_hash - 0 - no-payment-hash - - - - - true - 1 - - - - 1100 - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${tposId}/invoices/${paymentHash} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Referer - ${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - paid - false - true - false - false - false - - - - - - true - - - - false - { - "out": true, - "amount": ${amount}, - "memo": "${memo}", - "unit": "sat", - "bolt11": "${paymentRequest}" -} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /api/v1/payments - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminWalletKey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -var paymentHash = vars.get("paymentHash") - -if (!resp.payment_hash) { - AssertionResult.setFailureMessage("Payment failed"); - AssertionResult.setFailure(true) -} else if (resp.payment_hash !== paymentHash) { - AssertionResult.setFailureMessage("Payment hash expected to be '"+paymentHash+"', but was: " + resp.payment_hash); - AssertionResult.setFailure(true) -} - - - - - 1100 - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${tposId}/invoices/${paymentHash} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Referer - ${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - paid - true - true - false - false - false - - - - - - false - true - - - - 1000 - 10 - - true - - amount - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${tposId}/invoices?amount=${amount}&memo=${memo}&tipAmount=${__javaScript(parseInt(Math.ceil(0.05*${amount})).toFixed(0))} - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - Content-Type - application/x-www-form-urlencoded - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - payment_request - - false - false - false - true - - - - payment_hash - - false - false - false - true - - - - paymentHash - payment_hash - 0 - no-payment-hash - - - - paymentRequest - payment_request - 0 - no-payment-request - - - - - true - 1 - - - - 1100 - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${tposId}/invoices/${paymentHash} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Referer - ${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - paid - false - true - false - false - false - - - - - - true - - - - false - { - "out": true, - "amount": ${amount}, - "memo": "${memo}", - "unit": "sat", - "bolt11": "${paymentRequest}" -} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /api/v1/payments - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminWalletKey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -var paymentHash = vars.get("paymentHash") - -if (!resp.payment_hash) { - AssertionResult.setFailureMessage("Payment failed"); - AssertionResult.setFailure(true) -} else if (resp.payment_hash !== paymentHash) { - AssertionResult.setFailureMessage("Payment hash expected to be '"+paymentHash+"', but was: " + resp.payment_hash); - AssertionResult.setFailure(true) -} - - - - - 1100 - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${tposId}/invoices/${paymentHash} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Referer - ${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - paid - true - true - false - false - false - - - - - - false - true - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/${ATMtposId} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - same-origin - - - Referer - ${scheme}://${host}:${port}/tpos/ - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Upgrade-Insecure-Requests - 1 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - ⬅ - Ok - - - Assertion.response_data - false - 2 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/rate/EUR - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - rate - null - true - false - true - false - - - - - - false - true - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${ATMtposId}/invoices?amount=11000&memo=${memo} - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - Content-Type - application/x-www-form-urlencoded - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - payment_request - - false - false - false - true - - - - payment_hash - - false - false - false - true - - - - paymentRequest - payment_request - 0 - no-payment-request - - - - paymentHash - payment_hash - 0 - no-payment-hash - - - - - 1100 - - - - true - - - - false - { - "out": true, - "amount": 11000, - "memo": "${memo}", - "unit": "sat", - "bolt11": "${paymentRequest}" -} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /api/v1/payments - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminWalletKey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - javascript - - - true - var resp = JSON.parse(prev.getResponseDataAsString()) - -var paymentHash = vars.get("paymentHash") - -if (!resp.payment_hash) { - AssertionResult.setFailureMessage("Payment failed"); - AssertionResult.setFailure(true) -} else if (resp.payment_hash !== paymentHash) { - AssertionResult.setFailureMessage("Payment hash expected to be '"+paymentHash+"', but was: " + resp.payment_hash); - AssertionResult.setFailure(true) -} - - - - - 1100 - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/tposs/${ATMtposId}/invoices/${paymentHash} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Referer - ${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - paid - true - true - false - false - false - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?wal=${walletId} - - - Accept-Language - en-US,en;q=0.5 - - - X-Api-Key - ${adminWalletKey} - - - 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 - - - - adminBalance - balance - 0 - no-admin-balance - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?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 - - - - userBalance - balance - 0 - no-user-balance - - - - - - false - true - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/atm/${ATMtposId}/${pin} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - token - id - 0 - no-token - - - - - - false - true - - - - 10000 - 3000 - - true - - amount - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /tpos/api/v1/atm/withdraw/${token}/${amount} - GET - true - false - true - false - - Java - - - - - - - - Sec-Fetch-Mode - cors - - - Referer - https://violet-frogs-fail.loca.lt/tpos/4qJSDrSf9peoV9iMqvmpBT - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - claimed - false - true - false - false - true - - - - amount - ${amount} - true - false - false - true - - - - lnurl - lnurl - 0 - no-lnurl - - - - certAlias - -1 - True - 0 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/lnurlscan/${lnurl} - GET - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Referer - ${scheme}://${host}:${port}/wallet - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - X-Api-Key - ${adminWalletKey} - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0 - - - Accept - application/json, text/plain, */* - - - Sec-Fetch-Dest - empty - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - domain - ${host}:${port} - true - false - false - true - - - - tag - withdrawRequest - true - false - false - true - - - - kind - withdraw - true - false - false - true - - - - withdrawLinkCallback - callback - 0 - no-withdrawlink-callback - - - - - true - - - - false - {"out":false,"amount":${amount},"memo":"TPoS withdraw","unit":"sat","lnurl_callback":"${withdrawLinkCallback}"} - = - - - - ${host} - ${port} - ${scheme} - utf-8 - /api/v1/payments - POST - true - false - true - false - - - - - - - - - Sec-Fetch-Mode - cors - - - Sec-Fetch-Site - same-origin - - - Accept-Language - en-US,en;q=0.${lnurlpCount} - - - Origin - ${scheme}://${host}:${port} - - - Accept - application/json, text/plain, */* - - - X-Api-Key - ${adminWalletKey} - - - Content-Type - application/json;charset=utf-8 - - - Accept-Encoding - gzip, deflate, br - - - User-Agent - Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0 - - - Sec-Fetch-Dest - empty - - - - - - - 201 - - - Assertion.response_code - false - 8 - - - - lnurl_response - true - true - false - false - true - - - - paymenHash - payment_hash - 0 - no-payment-hash - - - - - 1100 - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/payments/${paymenHash} - GET - true - false - true - false - - - - - - - - - X-Api-Key - ${inkey} - - - - - - - 200 - - - Assertion.response_code - false - 8 - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?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 userBalance = +vars.get("userBalance") -var amount = +vars.get("amount") -userBalance -= amount * 1000 - -// millisats -if (resp.balance !== userBalance) { - AssertionResult.setFailureMessage("Expected balance to be "+userBalance+", but got: "+ resp.balance); - AssertionResult.setFailure(true) -} - javascript - - - - - - - - ${host} - ${port} - ${scheme} - UTF-8 - /api/v1/wallet - GET - true - false - true - false - - - - - - - - - Referer - ${scheme}://${host}:${port}/wallet?wal=${walletId} - - - Accept-Language - en-US,en;q=0.5 - - - X-Api-Key - ${adminWalletKey} - - - 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 adminBalance = +vars.get("adminBalance") -var amount = +vars.get("amount") -adminBalance += amount * 1000 - -// millisats -if (resp.balance !== adminBalance) { - AssertionResult.setFailureMessage("Expected balance to be "+adminBalance+", but got: "+ resp.balance); - AssertionResult.setFailure(true) -} - 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 - - - - - - - - 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 - - - - 8081 - 0 - 25 - - - - continue - - false - 1 - - 1 - 1 - false - - - true - - - - - diff --git a/integration/watchonly-satspay-tipjar.jmx b/integration/watchonly-satspay-tipjar.jmx deleted file mode 100644 index 7e4d1a6c2..000000000 --- a/integration/watchonly-satspay-tipjar.jmx +++ /dev/null @@ -1,3222 +0,0 @@ - - - - - - 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 - - - - - -