mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2024-11-19 09:54:21 +01:00
a1ea04acf8
* 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
3215 lines
200 KiB
XML
3215 lines
200 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">
|
|
<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.comments"></stringProp>
|
|
<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="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">${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.implementation">Java</stringProp>
|
|
<stringProp name="HTTPSampler.connect_timeout">20000</stringProp>
|
|
<stringProp name="HTTPSampler.response_timeout">30000</stringProp>
|
|
</ConfigTestElement>
|
|
<hashTree/>
|
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
|
<collectionProp name="HeaderManager.headers"/>
|
|
</HeaderManager>
|
|
<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>
|
|
<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/>
|
|
<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="TPoS Extension" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Enable "tpos"" enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="enable" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">enable</stringProp>
|
|
<stringProp name="Argument.value">tpos</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</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, br</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>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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="[tpos ] Go to "tpos" 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">/tpos/</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</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, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.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>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Get tpos " enabled="true">
|
|
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="all_wallets" elementType="HTTPArgument">
|
|
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
|
<stringProp name="Argument.name">all_wallets</stringProp>
|
|
<stringProp name="Argument.value">true</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">/tpos/api/v1/tposs</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</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, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</HeaderManager>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPoS Create" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="TPoS Variables" enabled="true">
|
|
<collectionProp name="Arguments.arguments">
|
|
<elementProp name="pin" elementType="Argument">
|
|
<stringProp name="Argument.name">pin</stringProp>
|
|
<stringProp name="Argument.value">2222</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="timeBtw" elementType="Argument">
|
|
<stringProp name="Argument.name">timeBtw</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<stringProp name="Argument.value">1</stringProp>
|
|
</elementProp>
|
|
<elementProp name="withdrawLmt" elementType="Argument">
|
|
<stringProp name="Argument.name">withdrawLmt</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
<stringProp name="Argument.value">100000</stringProp>
|
|
</elementProp>
|
|
<elementProp name="tipOptions" elementType="Argument">
|
|
<stringProp name="Argument.name">tipOptions</stringProp>
|
|
<stringProp name="Argument.value">[2, 5]</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
<elementProp name="memo" elementType="Argument">
|
|
<stringProp name="Argument.name">memo</stringProp>
|
|
<stringProp name="Argument.value">TPoS test</stringProp>
|
|
<stringProp name="Argument.metadata">=</stringProp>
|
|
</elementProp>
|
|
</collectionProp>
|
|
</Arguments>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Create tips wallet" 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">{"name":"tips wallet"}</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/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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</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="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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 created TPoS" 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 walletId = vars.get("walletId");
|
|
var userId = vars.get("userId");
|
|
if (!resp.id) {
|
|
AssertionResult.setFailureMessage("TPoS not created");
|
|
AssertionResult.setFailure(true);
|
|
} else if (resp.user !== userId) {
|
|
AssertionResult.setFailureMessage(
|
|
"TPoS user id expected to be '" + userId + "', but was: " + resp.user
|
|
);
|
|
AssertionResult.setFailure(true);
|
|
} else if (resp.name !== "tips wallet") {
|
|
AssertionResult.setFailureMessage(
|
|
"TPoS name expected to be 'tips wallet', but was: " + resp.name
|
|
);
|
|
AssertionResult.setFailure(true);
|
|
}
|
|
</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract user id and wallet" 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("tipWalletId", resp.id || "no-tip-wallet-id");
|
|
vars.put("tipinkey", resp.inkey || 'no-tip-inkey');
|
|
vars.put("tipadminkey", resp.adminkey || 'no-tip-adminkey');
|
|
</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Create tpos" 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">{"name":"Test","wallet":"${walletId}","currency":"USD"}</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">/tpos/api/v1/tposs</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</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="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check created TPoS" 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 walletId = vars.get("walletId")
|
|
|
|
if (!resp.id) {
|
|
AssertionResult.setFailureMessage("TPoS not created");
|
|
AssertionResult.setFailure(true)
|
|
} else if (resp.wallet !== walletId){
|
|
AssertionResult.setFailureMessage("TPoS description expected to be '"+walletId+"', but was: " + resp.wallet);
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract tpos 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("tposId", resp.id || 'no-tpos-id');</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Update tpos (add tips)" 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">{"tip_options":"${tipOptions}","tip_wallet":"${tipWalletId}"}</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">/tpos/api/v1/tposs/${tposId}</stringProp>
|
|
<stringProp name="HTTPSampler.method">PUT</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</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="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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">40</intProp>
|
|
</ResponseAssertion>
|
|
<hashTree/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check updated TPoS" 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 walletId = vars.get("walletId")
|
|
var tipWalletId = vars.get("tipWalletId")
|
|
var tipOptions = vars.get("tipOptions")
|
|
|
|
if (!resp.id) {
|
|
AssertionResult.setFailureMessage("TPoS not updated");
|
|
AssertionResult.setFailure(true)
|
|
} else if (resp.wallet !== walletId){
|
|
AssertionResult.setFailureMessage("TPoS description expected to be '"+walletId+"', but was: " + resp.wallet);
|
|
AssertionResult.setFailure(true)
|
|
} else if (resp.tip_wallet != tipWalletId) {
|
|
AssertionResult.setFailureMessage("Tip wallet expected to be '"+tipWalletId+"', but was: " + resp.tip_wallet);
|
|
AssertionResult.setFailure(true)
|
|
} else if (resp.tip_options != tipOptions) {
|
|
AssertionResult.setFailureMessage("Tip options expected to be '"+tipOptions+"', but was: " + resp.tip_options);
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Create tpos (atm)" 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">{"withdrawpin":${pin},"withdrawbtwn":${timeBtw},"name":"Test ATM","wallet":"${walletId}","currency":"EUR","withdrawlimit":${withdrawLmt}}</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">/tpos/api/v1/tposs</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</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="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/json</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check created TPoS" 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 walletId = vars.get("walletId")
|
|
|
|
if (!resp.id) {
|
|
AssertionResult.setFailureMessage("TPoS not created");
|
|
AssertionResult.setFailure(true)
|
|
} else if (resp.wallet !== walletId){
|
|
AssertionResult.setFailureMessage("TPoS description expected to be '"+walletId+"', but was: " + resp.wallet);
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
<JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Extract tpos 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("ATMtposId", resp.id || 'no-tpos-id');</stringProp>
|
|
</JSR223PostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPoS Page" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Go to TPOS 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">/tpos/${tposId}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</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, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.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>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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 page content" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="11013">⬅</stringProp>
|
|
<stringProp name="3548">ok</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="[tpos] Get exchange rates" 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">/tpos/api/v1/rate/EUR</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check rate" enabled="true">
|
|
<stringProp name="JSON_PATH">rate</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">null</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">true</boolProp>
|
|
<boolProp name="ISREGEX">false</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPoS Create and Pay invoice" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Amount" enabled="true">
|
|
<stringProp name="maximumValue">1000</stringProp>
|
|
<stringProp name="minimumValue">10</stringProp>
|
|
<stringProp name="outputFormat"></stringProp>
|
|
<boolProp name="perThread">true</boolProp>
|
|
<stringProp name="randomSeed"></stringProp>
|
|
<stringProp name="variableName">amount</stringProp>
|
|
</RandomVariableConfig>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Create 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">/tpos/api/v1/tposs/${tposId}/invoices?amount=${amount}&memo=${memo}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check payment request" enabled="true">
|
|
<stringProp name="JSON_PATH">payment_request</stringProp>
|
|
<stringProp name="EXPECTED_VALUE"></stringProp>
|
|
<boolProp name="JSONVALIDATION">false</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check Payment hash" enabled="true">
|
|
<stringProp name="JSON_PATH">payment_hash</stringProp>
|
|
<stringProp name="EXPECTED_VALUE"></stringProp>
|
|
<boolProp name="JSONVALIDATION">false</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract payment request" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">paymentRequest</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">payment_request</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-payment-request</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract payment hash" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">paymentHash</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">payment_hash</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-payment-hash</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller (check payment)" enabled="true">
|
|
<boolProp name="LoopController.continue_forever">true</boolProp>
|
|
<stringProp name="LoopController.loops">1</stringProp>
|
|
</LoopController>
|
|
<hashTree>
|
|
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Wait a sec" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1100</stringProp>
|
|
</ConstantTimer>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Check 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">/tpos/api/v1/tposs/${tposId}/invoices/${paymentHash}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check paid is false" enabled="true">
|
|
<stringProp name="JSON_PATH">paid</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">false</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">false</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
</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,
|
|
"amount": ${amount},
|
|
"memo": "${memo}",
|
|
"unit": "sat",
|
|
"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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</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="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, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check payment hash" 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 paymentHash = vars.get("paymentHash")
|
|
|
|
if (!resp.payment_hash) {
|
|
AssertionResult.setFailureMessage("Payment failed");
|
|
AssertionResult.setFailure(true)
|
|
} else if (resp.payment_hash !== paymentHash) {
|
|
AssertionResult.setFailureMessage("Payment hash expected to be '"+paymentHash+"', but was: " + resp.payment_hash);
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Wait a sec" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1100</stringProp>
|
|
</ConstantTimer>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Check payment 1" 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">/tpos/api/v1/tposs/${tposId}/invoices/${paymentHash}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check paid is true" enabled="true">
|
|
<stringProp name="JSON_PATH">paid</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">true</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">false</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPoS Create and Pay invoice (tip)" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Amount" enabled="true">
|
|
<stringProp name="maximumValue">1000</stringProp>
|
|
<stringProp name="minimumValue">10</stringProp>
|
|
<stringProp name="outputFormat"></stringProp>
|
|
<boolProp name="perThread">true</boolProp>
|
|
<stringProp name="randomSeed"></stringProp>
|
|
<stringProp name="variableName">amount</stringProp>
|
|
</RandomVariableConfig>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Create payment with tip" 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">/tpos/api/v1/tposs/${tposId}/invoices?amount=${amount}&memo=${memo}&tipAmount=${__javaScript(parseInt(Math.ceil(0.05*${amount})).toFixed(0))}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check payment request" enabled="true">
|
|
<stringProp name="JSON_PATH">payment_request</stringProp>
|
|
<stringProp name="EXPECTED_VALUE"></stringProp>
|
|
<boolProp name="JSONVALIDATION">false</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check Payment hash" enabled="true">
|
|
<stringProp name="JSON_PATH">payment_hash</stringProp>
|
|
<stringProp name="EXPECTED_VALUE"></stringProp>
|
|
<boolProp name="JSONVALIDATION">false</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract payment hash" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">paymentHash</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">payment_hash</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-payment-hash</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract payment request" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">paymentRequest</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">payment_request</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-payment-request</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller (check payment)" enabled="true">
|
|
<boolProp name="LoopController.continue_forever">true</boolProp>
|
|
<stringProp name="LoopController.loops">1</stringProp>
|
|
</LoopController>
|
|
<hashTree>
|
|
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Wait a sec" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1100</stringProp>
|
|
</ConstantTimer>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Check 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">/tpos/api/v1/tposs/${tposId}/invoices/${paymentHash}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check paid is false" enabled="true">
|
|
<stringProp name="JSON_PATH">paid</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">false</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">false</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
</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,
|
|
"amount": ${amount},
|
|
"memo": "${memo}",
|
|
"unit": "sat",
|
|
"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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</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="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, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check payment hash" 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 paymentHash = vars.get("paymentHash")
|
|
|
|
if (!resp.payment_hash) {
|
|
AssertionResult.setFailureMessage("Payment failed");
|
|
AssertionResult.setFailure(true)
|
|
} else if (resp.payment_hash !== paymentHash) {
|
|
AssertionResult.setFailureMessage("Payment hash expected to be '"+paymentHash+"', but was: " + resp.payment_hash);
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Wait a sec" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1100</stringProp>
|
|
</ConstantTimer>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Check 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">/tpos/api/v1/tposs/${tposId}/invoices/${paymentHash}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check paid is true" enabled="true">
|
|
<stringProp name="JSON_PATH">paid</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">true</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">false</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPoS ATM Page" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos atm] Go to TPOS 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">/tpos/${ATMtposId}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</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, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.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>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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 page content" enabled="true">
|
|
<collectionProp name="Asserion.test_strings">
|
|
<stringProp name="11013">⬅</stringProp>
|
|
<stringProp name="2556">Ok</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="[tpos atm] Get exchange rates" 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">/tpos/api/v1/rate/EUR</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check rate" enabled="true">
|
|
<stringProp name="JSON_PATH">rate</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">null</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">true</boolProp>
|
|
<boolProp name="ISREGEX">false</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPoS Add wallet balance" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Create 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">/tpos/api/v1/tposs/${ATMtposId}/invoices?amount=11000&memo=${memo}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Content-Type" elementType="Header">
|
|
<stringProp name="Header.name">Content-Type</stringProp>
|
|
<stringProp name="Header.value">application/x-www-form-urlencoded</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check payment request" enabled="true">
|
|
<stringProp name="JSON_PATH">payment_request</stringProp>
|
|
<stringProp name="EXPECTED_VALUE"></stringProp>
|
|
<boolProp name="JSONVALIDATION">false</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check Payment hash" enabled="true">
|
|
<stringProp name="JSON_PATH">payment_hash</stringProp>
|
|
<stringProp name="EXPECTED_VALUE"></stringProp>
|
|
<boolProp name="JSONVALIDATION">false</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract payment request" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">paymentRequest</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">payment_request</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-payment-request</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract payment hash" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">paymentHash</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">payment_hash</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-payment-hash</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Wait a sec" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1100</stringProp>
|
|
</ConstantTimer>
|
|
<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,
|
|
"amount": 11000,
|
|
"memo": "${memo}",
|
|
"unit": "sat",
|
|
"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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</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="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, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check payment hash" 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 paymentHash = vars.get("paymentHash")
|
|
|
|
if (!resp.payment_hash) {
|
|
AssertionResult.setFailureMessage("Payment failed");
|
|
AssertionResult.setFailure(true)
|
|
} else if (resp.payment_hash !== paymentHash) {
|
|
AssertionResult.setFailureMessage("Payment hash expected to be '"+paymentHash+"', but was: " + resp.payment_hash);
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Wait a sec" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1100</stringProp>
|
|
</ConstantTimer>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos] Check 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">/tpos/api/v1/tposs/${ATMtposId}/invoices/${paymentHash}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/tpos/4qJSDrSf9peoV9iMqvmpBT</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check paid is true" enabled="true">
|
|
<stringProp name="JSON_PATH">paid</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">true</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">false</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Get admin 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?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">${adminWalletKey}</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/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract balance" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">adminBalance</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">balance</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-admin-balance</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Get tpos atm 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?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/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract balance" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">userBalance</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">balance</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-user-balance</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPoS ATM mode" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos atm] Enter pin" 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">/tpos/api/v1/atm/${ATMtposId}/${pin}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract token" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">token</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">id</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-token</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPoS ATM Withdraw" enabled="true">
|
|
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
|
<boolProp name="TransactionController.parent">true</boolProp>
|
|
</TransactionController>
|
|
<hashTree>
|
|
<RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Amount" enabled="true">
|
|
<stringProp name="maximumValue">10000</stringProp>
|
|
<stringProp name="minimumValue">3000</stringProp>
|
|
<stringProp name="outputFormat"></stringProp>
|
|
<boolProp name="perThread">true</boolProp>
|
|
<stringProp name="randomSeed"></stringProp>
|
|
<stringProp name="variableName">amount</stringProp>
|
|
</RandomVariableConfig>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos atm] Create withdraw" 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">/tpos/api/v1/atm/withdraw/${token}/${amount}</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.implementation">Java</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">https://violet-frogs-fail.loca.lt/tpos/4qJSDrSf9peoV9iMqvmpBT</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check claimed id false" enabled="true">
|
|
<stringProp name="JSON_PATH">claimed</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">false</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check amount" enabled="true">
|
|
<stringProp name="JSON_PATH">amount</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">${amount}</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract LNURL" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">lnurl</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">lnurl</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-lnurl</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
<KeystoreConfig guiclass="TestBeanGUI" testclass="KeystoreConfig" testname="Keystore Configuration" enabled="true">
|
|
<stringProp name="clientCertAliasVarName">certAlias</stringProp>
|
|
<stringProp name="endIndex">-1</stringProp>
|
|
<stringProp name="preload">True</stringProp>
|
|
<stringProp name="startIndex">0</stringProp>
|
|
</KeystoreConfig>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[tpos atm] Decode LNURLw" 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/lnurlscan/${lnurl}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Referer" elementType="Header">
|
|
<stringProp name="Header.name">Referer</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}/wallet</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</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="Accept-Encoding" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
|
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check lnurlw" enabled="true">
|
|
<stringProp name="JSON_PATH">domain</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">${host}:${port}</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check tag" enabled="true">
|
|
<stringProp name="JSON_PATH">tag</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">withdrawRequest</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check kind" enabled="true">
|
|
<stringProp name="JSON_PATH">kind</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">withdraw</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract callback" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">withdrawLinkCallback</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">callback</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-withdrawlink-callback</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[lnurlw] Withdraw LNURLw" 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":false,"amount":${amount},"memo":"TPoS withdraw","unit":"sat","lnurl_callback":"${withdrawLinkCallback}"}</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="Sec-Fetch-Mode" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Mode</stringProp>
|
|
<stringProp name="Header.value">cors</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Site" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Site</stringProp>
|
|
<stringProp name="Header.value">same-origin</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept-Language" elementType="Header">
|
|
<stringProp name="Header.name">Accept-Language</stringProp>
|
|
<stringProp name="Header.value">en-US,en;q=0.${lnurlpCount}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Origin" elementType="Header">
|
|
<stringProp name="Header.name">Origin</stringProp>
|
|
<stringProp name="Header.value">${scheme}://${host}:${port}</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Accept" elementType="Header">
|
|
<stringProp name="Header.name">Accept</stringProp>
|
|
<stringProp name="Header.value">application/json, text/plain, */*</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="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, br</stringProp>
|
|
</elementProp>
|
|
<elementProp name="User-Agent" elementType="Header">
|
|
<stringProp name="Header.name">User-Agent</stringProp>
|
|
<stringProp name="Header.value">Mozilla/${lnurlpCount}.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0</stringProp>
|
|
</elementProp>
|
|
<elementProp name="Sec-Fetch-Dest" elementType="Header">
|
|
<stringProp name="Header.name">Sec-Fetch-Dest</stringProp>
|
|
<stringProp name="Header.value">empty</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/>
|
|
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check lnurl response" enabled="true">
|
|
<stringProp name="JSON_PATH">lnurl_response</stringProp>
|
|
<stringProp name="EXPECTED_VALUE">true</stringProp>
|
|
<boolProp name="JSONVALIDATION">true</boolProp>
|
|
<boolProp name="EXPECT_NULL">false</boolProp>
|
|
<boolProp name="INVERT">false</boolProp>
|
|
<boolProp name="ISREGEX">true</boolProp>
|
|
</JSONPathAssertion>
|
|
<hashTree/>
|
|
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="Extract payment hash" enabled="true">
|
|
<stringProp name="JSONPostProcessor.referenceNames">paymenHash</stringProp>
|
|
<stringProp name="JSONPostProcessor.jsonPathExprs">payment_hash</stringProp>
|
|
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
|
<stringProp name="JSONPostProcessor.defaultValues">no-payment-hash</stringProp>
|
|
</JSONPostProcessor>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Wait a sec" enabled="true">
|
|
<stringProp name="ConstantTimer.delay">1100</stringProp>
|
|
</ConstantTimer>
|
|
<hashTree/>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Get 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">/api/v1/payments/${paymenHash}</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="X-Api-Key" elementType="Header">
|
|
<stringProp name="Header.name">X-Api-Key</stringProp>
|
|
<stringProp name="Header.value">${inkey}</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="[wallet] Check user 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?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 userBalance = +vars.get("userBalance")
|
|
var amount = +vars.get("amount")
|
|
userBalance -= amount * 1000
|
|
|
|
// millisats
|
|
if (resp.balance !== userBalance) {
|
|
AssertionResult.setFailureMessage("Expected balance to be "+userBalance+", but got: "+ resp.balance);
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
</JSR223Assertion>
|
|
<hashTree/>
|
|
</hashTree>
|
|
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[wallet] Check admin 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?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">${adminWalletKey}</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 adminBalance = +vars.get("adminBalance")
|
|
var amount = +vars.get("amount")
|
|
adminBalance += amount * 1000
|
|
|
|
// millisats
|
|
if (resp.balance !== adminBalance) {
|
|
AssertionResult.setFailureMessage("Expected balance to be "+adminBalance+", but got: "+ resp.balance);
|
|
AssertionResult.setFailure(true)
|
|
}</stringProp>
|
|
<stringProp name="scriptLanguage">javascript</stringProp>
|
|
</JSR223Assertion>
|
|
<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>
|
|
<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/>
|
|
<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/>
|
|
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group Recoreder" enabled="true">
|
|
<stringProp name="ThreadGroup.on_sample_error">continue</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>
|
|
<boolProp name="ThreadGroup.scheduler">false</boolProp>
|
|
<stringProp name="ThreadGroup.duration"></stringProp>
|
|
<stringProp name="ThreadGroup.delay"></stringProp>
|
|
<boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
|
|
</ThreadGroup>
|
|
<hashTree/>
|
|
</hashTree>
|
|
</hashTree>
|
|
</jmeterTestPlan>
|