btcpayserver: add tests

This commit is contained in:
nixbitcoin 2020-08-12 14:16:22 +00:00
parent f93c3c8405
commit c9c844de80
No known key found for this signature in database
GPG Key ID: DD11F9AD5308B3BA
5 changed files with 54 additions and 1 deletions

View File

@ -27,6 +27,10 @@ env:
- PKG=elementsd STABLE=0 - PKG=elementsd STABLE=0
- PKG=electrs STABLE=1 - PKG=electrs STABLE=1
- PKG=electrs STABLE=0 - PKG=electrs STABLE=0
- PKG=nbxplorer STABLE=1
- PKG=nbxplorer STABLE=0
- PKG=btcpayserver STABLE=1
- PKG=btcpayserver STABLE=0
- PKG=liquid-swap STABLE=1 - PKG=liquid-swap STABLE=1
- PKG=lightning-loop STABLE=0 - PKG=lightning-loop STABLE=0
- PKG=nixops19_09 STABLE=1 - PKG=nixops19_09 STABLE=1

View File

@ -84,6 +84,13 @@ def run_tests(extra_tests):
) )
) )
assert_running("nbxplorer")
machine.wait_until_succeeds(log_has_string("nbxplorer", "BTC: RPC connection successful"))
extra_tests.pop("nbxplorer")()
assert_running("btcpayserver")
machine.wait_until_succeeds(log_has_string("btcpayserver", "Listening on"))
extra_tests.pop("btcpayserver")()
assert_running("spark-wallet") assert_running("spark-wallet")
extra_tests.pop("spark-wallet")() extra_tests.pop("spark-wallet")()

View File

@ -2,6 +2,19 @@ def electrs():
machine.wait_for_open_port(4224) # prometeus metrics provider machine.wait_for_open_port(4224) # prometeus metrics provider
def nbxplorer():
machine.wait_for_open_port(24444)
def btcpayserver():
machine.wait_for_open_port(23000)
# test lnd custom macaroon
assert_matches(
'sudo -u btcpayserver curl -s --cacert /secrets/lnd-cert --header "Grpc-Metadata-macaroon: $(xxd -ps -u -c 1000 /run/lnd/btcpayserver.macaroon)" -X GET https://127.0.0.1:8080/v1/getinfo | jq',
'"version"',
)
def spark_wallet(): def spark_wallet():
machine.wait_for_open_port(9737) machine.wait_for_open_port(9737)
spark_auth = re.search("login=(.*)", succeed("cat /secrets/spark-wallet-login"))[1] spark_auth = re.search("login=(.*)", succeed("cat /secrets/spark-wallet-login"))[1]
@ -31,6 +44,8 @@ def prestop():
extra_tests = { extra_tests = {
"electrs": electrs, "electrs": electrs,
"nbxplorer": nbxplorer,
"btcpayserver": btcpayserver,
"spark-wallet": spark_wallet, "spark-wallet": spark_wallet,
"lightning-charge": lightning_charge, "lightning-charge": lightning_charge,
"nanopos": nanopos, "nanopos": nanopos,

View File

@ -10,6 +10,8 @@ nanopos_ip = "169.254.1.19"
recurringdonations_ip = "169.254.1.20" recurringdonations_ip = "169.254.1.20"
nginx_ip = "169.254.1.21" nginx_ip = "169.254.1.21"
lightningloop_ip = "169.254.1.22" lightningloop_ip = "169.254.1.22"
nbxplorer_ip = "169.254.1.23"
btcpayserver_ip = "169.254.1.24"
def electrs(): def electrs():
@ -18,6 +20,20 @@ def electrs():
) # prometeus metrics provider ) # prometeus metrics provider
def nbxplorer():
machine.wait_until_succeeds("ip netns exec nb-nbxplorer nc -z %s 24444" % nbxplorer_ip)
def btcpayserver():
machine.wait_until_succeeds("ip netns exec nb-btcpayserver nc -z %s 23000" % btcpayserver_ip)
# test lnd custom macaroon
assert_matches(
'ip netns exec nb-btcpayserver sudo -u btcpayserver curl -s --cacert /secrets/lnd-cert --header "Grpc-Metadata-macaroon: $(xxd -ps -u -c 1000 /run/lnd/btcpayserver.macaroon)" -X GET https://%s:8080/v1/getinfo | jq'
% lnd_ip,
'"version"',
)
def spark_wallet(): def spark_wallet():
machine.wait_until_succeeds("ip netns exec nb-spark-wallet nc -z %s 9737" % sparkwallet_ip) machine.wait_until_succeeds("ip netns exec nb-spark-wallet nc -z %s 9737" % sparkwallet_ip)
spark_auth = re.search("login=(.*)", succeed("cat /secrets/spark-wallet-login"))[1] spark_auth = re.search("login=(.*)", succeed("cat /secrets/spark-wallet-login"))[1]
@ -50,6 +66,7 @@ def web_index():
def prestop(): def prestop():
ping_bitcoind = "ip netns exec nb-bitcoind ping -c 1 -w 1" ping_bitcoind = "ip netns exec nb-bitcoind ping -c 1 -w 1"
ping_nanopos = "ip netns exec nb-nanopos ping -c 1 -w 1" ping_nanopos = "ip netns exec nb-nanopos ping -c 1 -w 1"
ping_nbxplorer = "ip netns exec nb-nbxplorer ping -c 1 -w 1"
# Positive ping tests (non-exhaustive) # Positive ping tests (non-exhaustive)
machine.succeed( machine.succeed(
@ -57,6 +74,8 @@ def prestop():
+ "%s %s &&" % (ping_bitcoind, clightning_ip) + "%s %s &&" % (ping_bitcoind, clightning_ip)
+ "%s %s &&" % (ping_bitcoind, lnd_ip) + "%s %s &&" % (ping_bitcoind, lnd_ip)
+ "%s %s &&" % (ping_bitcoind, liquidd_ip) + "%s %s &&" % (ping_bitcoind, liquidd_ip)
+ "%s %s &&" % (ping_bitcoind, nbxplorer_ip)
+ "%s %s &&" % (ping_nbxplorer, btcpayserver_ip)
+ "%s %s &&" % (ping_nanopos, lightningcharge_ip) + "%s %s &&" % (ping_nanopos, lightningcharge_ip)
+ "%s %s &&" % (ping_nanopos, nanopos_ip) + "%s %s &&" % (ping_nanopos, nanopos_ip)
+ "%s %s" % (ping_nanopos, nginx_ip) + "%s %s" % (ping_nanopos, nginx_ip)
@ -77,7 +96,8 @@ def prestop():
+ "%s %s ||" % (ping_nanopos, liquidd_ip) + "%s %s ||" % (ping_nanopos, liquidd_ip)
+ "%s %s ||" % (ping_nanopos, electrs_ip) + "%s %s ||" % (ping_nanopos, electrs_ip)
+ "%s %s ||" % (ping_nanopos, sparkwallet_ip) + "%s %s ||" % (ping_nanopos, sparkwallet_ip)
+ "%s %s" % (ping_nanopos, recurringdonations_ip) + "%s %s ||" % (ping_nanopos, recurringdonations_ip)
+ "%s %s" % (ping_nanopos, btcpayserver_ip)
) )
# test that netns-exec can't be run for unauthorized namespace # test that netns-exec can't be run for unauthorized namespace
@ -94,6 +114,8 @@ def prestop():
extra_tests = { extra_tests = {
"electrs": electrs, "electrs": electrs,
"nbxplorer": nbxplorer,
"btcpayserver": btcpayserver,
"spark-wallet": spark_wallet, "spark-wallet": spark_wallet,
"lightning-charge": lightning_charge, "lightning-charge": lightning_charge,
"nanopos": nanopos, "nanopos": nanopos,

View File

@ -52,6 +52,11 @@ import ./make-test.nix rec {
services.backups.enable = true; services.backups.enable = true;
services.btcpayserver.enable = true;
services.btcpayserver.lightningBackend = "lnd";
# needed to test macaroon creation
environment.systemPackages = with pkgs; [ openssl xxd ];
# to test that unused secrets are made inaccessible by 'setup-secrets' # to test that unused secrets are made inaccessible by 'setup-secrets'
systemd.services.generate-secrets.postStart = '' systemd.services.generate-secrets.postStart = ''
install -o nobody -g nogroup -m777 <(:) /secrets/dummy install -o nobody -g nogroup -m777 <(:) /secrets/dummy