mirror of
https://github.com/lnbits/lnbits.git
synced 2025-03-27 02:02:14 +01:00
* chore: add tests * chore: add reference to jmter job * chore: add jmeter job * chore: touch tests * chorE: disable other workflows * chore: do not set `LNBITS_ADMIN_UI: true` * chore: extra log file * chore: rollback * chore: testing stuff * feat: top-up wallet * chore: clean-up usr * chore: clean-up user query param * chore: remove hardcoded usr * chore: clean-up * chore: clean-up * chore: different improvements * chore: clean-up * chore: remove hardcoded values * refactor: extract `init-server` fragment * chore: move fragment * feat: use test frgment * chore: clean-up hardcoded values * chore: clean-up * fix: get lnurl working * chore: re-arange elements * chore: re-arange elements * fix: add `lnurlp, withdraw` extensions * chore: rename file * fix: login with user id * refactor: extract init account * fix: tips wallet * fix: assertion * refactor: use fragments; group loops * chore: re-enable the other CI jobs * fix: separate wallet for receive * feat: check receive wallet balance * feat: increase wait time
3223 lines
202 KiB
XML
3223 lines
202 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.5">
|
|
<hashTree>
|
|
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
|
|
<stringProp name="TestPlan.comments"></stringProp>
|
|
<boolProp name="TestPlan.functional_mode">false</boolProp>
|
|
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
|
|
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="TestPlan.user_define_classpath"></stringProp>
|
|
</TestPlan>
|
|
<hashTree>
|
|
<Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="host" elementType="Argument">
|
|
<stringProp name="Argument.name">host</stringProp>
|
|
<stringProp name="Argument.value">${__property(host,,127.0.0.1)}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="scheme" elementType="Argument">
|
|
<stringProp name="Argument.name">scheme</stringProp>
|
|
<stringProp name="Argument.value">${__property(scheme,,http)}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="port" elementType="Argument">
|
|
<stringProp name="Argument.name">port</stringProp>
|
|
<stringProp name="Argument.value">${__property(port,,5000)}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="xpubNoFunds" elementType="Argument">
|
|
<stringProp name="Argument.name">xpubNoFunds</stringProp>
|
|
<stringProp name="Argument.value">zpub6roF3uF1YsrxvSK9cC7kpT7xt45i6aZffVg5SHWkqcEMTpA2fnB9eF45wgM7EXAmFDazxyWGsDbwCMUTiteYFhBJNLrgpkBjVet9S98UXor</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="xpubWithFunds" elementType="Argument">
|
|
<stringProp name="Argument.name">xpubWithFunds</stringProp>
|
|
<stringProp name="Argument.value">zpub6rsRjqj6BTbD9DjqrY4p14tUx5kdA8ZGCTJD99wZTxD5wfvCkyXKrK3s7M3B1eFN6NbRhmbDDRDC8LF3Bn5gmxxN9rF8mDpZsGC6isGrK1g</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="paidChargeCount" elementType="Argument">
|
|
<stringProp name="Argument.name">paidChargeCount</stringProp>
|
|
<stringProp name="Argument.value">5</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="userTipCount" elementType="Argument">
|
|
<stringProp name="Argument.name">userTipCount</stringProp>
|
|
<stringProp name="Argument.value">5</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="thinkTime" elementType="Argument">
|
|
<stringProp name="Argument.name">thinkTime</stringProp>
|
|
<stringProp name="Argument.value">3000</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</Arguments>
|
|
<hashTree/>
|
|
<ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port"></stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
|
<stringProp name="HTTPSampler.path"></stringProp>
|
|
<stringProp name="HTTPSampler.concurrentPool">6</stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</ConfigTestElement>
|
|
<hashTree/>
|
|
<CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
|
|
<collectionProp name="CookieManager.cookies"/>
|
|
<boolProp name="CookieManager.clearEachIteration">false</boolProp>
|
|
<boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
|
|
</CookieManager>
|
|
<hashTree/>
|
|
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
|
|
<stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
|
|
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
|
|
<boolProp name="LoopController.continue_forever">false</boolProp>
|
|
<stringProp name="LoopController.loops">1</stringProp>
|
|
</elementProp>
|
|
<stringProp name="ThreadGroup.num_threads">1</stringProp>
|
|
<stringProp name="ThreadGroup.ramp_time">1</stringProp>
|
|
<longProp name="ThreadGroup.start_time">1370726934000</longProp>
|
|
<longProp name="ThreadGroup.end_time">1370726934000</longProp>
|
|
<boolProp name="ThreadGroup.scheduler">false</boolProp>
|
|
<stringProp name="ThreadGroup.duration"></stringProp>
|
|
<stringProp name="ThreadGroup.delay"></stringProp>
|
|
<boolProp name="ThreadGroup.same_user_on_next_iteration">false</boolProp>
|
|
</ThreadGroup>
|
|
<hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Init Server" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Init Server" enabled="true">
|
|
<stringProp name="IncludeController.includepath">fragments/init-server.jmx</stringProp>
|
|
</IncludeController>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Init Account" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Init Account" enabled="true">
|
|
<stringProp name="IncludeController.includepath">fragments/init-account.jmx</stringProp>
|
|
</IncludeController>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Watchonly extension" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Enable "watchonly"" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="usr" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">usr</stringProp>
|
|
<stringProp name="Argument.value">${userId}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
<elementProp name="enable" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">enable</stringProp>
|
|
<stringProp name="Argument.value">watchonly</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/extensions</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/extensions?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Go to "watchonly" page" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="usr" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">usr</stringProp>
|
|
<stringProp name="Argument.value">${userId}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/watchonly/</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check has `Scan Blockchain` text" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="-1993537577">Scan Blockchain</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">2</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Get config" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/watchonly/api/v1/config</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/watchonly/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check config values" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="1983561547">{"mempool_endpoint":"https://mempool.space","receive_gap_limit":20,"change_gap_limit":5,"sats_denominated":true,"network":"Mainnet"}</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Get all wallets" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="network" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">network</stringProp>
|
|
<stringProp name="Argument.value">Mainnet</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/watchonly/api/v1/wallet</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/watchonly/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check no accounts present" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="2914">[]</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Create new segwit account" enabled="true">
|
|
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.value">{"title":"segwit","masterpub":"${xpubWithFunds}","network":"Mainnet","meta":"{\"accountPath\":\"m/84'/0'/0'\"}"}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/watchonly/api/v1/wallet</stringProp>
|
|
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/watchonly/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${adminkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json;charset=utf-8</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="false">
|
|
<stringProp name="scriptLanguage">groovy</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract Account Id" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">var resp = JSON.parse(prev.getResponseDataAsString())
|
|
|
|
vars.put("onchainAccountId", resp.id || 'no-onchain-account-id');</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Get accounts" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="network" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">network</stringProp>
|
|
<stringProp name="Argument.value">Mainnet</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/watchonly/api/v1/wallet</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/watchonly/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check Accounts" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Get account addresses" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/watchonly/api/v1/addresses/${onchainAccountId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/watchonly/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check Gap Addresses" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">var addresses = JSON.parse(prev.getResponseDataAsString())
|
|
|
|
if (addresses.length !== 25) {
|
|
AssertionResult.setFailureMessage("Expected 25 addresses, got " + addresses.length );
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Get new address" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/watchonly/api/v1/address/${onchainAccountId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/watchonly/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check New Address" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">var resp = JSON.parse(prev.getResponseDataAsString())
|
|
|
|
var expectedAddress = 'bc1qtmfyj6s76xhrsgd4aw6qq9tc9d48vnd0690k5w'
|
|
if (resp.address !== expectedAddress) {
|
|
AssertionResult.setFailureMessage("Expected addresses '"+expectedAddress+"', got " + resp.address );
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Sats Pay Extension" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Enable "satspay"" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="usr" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">usr</stringProp>
|
|
<stringProp name="Argument.value">${userId}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
<elementProp name="enable" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">enable</stringProp>
|
|
<stringProp name="Argument.value">satspay</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/extensions</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/extensions?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Go to "satspay" page" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="usr" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">usr</stringProp>
|
|
<stringProp name="Argument.value">${userId}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/extensions?usr=${userId}&enable=satspay</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check `Charges` header" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="-957205577"><h5 class="text-subtitle1 q-my-none">Charges</h5></stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">2</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Get charges" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charges</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/satspay/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check no charge" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="2914">[]</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Create new onchain charge" enabled="true">
|
|
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.value">{"onchain":true,"onchainwallet":"${onchainAccountId}","lnbits":false,"description":"Onchain Charge","time":1111,"amount":1111,"lnbitswallet":null}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charge</stringProp>
|
|
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/satspay/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json;charset=utf-8</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract Charge Id" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">var resp = JSON.parse(prev.getResponseDataAsString())
|
|
|
|
vars.put("chargeId", resp.id || 'no-charge-id');</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Open charge page" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/${chargeId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/satspay/</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Get charge balance" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charge/balance/${chargeId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/satspay/${chargeId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">undefined</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Create lightning charge to expire" enabled="true">
|
|
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.value">{"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"}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charge</stringProp>
|
|
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${adminkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json;charset=utf-8</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Test ${paidChargeCount} LN charges" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Test LN charges (loop)" enabled="true">
|
|
<boolProp name="LoopController.continue_forever">true</boolProp>
|
|
<stringProp name="LoopController.loops">${paidChargeCount}</stringProp>
|
|
</LoopController>
|
|
<hashTree>
|
|
<CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Charge Counter" enabled="true">
|
|
<stringProp name="CounterConfig.start">1</stringProp>
|
|
<stringProp name="CounterConfig.end"></stringProp>
|
|
<stringProp name="CounterConfig.incr">1</stringProp>
|
|
<stringProp name="CounterConfig.name">chargeCounter</stringProp>
|
|
<stringProp name="CounterConfig.format"></stringProp>
|
|
<boolProp name="CounterConfig.per_user">false</boolProp>
|
|
</CounterConfig>
|
|
<hashTree/>
|
|
<CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Amount Generator" enabled="true">
|
|
<stringProp name="CounterConfig.start">10</stringProp>
|
|
<stringProp name="CounterConfig.end"></stringProp>
|
|
<stringProp name="CounterConfig.incr">1</stringProp>
|
|
<stringProp name="CounterConfig.name">amountGenerator</stringProp>
|
|
<stringProp name="CounterConfig.format"></stringProp>
|
|
<boolProp name="CounterConfig.per_user">true</boolProp>
|
|
<boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
|
|
</CounterConfig>
|
|
<hashTree/>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Test LN charge ${chargeCounter}" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Create lightning charge" enabled="true">
|
|
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.value">{"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"}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charge</stringProp>
|
|
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${adminkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json;charset=utf-8</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract Lightning Charge Id" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">var resp = JSON.parse(prev.getResponseDataAsString())
|
|
|
|
vars.put("lightningChargeId", resp.id || 'no-lightning-charge-id');
|
|
vars.put("paymentRequest", resp.payment_request || 'no-lpayment-request');
|
|
|
|
</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Go to charge page" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/${lightningChargeId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Get lightning charge balance (before)" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charge/balance/${lightningChargeId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">undefined</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check balance zero" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<TestAction guiclass="TestActionGui" testclass="TestAction" testname="Think Time" enabled="true">
|
|
<intProp name="ActionProcessor.action">1</intProp>
|
|
<intProp name="ActionProcessor.target">0</intProp>
|
|
<stringProp name="ActionProcessor.duration">${thinkTime}</stringProp>
|
|
</TestAction>
|
|
<hashTree>
|
|
<UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Pause" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1000</stringProp>
|
|
<stringProp name="RandomTimer.range">100</stringProp>
|
|
</UniformRandomTimer>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Pay Invoice" enabled="true">
|
|
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.value">{"out":true,"bolt11":"${paymentRequest}"}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/api/v1/payments</stringProp>
|
|
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${adminWalletKey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json;charset=utf-8</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 201" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49587">201</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Get lightning charge balance (after)" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charge/balance/${lightningChargeId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">undefined</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check balance" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Get lightning charge (after)" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charge/${lightningChargeId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${adminkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check charge webhook call" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}
|
|
|
|
|
|
</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Check charge payments" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Get charges after payment" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charges</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/satspay/?usr=${userId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check charges" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}
|
|
</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Check wallet balance" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/api/v1/wallet</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/wallet?usr=${userId}&wal=${walletId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check Balance" enabled="true">
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="script">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)</stringProp>
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Check payments" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/api/v1/payments</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/wallet?usr=${userId}&wal=${walletId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check payments status" enabled="true">
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="script">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)
|
|
}
|
|
</stringProp>
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Tip Jar" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tipjar] Enable "tipjar"" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="usr" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">usr</stringProp>
|
|
<stringProp name="Argument.value">${userId}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
<elementProp name="enable" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">enable</stringProp>
|
|
<stringProp name="Argument.value">tipjar</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/extensions</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${paidChargeCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tipjar] Go to "tipjar" page" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="usr" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">usr</stringProp>
|
|
<stringProp name="Argument.value">${userId}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/tipjar/</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${paidChargeCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check has `New TipJar` text" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="1764117056">New TipJar</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">2</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tipjar] Get all tipjars" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/tipjar/api/v1/tipjars</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${paidChargeCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check no tipjars" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="2914">[]</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tipjar] Create tipjar" enabled="true">
|
|
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.value">{"wallet":"${walletId}","name":"Nakamoto","webhook":"${scheme}://${host}:8081"}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/tipjar/api/v1/tipjars</stringProp>
|
|
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${paidChargeCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${adminkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json;charset=utf-8</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract tipjar Id" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">var resp = JSON.parse(prev.getResponseDataAsString())
|
|
|
|
vars.put("tipjarId", resp.id || 'no-tipjar-id');</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check tipjar" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">var resp = JSON.parse(prev.getResponseDataAsString())
|
|
|
|
if (resp.name !== "Nakamoto") {
|
|
AssertionResult.setFailureMessage("Expected tipjar name to be 'Nakamoto', got " + resp.name);
|
|
AssertionResult.setFailure(true)
|
|
}
|
|
</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tipjar] Open tipjar page" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/tipjar/${tipjarId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${paidChargeCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Test ${userTipCount} tips" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Test tips (loop)" enabled="true">
|
|
<boolProp name="LoopController.continue_forever">true</boolProp>
|
|
<stringProp name="LoopController.loops">${userTipCount}</stringProp>
|
|
</LoopController>
|
|
<hashTree>
|
|
<CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Tip Counter" enabled="true">
|
|
<stringProp name="CounterConfig.start">1</stringProp>
|
|
<stringProp name="CounterConfig.end"></stringProp>
|
|
<stringProp name="CounterConfig.incr">1</stringProp>
|
|
<stringProp name="CounterConfig.name">tipCounter</stringProp>
|
|
<stringProp name="CounterConfig.format"></stringProp>
|
|
<boolProp name="CounterConfig.per_user">true</boolProp>
|
|
<boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
|
|
</CounterConfig>
|
|
<hashTree/>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Test ${tipCounter} tips" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tipjar] Create tip" enabled="true">
|
|
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.value">{"tipjar":"${tipjarId}","name":"Hal","sats":21,"message":"Let's go ...${tipCounter}!"}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/tipjar/api/v1/tips</stringProp>
|
|
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${paidChargeCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json;charset=utf-8</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check charge URL" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}
|
|
</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract charge URL for tip" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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');
|
|
}</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Open charge for tipjar" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">${tipChargeUrl}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tipjar/2</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${paidChargeCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Upgrade-Insecure-Requests" elementType="Header">
|
|
<stringProp name="Header.name">Upgrade-Insecure-Requests</stringProp>
|
|
<stringProp name="Header.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Get charge for tipjar" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/satspay/api/v1/charge/${tipChargeId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/satspay/${chargeId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check charge" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}
|
|
</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract tip payment request" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">var resp = JSON.parse(prev.getResponseDataAsString())
|
|
|
|
vars.put("tipPaymentRequest", resp.payment_request || 'no-tip-payment-request');
|
|
</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tipjar] Get created tips" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/tipjar/api/v1/tips</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${paidChargeCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${paidChargeCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check tips for user" enabled="true">
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="script">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)
|
|
}
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<TestAction guiclass="TestActionGui" testclass="TestAction" testname="Think Time" enabled="true">
|
|
<intProp name="ActionProcessor.action">1</intProp>
|
|
<intProp name="ActionProcessor.target">0</intProp>
|
|
<stringProp name="ActionProcessor.duration">${thinkTime}</stringProp>
|
|
</TestAction>
|
|
<hashTree>
|
|
<UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Pause" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1000</stringProp>
|
|
<stringProp name="RandomTimer.range">100</stringProp>
|
|
</UniformRandomTimer>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Pay Invoice" enabled="true">
|
|
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.value">{"out":true,"bolt11":"${tipPaymentRequest}"}</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/api/v1/payments</stringProp>
|
|
<stringProp name="HTTPSampler.method">POST</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${adminWalletKey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json;charset=utf-8</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 201" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49587">201</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Check wallet balance" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments"/>
|
|
</elementProp>
|
|
<stringProp name="HTTPSampler.domain">${host}</stringProp>
|
|
<stringProp name="HTTPSampler.port">${port}</stringProp>
|
|
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
|
|
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
|
<stringProp name="HTTPSampler.path">/api/v1/wallet</stringProp>
|
|
<stringProp name="HTTPSampler.method">GET</stringProp>
|
|
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
|
|
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
|
|
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
|
|
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
|
|
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
|
</HTTPSamplerProxy>
|
|
<hashTree>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers">
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/wallet?usr=${userId}&wal=${walletId}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.5</stringProp>
|
|
</elementProp>
|
|
<elementProp name="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:105.0) Gecko/20100101 Firefox/105.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check Status Code 200" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="49586">200</stringProp>
|
|
</collectionProp>
|
|
<stringProp name="Assertion.custom_message"></stringProp>
|
|
<stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
|
|
<boolProp name="Assertion.assume_success">false</boolProp>
|
|
<intProp name="Assertion.test_type">8</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check Balance" enabled="true">
|
|
<stringProp name="cacheKey">true</stringProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="parameters"></stringProp>
|
|
<stringProp name="script">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)</stringProp>
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
</hashTree>
|
|
</hashTree>
|
|
<ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
|
|
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
|
<objProp>
|
|
<name>saveConfig</name>
|
|
<value class="SampleSaveConfiguration">
|
|
<time>true</time>
|
|
<latency>true</latency>
|
|
<timestamp>true</timestamp>
|
|
<success>true</success>
|
|
<label>true</label>
|
|
<code>true</code>
|
|
<message>true</message>
|
|
<threadName>true</threadName>
|
|
<dataType>true</dataType>
|
|
<encoding>false</encoding>
|
|
<assertions>true</assertions>
|
|
<subresults>true</subresults>
|
|
<responseData>false</responseData>
|
|
<samplerData>false</samplerData>
|
|
<xml>false</xml>
|
|
<fieldNames>true</fieldNames>
|
|
<responseHeaders>false</responseHeaders>
|
|
<requestHeaders>false</requestHeaders>
|
|
<responseDataOnError>false</responseDataOnError>
|
|
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
|
|
<assertionsResultsToSave>0</assertionsResultsToSave>
|
|
<bytes>true</bytes>
|
|
<sentBytes>true</sentBytes>
|
|
<url>true</url>
|
|
<threadCounts>true</threadCounts>
|
|
<idleTime>true</idleTime>
|
|
<connectTime>true</connectTime>
|
|
</value>
|
|
</objProp>
|
|
<stringProp name="filename"></stringProp>
|
|
</ResultCollector>
|
|
<hashTree/>
|
|
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
|
|
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
|
<objProp>
|
|
<name>saveConfig</name>
|
|
<value class="SampleSaveConfiguration">
|
|
<time>true</time>
|
|
<latency>true</latency>
|
|
<timestamp>true</timestamp>
|
|
<success>true</success>
|
|
<label>true</label>
|
|
<code>true</code>
|
|
<message>true</message>
|
|
<threadName>true</threadName>
|
|
<dataType>true</dataType>
|
|
<encoding>false</encoding>
|
|
<assertions>true</assertions>
|
|
<subresults>true</subresults>
|
|
<responseData>false</responseData>
|
|
<samplerData>false</samplerData>
|
|
<xml>false</xml>
|
|
<fieldNames>true</fieldNames>
|
|
<responseHeaders>false</responseHeaders>
|
|
<requestHeaders>false</requestHeaders>
|
|
<responseDataOnError>false</responseDataOnError>
|
|
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
|
|
<assertionsResultsToSave>0</assertionsResultsToSave>
|
|
<bytes>true</bytes>
|
|
<sentBytes>true</sentBytes>
|
|
<url>true</url>
|
|
<threadCounts>true</threadCounts>
|
|
<idleTime>true</idleTime>
|
|
<connectTime>true</connectTime>
|
|
</value>
|
|
</objProp>
|
|
<stringProp name="filename"></stringProp>
|
|
</ResultCollector>
|
|
<hashTree/>
|
|
<ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
|
|
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
|
<objProp>
|
|
<name>saveConfig</name>
|
|
<value class="SampleSaveConfiguration">
|
|
<time>true</time>
|
|
<latency>true</latency>
|
|
<timestamp>true</timestamp>
|
|
<success>true</success>
|
|
<label>true</label>
|
|
<code>true</code>
|
|
<message>true</message>
|
|
<threadName>true</threadName>
|
|
<dataType>true</dataType>
|
|
<encoding>false</encoding>
|
|
<assertions>true</assertions>
|
|
<subresults>true</subresults>
|
|
<responseData>false</responseData>
|
|
<samplerData>false</samplerData>
|
|
<xml>false</xml>
|
|
<fieldNames>true</fieldNames>
|
|
<responseHeaders>false</responseHeaders>
|
|
<requestHeaders>false</requestHeaders>
|
|
<responseDataOnError>false</responseDataOnError>
|
|
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
|
|
<assertionsResultsToSave>0</assertionsResultsToSave>
|
|
<bytes>true</bytes>
|
|
<sentBytes>true</sentBytes>
|
|
<url>true</url>
|
|
<threadCounts>true</threadCounts>
|
|
<idleTime>true</idleTime>
|
|
<connectTime>true</connectTime>
|
|
</value>
|
|
</objProp>
|
|
<stringProp name="filename"></stringProp>
|
|
</ResultCollector>
|
|
<hashTree/>
|
|
<ResultCollector guiclass="RespTimeGraphVisualizer" testclass="ResultCollector" testname="Response Time Graph" enabled="true">
|
|
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
|
<objProp>
|
|
<name>saveConfig</name>
|
|
<value class="SampleSaveConfiguration">
|
|
<time>true</time>
|
|
<latency>true</latency>
|
|
<timestamp>true</timestamp>
|
|
<success>true</success>
|
|
<label>true</label>
|
|
<code>true</code>
|
|
<message>true</message>
|
|
<threadName>true</threadName>
|
|
<dataType>true</dataType>
|
|
<encoding>false</encoding>
|
|
<assertions>true</assertions>
|
|
<subresults>true</subresults>
|
|
<responseData>false</responseData>
|
|
<samplerData>false</samplerData>
|
|
<xml>false</xml>
|
|
<fieldNames>true</fieldNames>
|
|
<responseHeaders>false</responseHeaders>
|
|
<requestHeaders>false</requestHeaders>
|
|
<responseDataOnError>false</responseDataOnError>
|
|
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
|
|
<assertionsResultsToSave>0</assertionsResultsToSave>
|
|
<bytes>true</bytes>
|
|
<sentBytes>true</sentBytes>
|
|
<url>true</url>
|
|
<threadCounts>true</threadCounts>
|
|
<idleTime>true</idleTime>
|
|
<connectTime>true</connectTime>
|
|
</value>
|
|
</objProp>
|
|
<stringProp name="filename"></stringProp>
|
|
<stringProp name="RespTimeGraph.interval">100</stringProp>
|
|
<boolProp name="RespTimeGraph.seriesselection">true</boolProp>
|
|
<stringProp name="RespTimeGraph.seriesselectionmatchlabel">(wallet){1}</stringProp>
|
|
</ResultCollector>
|
|
<hashTree/>
|
|
<ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
|
|
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
|
<objProp>
|
|
<name>saveConfig</name>
|
|
<value class="SampleSaveConfiguration">
|
|
<time>true</time>
|
|
<latency>true</latency>
|
|
<timestamp>true</timestamp>
|
|
<success>true</success>
|
|
<label>true</label>
|
|
<code>true</code>
|
|
<message>true</message>
|
|
<threadName>true</threadName>
|
|
<dataType>true</dataType>
|
|
<encoding>false</encoding>
|
|
<assertions>true</assertions>
|
|
<subresults>true</subresults>
|
|
<responseData>false</responseData>
|
|
<samplerData>false</samplerData>
|
|
<xml>false</xml>
|
|
<fieldNames>true</fieldNames>
|
|
<responseHeaders>false</responseHeaders>
|
|
<requestHeaders>false</requestHeaders>
|
|
<responseDataOnError>false</responseDataOnError>
|
|
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
|
|
<assertionsResultsToSave>0</assertionsResultsToSave>
|
|
<bytes>true</bytes>
|
|
<sentBytes>true</sentBytes>
|
|
<url>true</url>
|
|
<threadCounts>true</threadCounts>
|
|
<idleTime>true</idleTime>
|
|
<connectTime>true</connectTime>
|
|
</value>
|
|
</objProp>
|
|
<stringProp name="filename"></stringProp>
|
|
</ResultCollector>
|
|
<hashTree/>
|
|
<ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
|
|
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
|
<objProp>
|
|
<name>saveConfig</name>
|
|
<value class="SampleSaveConfiguration">
|
|
<time>true</time>
|
|
<latency>true</latency>
|
|
<timestamp>true</timestamp>
|
|
<success>true</success>
|
|
<label>true</label>
|
|
<code>true</code>
|
|
<message>true</message>
|
|
<threadName>true</threadName>
|
|
<dataType>true</dataType>
|
|
<encoding>false</encoding>
|
|
<assertions>true</assertions>
|
|
<subresults>true</subresults>
|
|
<responseData>false</responseData>
|
|
<samplerData>false</samplerData>
|
|
<xml>false</xml>
|
|
<fieldNames>true</fieldNames>
|
|
<responseHeaders>false</responseHeaders>
|
|
<requestHeaders>false</requestHeaders>
|
|
<responseDataOnError>false</responseDataOnError>
|
|
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
|
|
<assertionsResultsToSave>0</assertionsResultsToSave>
|
|
<bytes>true</bytes>
|
|
<sentBytes>true</sentBytes>
|
|
<url>true</url>
|
|
<threadCounts>true</threadCounts>
|
|
<idleTime>true</idleTime>
|
|
<connectTime>true</connectTime>
|
|
</value>
|
|
</objProp>
|
|
<stringProp name="filename"></stringProp>
|
|
</ResultCollector>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HttpMirrorControl guiclass="HttpMirrorControlGui" testclass="HttpMirrorControl" testname="[callback] HTTP Mirror Server" enabled="true">
|
|
<stringProp name="HttpMirrorControlGui.port">8081</stringProp>
|
|
<stringProp name="HttpMirrorControlGui.maxPoolSize">0</stringProp>
|
|
<stringProp name="HttpMirrorControlGui.maxQueueSize">25</stringProp>
|
|
</HttpMirrorControl>
|
|
<hashTree/>
|
|
<ProxyControl guiclass="ProxyControlGui" testclass="ProxyControl" testname="HTTP(S) Test Script Recorder" enabled="false">
|
|
<stringProp name="ProxyControlGui.port">8888</stringProp>
|
|
<collectionProp name="ProxyControlGui.exclude_list">
|
|
<stringProp name="805311387">windowsupdate\.microsoft\.com.*</stringProp>
|
|
<stringProp name="1179605444">(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|eot|otf|ttf|mp4|woff|woff2)</stringProp>
|
|
<stringProp name="110431874">.*msg\.yahoo\.com.*</stringProp>
|
|
<stringProp name="-88591710">www\.download\.windowsupdate\.com.*</stringProp>
|
|
<stringProp name="1323576868">toolbarqueries\.google\..*</stringProp>
|
|
<stringProp name="1739087931">http?://self-repair\.mozilla\.org.*</stringProp>
|
|
<stringProp name="1206954446">tiles.*\.mozilla\.com.*</stringProp>
|
|
<stringProp name="-1424663473">.*detectportal\.firefox\.com.*</stringProp>
|
|
<stringProp name="1779943373">us\.update\.toolbar\.yahoo\.com.*</stringProp>
|
|
<stringProp name="-190610036">.*\.google\.com.*/safebrowsing/.*</stringProp>
|
|
<stringProp name="-1899150273">api\.bing\.com.*</stringProp>
|
|
<stringProp name="-958112859">toolbar\.google\.com.*</stringProp>
|
|
<stringProp name="-192420923">.*yimg\.com.*</stringProp>
|
|
<stringProp name="-576820688">toolbar\.msn\.com.*</stringProp>
|
|
<stringProp name="305776760">(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|eot|otf|ttf|mp4|woff|woff2)[\?;].*</stringProp>
|
|
<stringProp name="-1435252351">toolbar\.avg\.com/.*</stringProp>
|
|
<stringProp name="2118375536">www\.google-analytics\.com.*</stringProp>
|
|
<stringProp name="-1279148329">pgq\.yahoo\.com.*</stringProp>
|
|
<stringProp name="1815174768">safebrowsing.*\.google\.com.*</stringProp>
|
|
<stringProp name="-1314416226">sqm\.microsoft\.com.*</stringProp>
|
|
<stringProp name="587935979">g\.msn.*</stringProp>
|
|
<stringProp name="1629558731">clients.*\.google.*</stringProp>
|
|
<stringProp name="11072252">.*toolbar\.yahoo\.com.*</stringProp>
|
|
<stringProp name="1726898318">geo\.yahoo\.com.*</stringProp>
|
|
</collectionProp>
|
|
<collectionProp name="ProxyControlGui.include_list"/>
|
|
<boolProp name="ProxyControlGui.capture_http_headers">true</boolProp>
|
|
<intProp name="ProxyControlGui.grouping_mode">4</intProp>
|
|
<boolProp name="ProxyControlGui.add_assertion">false</boolProp>
|
|
<stringProp name="ProxyControlGui.sampler_type_name"></stringProp>
|
|
<boolProp name="ProxyControlGui.sampler_redirect_automatically">false</boolProp>
|
|
<boolProp name="ProxyControlGui.sampler_follow_redirects">true</boolProp>
|
|
<boolProp name="ProxyControlGui.use_keepalive">true</boolProp>
|
|
<boolProp name="ProxyControlGui.sampler_download_images">false</boolProp>
|
|
<boolProp name="ProxyControlGui.regex_match">true</boolProp>
|
|
<stringProp name="ProxyControlGui.content_type_include"></stringProp>
|
|
<stringProp name="ProxyControlGui.content_type_exclude"></stringProp>
|
|
<boolProp name="ProxyControlGui.notify_child_sl_filtered">false</boolProp>
|
|
<stringProp name="ProxyControlGui.proxy_prefix_http_sampler_name"></stringProp>
|
|
<intProp name="ProxyControlGui.proxy_http_sampler_naming_mode">0</intProp>
|
|
<stringProp name="ProxyControlGui.proxy_pause_http_sampler"></stringProp>
|
|
<boolProp name="ProxyControlGui.detect_graphql_request">true</boolProp>
|
|
<stringProp name="ProxyControlGui.default_encoding">UTF-8</stringProp>
|
|
</ProxyControl>
|
|
<hashTree>
|
|
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
|
|
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
|
<objProp>
|
|
<name>saveConfig</name>
|
|
<value class="SampleSaveConfiguration">
|
|
<time>true</time>
|
|
<latency>true</latency>
|
|
<timestamp>true</timestamp>
|
|
<success>true</success>
|
|
<label>true</label>
|
|
<code>true</code>
|
|
<message>true</message>
|
|
<threadName>true</threadName>
|
|
<dataType>true</dataType>
|
|
<encoding>true</encoding>
|
|
<assertions>true</assertions>
|
|
<subresults>true</subresults>
|
|
<responseData>true</responseData>
|
|
<samplerData>true</samplerData>
|
|
<xml>true</xml>
|
|
<fieldNames>false</fieldNames>
|
|
<responseHeaders>true</responseHeaders>
|
|
<requestHeaders>true</requestHeaders>
|
|
<responseDataOnError>true</responseDataOnError>
|
|
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
|
|
<assertionsResultsToSave>0</assertionsResultsToSave>
|
|
<bytes>true</bytes>
|
|
<url>true</url>
|
|
<fileName>true</fileName>
|
|
<hostname>true</hostname>
|
|
<threadCounts>true</threadCounts>
|
|
<sampleCount>true</sampleCount>
|
|
<idleTime>true</idleTime>
|
|
<connectTime>true</connectTime>
|
|
</value>
|
|
</objProp>
|
|
<stringProp name="filename">recording.xml</stringProp>
|
|
</ResultCollector>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
</hashTree>
|
|
</jmeterTestPlan>
|