Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
5e76c84
[UPDATE] auction_house to v1.1.0
alanbits Oct 30, 2026
83f0e8a
[UPDATE] bitcoinswitch_extension to v1.3.0
alanbits Oct 30, 2026
9e929b3
[UPDATE] blackjack to v0.2.0
alanbits Oct 30, 2026
46ad38b
[UPDATE] bleskomat to v1.1.0
alanbits Oct 30, 2026
b53244d
[UPDATE] boltcards to v1.2.0
alanbits Oct 30, 2026
cc9ec46
[UPDATE] boltz to v1.2.0
alanbits Oct 30, 2026
c81de64
[UPDATE] example to v1.1.0
alanbits Oct 30, 2026
d584849
[UPDATE] chaospad to v0.2.0
alanbits Oct 30, 2026
ca15c04
[UPDATE] chat to v0.2.0
alanbits Oct 30, 2026
f49d3da
[UPDATE] coinflip to v1.2.0
alanbits Oct 30, 2026
93d7f20
[UPDATE] dashboard to v0.1.0
alanbits Oct 30, 2026
982fd87
[UPDATE] livestream to v1.2.0
alanbits Oct 30, 2026
672e7a8
[UPDATE] events to v1.7.0
alanbits Oct 30, 2026
ede7c28
[UPDATE] inventory to v0.4.0
alanbits Oct 30, 2026
67bbf4f
[UPDATE] invoices to v1.2.0
alanbits Oct 30, 2026
6da142c
[UPDATE] jukebox to v1.1.0
alanbits Oct 30, 2026
da84f9a
[UPDATE] lncalendar to v1.1.0
alanbits Oct 30, 2026
d99d5fa
[UPDATE] lndhub to v1.1.0
alanbits Oct 30, 2026
b32749c
[UPDATE] eightball to v1.2.0
alanbits Oct 30, 2026
7055a8a
[UPDATE] lnpos_extension to v1.2.0
alanbits Oct 30, 2026
242fa83
[UPDATE] myextension to v0.1.0
alanbits Oct 30, 2026
881be73
[UPDATE] nostrmarket to v1.2.0
alanbits Oct 30, 2026
62bdcfc
[UPDATE] satspot to v1.3.0
alanbits Oct 30, 2026
f3134bd
[UPDATE] nostrrelay to v1.2.0
alanbits Oct 30, 2026
958bf01
[UPDATE] nwcprovider to v1.2.0
alanbits Oct 30, 2026
8acf829
[UPDATE] numberlottery to v1.1.0
alanbits Oct 30, 2026
49d054c
[UPDATE] offlineshop to v1.2.0
alanbits Oct 30, 2026
8078773
[UPDATE] streamalerts to v1.1.0
alanbits Oct 30, 2026
6d48224
[UPDATE] orders to v0.2.0
alanbits Oct 30, 2026
101f613
[UPDATE] satsdice to v1.2.0
alanbits Oct 30, 2026
d2b9c8e
[UPDATE] sellcoins to v0.1.0
alanbits Oct 30, 2026
245f4dd
[UPDATE] paywall to v1.3.0
alanbits Oct 30, 2026
b055e3c
[UPDATE] lnurlp to v1.5.0
alanbits Oct 30, 2026
b27b0df
[UPDATE] shipping to v0.2.0
alanbits Oct 30, 2026
1974833
[UPDATE] smtp to v1.1.0
alanbits Oct 30, 2026
e047ce7
[UPDATE] copilot to v1.1.0
alanbits Oct 30, 2026
a4f4e3f
[UPDATE] paidreviews to v0.3.0
alanbits Oct 30, 2026
0d297c5
[UPDATE] withdraw to v1.4.0
alanbits Oct 30, 2026
09ca180
[UPDATE] watchonly to v1.2.0
alanbits Oct 30, 2026
aff3c72
[UPDATE] gerty to v1.2.0
alanbits Oct 30, 2026
7563045
[UPDATE] scrub to v1.2.0
alanbits Oct 30, 2026
925f262
[UPDATE] lnticket to v1.1.0
alanbits Oct 30, 2026
f32323e
[UPDATE] subdomains to v1.1.0
alanbits Oct 30, 2026
1306eec
[UPDATE] tabs to v0.2.0
alanbits Oct 30, 2026
ace70b3
[UPDATE] satspay to v1.1.0
alanbits Oct 30, 2026
b1bcb46
[UPDATE] tipjar to v1.1.0
alanbits Oct 30, 2026
4eb544c
[UPDATE] splitpayments to v1.2.0
alanbits Oct 30, 2026
ca3ecd6
[UPDATE] custom_public_page to v0.2.0
alanbits Oct 30, 2026
c6f73b4
[UPDATE] fossa_extension to v1.4.0
alanbits Oct 30, 2026
ebce206
[UPDATE] nostrclient to v1.3.0
alanbits Oct 30, 2026
8bcb889
[UPDATE] nostrnip5 to v1.2.0
alanbits Oct 30, 2026
fd0546d
[UPDATE] scrum to v0.3.0
alanbits Oct 30, 2026
7455684
[UPDATE] xerosync to v0.2.0
alanbits Oct 30, 2026
10a960e
fix: satisfy Orders description validation
motorina0 Oct 30, 2026
91db585
[UPDATE] tpos to v1.7.0
alanbits Oct 30, 2026
84a1c6e
fix: align LNURLp webhook integration assertions
motorina0 Oct 30, 2026
266c420
fix: repair JMeter withdraw race setup and payment pagination
motorina0 Oct 30, 2026
57a8968
fix: update Watchonly and SatsPay JMeter checks for Vue templates
motorina0 Oct 30, 2026
5a6a8cd
fix: example extension
motorina0 Oct 30, 2026
16ea006
fix: tipjar
motorina0 Oct 30, 2026
73a8f1d
fix: example extension test
motorina0 Oct 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
758 changes: 734 additions & 24 deletions extensions.json

Large diffs are not rendered by default.

19 changes: 10 additions & 9 deletions integration/002_lnurl.jmx
Original file line number Diff line number Diff line change
Expand Up @@ -973,7 +973,7 @@
<hashTree/>
</hashTree>
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Wait a bit" enabled="true">
<stringProp name="ConstantTimer.delay">100</stringProp>
<stringProp name="ConstantTimer.delay">500</stringProp>
<stringProp name="TestPlan.comments">for the webhook to be called</stringProp>
</ConstantTimer>
<hashTree/>
Expand Down Expand Up @@ -1030,20 +1030,21 @@
<hashTree/>
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check webhook message" enabled="true">
<stringProp name="JSON_PATH">$.details.extra.wh_message</stringProp>
<stringProp name="EXPECTED_VALUE">OK</stringProp>
<stringProp name="EXPECTED_VALUE">Webhook delivered.</stringProp>
<boolProp name="JSONVALIDATION">true</boolProp>
<boolProp name="EXPECT_NULL">false</boolProp>
<boolProp name="INVERT">false</boolProp>
<boolProp name="ISREGEX">false</boolProp>
</JSONPathAssertion>
<hashTree/>
<JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Check webhook response" enabled="true">
<stringProp name="scriptLanguage">javascript</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename">${configPath}/scripts/lnurl_check_webhook_response.js</stringProp>
<stringProp name="cacheKey">true</stringProp>
<stringProp name="script"></stringProp>
</JSR223Assertion>
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="Check webhook response is empty" enabled="true">
<stringProp name="JSON_PATH">$.details.extra.wh_response</stringProp>
<stringProp name="EXPECTED_VALUE"></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>
Expand Down
13 changes: 9 additions & 4 deletions integration/005_lnurlw-race.jmx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@
<stringProp name="Argument.value">${__property(port,,5000)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="mirrorPort" elementType="Argument">
<stringProp name="Argument.name">mirrorPort</stringProp>
<stringProp name="Argument.value">${__property(mirrorPort,,8500)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="paidChargeCountXXX" elementType="Argument">
<stringProp name="Argument.name">paidChargeCountXXX</stringProp>
<stringProp name="Argument.value">5</stringProp>
Expand Down Expand Up @@ -1028,7 +1033,7 @@
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check page conent" enabled="true">
<collectionProp name="Asserion.test_strings">
<stringProp name="851725123">Withdraw links</stringProp>
<stringProp name="1102950636">curl -X GET http://127.0.0.1:5000/withdraw/api/v1/links -H</stringProp>
<stringProp name="1102950636">curl -X GET ${scheme}://${host}:${port}/withdraw/api/v1/links -H</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
Expand Down Expand Up @@ -2006,10 +2011,10 @@ props.put(&quot;withdrawLinkRes&quot;, withdrawLinkRes)</stringProp>
<stringProp name="parameters"></stringProp>
<stringProp name="filename"></stringProp>
<stringProp name="cacheKey">true</stringProp>
<stringProp name="script">var withdrawLinkCallback = props.get(&quot;withdrawLinkCallback&quot;)
<stringProp name="script">var withdrawLinkRes = props.get(&quot;withdrawLinkRes&quot;)
var receiveInkey = props.get(&quot;receiveInkey&quot;)

vars.put(&quot;withdrawLinkCallback&quot;, withdrawLinkCallback)
vars.put(&quot;withdrawLinkRes&quot;, withdrawLinkRes)
vars.put(&quot;receiveInkey&quot;, receiveInkey)

</stringProp>
Expand Down Expand Up @@ -2079,7 +2084,7 @@ vars.put(&quot;receiveInkey&quot;, receiveInkey)
<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.path">/api/v1/payments?limit=${parallelWithdrawUsers}</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
Expand Down
14 changes: 7 additions & 7 deletions integration/006_watchonly-satspay-tipjar.jmx
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@
</JSONPathAssertion>
<hashTree/>
</hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Go to &quot;watchonly&quot; page" enabled="true">
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[watchonly] Load page template" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
<collectionProp name="Arguments.arguments">
<elementProp name="usr" elementType="HTTPArgument">
Expand All @@ -211,7 +211,7 @@
<stringProp name="HTTPSampler.port">${port}</stringProp>
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
<stringProp name="HTTPSampler.path">/watchonly/</stringProp>
<stringProp name="HTTPSampler.path">/watchonly/static/index.vue</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
Expand Down Expand Up @@ -257,9 +257,9 @@
<intProp name="Assertion.test_type">8</intProp>
</ResponseAssertion>
<hashTree/>
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check has `Scan Blockchain` text" enabled="true">
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check scan blockchain control" enabled="true">
<collectionProp name="Asserion.test_strings">
<stringProp name="-1993537577">Scan Blockchain</stringProp>
<stringProp name="-1993537577">watchonly.scan_blockchain</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
Expand Down Expand Up @@ -902,15 +902,15 @@ if (addresses.length !== 25) {
</JSONPathAssertion>
<hashTree/>
</hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Go to &quot;satspay&quot; page" enabled="true">
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[satspay] Load page template" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="HTTPSampler.domain">${host}</stringProp>
<stringProp name="HTTPSampler.port">${port}</stringProp>
<stringProp name="HTTPSampler.protocol">${scheme}</stringProp>
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
<stringProp name="HTTPSampler.path">/satspay/</stringProp>
<stringProp name="HTTPSampler.path">/satspay/static/index.vue</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
Expand Down Expand Up @@ -962,7 +962,7 @@ if (addresses.length !== 25) {
<hashTree/>
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Check `Charges` header" enabled="true">
<collectionProp name="Asserion.test_strings">
<stringProp name="-957205577">&lt;h5 class=&quot;text-subtitle1 q-my-none&quot;&gt;Charges&lt;/h5&gt;</stringProp>
<stringProp name="-957205577">satspay.charges</stringProp>
</collectionProp>
<stringProp name="Assertion.custom_message"></stringProp>
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
Expand Down
42 changes: 41 additions & 1 deletion integration/009_example_upgrade.jmx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@
<stringProp name="Argument.value">${__property(port,,5000)}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="extensionsManifestPath" elementType="Argument">
<stringProp name="Argument.name">extensionsManifestPath</stringProp>
<stringProp name="Argument.value">${__BeanShell(System.getProperty("extensionsManifestPath"\, "/lnbits/lnbits-extensions/refs/heads/main/extensions.json"))}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="thinkTime" elementType="Argument">
<stringProp name="Argument.name">thinkTime</stringProp>
<stringProp name="Argument.value">3000</stringProp>
Expand All @@ -50,7 +55,7 @@
</elementProp>
<elementProp name="ext_version_2" elementType="Argument">
<stringProp name="Argument.name">ext_version_2</stringProp>
<stringProp name="Argument.value">1.0.6</stringProp>
<stringProp name="Argument.value">1.1.0</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="test_version" elementType="Argument">
Expand Down Expand Up @@ -192,6 +197,41 @@
</ResponseAssertion>
<hashTree/>
</hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[server] Restore extension manifest" 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">{&quot;lnbits_extensions_manifests&quot;:[&quot;https://raw.githubusercontent.com${extensionsManifestPath}&quot;]}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
</collectionProp>
</elementProp>
<stringProp name="HTTPSampler.path">/admin/api/v1/settings</stringProp>
<stringProp name="HTTPSampler.method">PATCH</stringProp>
<stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
</HTTPSamplerProxy>
<hashTree>
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
<collectionProp name="HeaderManager.headers">
<elementProp name="Content-Type" elementType="Header">
<stringProp name="Header.name">Content-Type</stringProp>
<stringProp name="Header.value">application/json</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.test_field">Assertion.response_code</stringProp>
<boolProp name="Assertion.assume_success">false</boolProp>
<intProp name="Assertion.test_type">8</intProp>
</ResponseAssertion>
<hashTree/>
</hashTree>
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Test version 1" enabled="true">
<boolProp name="TransactionController.includeTimers">false</boolProp>
<boolProp name="TransactionController.parent">true</boolProp>
Expand Down
3 changes: 2 additions & 1 deletion integration/fragments/init-server.jmx
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,8 @@
<boolProp name="HTTPArgument.always_encode">false</boolProp>
<stringProp name="Argument.value">{&#xd;
&quot;lnbits_callback_url_rules&quot;: [],&#xd;
&quot;lnbits_lnurl_allow_private_ips&quot;: true&#xd;
&quot;lnbits_lnurl_allow_private_ips&quot;: true,&#xd;
&quot;lnbits_callback_allow_private_ips&quot;: true&#xd;
}</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
Expand Down
9 changes: 9 additions & 0 deletions integration/scripts/extract_extension_release_by_version.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ var ext_id = vars.get("extension");
var ext_version = vars.get("ext_version");

vars.put("ext_id", ext_id);
vars.remove("archive");
vars.remove("source_repo");
vars.remove("version");

for (var i = 0; i < releases.length; i++) {
var release = releases[i];
Expand All @@ -13,3 +16,9 @@ for (var i = 0; i < releases.length; i++) {
vars.put("version", release.version);
}
}

if (!vars.get("version")) {
prev.setSuccessful(false);
prev.setResponseMessage("Release " + ext_id + " " + ext_version + " was not found in the configured manifests.");
prev.setStopTest(true);
}
Loading