btcpayserver/BTCPayServer.Tests
Andrew Camilleri e183714475
Add Tor Http Client Factory (#1445)
* WIP: Add Tor Http Client Factory

This PR adds a Tor Http Client Factory so that we can do HTTP requests over socks5( which we usually use tor's socks5).
Using it for payjoin when possible.

Currently have an issue where a 503 is always returned.  Must be something wrong with my tor config or the socks proxy lib Im using

* fix

* remove external dependency

* make payjoin client use tor client if available

* fix docker test

* use tor client only if available and necessary

* remove bip 79 mention
2020-04-08 22:40:41 +09:00
..
Lnd Remove Lightning Specific logic from BTCPay, and use BTCPayServer.Lightning packages instead 2018-08-30 12:24:00 +09:00
Logging xmr (#1044) 2019-09-30 17:32:43 +09:00
Mocks Refactor rate handling to prevent error of exchange name 2020-01-17 18:11:05 +09:00
Properties Adopt dotnet core editorconfig, big reformating 2017-10-27 17:53:04 +09:00
TestData Including walletunlock.json file in TestData for easier debugging 2019-11-10 06:19:59 -06:00
ApiKeysTests.cs GreenField: Switch to Blob for API Keys 2020-04-02 09:32:22 +02:00
BTCPayServer.Tests.csproj Remove dependency on NSwag 2020-03-18 20:08:09 +09:00
BTCPayServerTester.cs Add Tor Http Client Factory (#1445) 2020-04-08 22:40:41 +09:00
ChangellyTests.cs Improve tests to not create new HttpClient every times 2020-01-18 19:23:40 +09:00
ChargeTester.cs Remove Lightning Specific logic from BTCPay, and use BTCPayServer.Lightning packages instead 2018-08-30 12:24:00 +09:00
CheckoutUITests.cs fix e2e tests 2020-03-11 16:52:29 +01:00
CoinSwitchTests.cs Refactor authorizations 2019-10-14 00:24:41 +09:00
CrowdfundTests.cs Fixing broken CrowdfundTests.CanContributeOnlyWhenAllowed test 2019-11-14 20:56:28 -06:00
CustomerHttpServer.cs Additional fixes for 3.0 2019-10-18 21:46:34 +09:00
docker-bitcoin-cli.ps1 Fix all script because of docker-compose team screwing up (https://github.com/docker/compose/issues/6316) 2018-11-22 16:16:10 +09:00
docker-bitcoin-cli.sh Fix all script because of docker-compose team screwing up (https://github.com/docker/compose/issues/6316) 2018-11-22 16:16:10 +09:00
docker-bitcoin-generate.ps1 Add cmd tools to generate blocks 2019-05-08 12:19:16 +09:00
docker-bitcoin-generate.sh Add bitcoin generate shell script 2020-04-07 18:13:47 +02:00
docker-compose.monero.yml monero fixes 2020-04-06 16:12:48 +02:00
docker-compose.yml Add Tor Http Client Factory (#1445) 2020-04-08 22:40:41 +09:00
docker-customer-lightning-cli.ps1 Fix all script because of docker-compose team screwing up (https://github.com/docker/compose/issues/6316) 2018-11-22 16:16:10 +09:00
docker-customer-lightning-cli.sh Fix all script because of docker-compose team screwing up (https://github.com/docker/compose/issues/6316) 2018-11-22 16:16:10 +09:00
docker-entrypoint.sh Migrate dockerfile to .netcoreapp3.1 2020-01-11 13:12:40 +09:00
docker-litecoin-cli.ps1 Fix all script because of docker-compose team screwing up (https://github.com/docker/compose/issues/6316) 2018-11-22 16:16:10 +09:00
docker-litecoin-cli.sh Fix all script because of docker-compose team screwing up (https://github.com/docker/compose/issues/6316) 2018-11-22 16:16:10 +09:00
docker-merchant-lightning-cli.ps1 Fix all script because of docker-compose team screwing up (https://github.com/docker/compose/issues/6316) 2018-11-22 16:16:10 +09:00
docker-merchant-lightning-cli.sh Fix all script because of docker-compose team screwing up (https://github.com/docker/compose/issues/6316) 2018-11-22 16:16:10 +09:00
Dockerfile bump to sdk 3.1.101 and version 3.1.1 (security patch) 2020-01-18 16:59:25 +09:00
ElementsTests.cs add tests and fix 2020-03-20 09:31:22 +01:00
Extensions.cs fix e2e tests 2020-03-11 16:52:29 +01:00
GreenfieldAPITests.cs A api key can always revoke itself, add a route to delete any api key 2020-03-27 14:46:51 +09:00
LightningDTester.cs Remove Lightning Specific logic from BTCPay, and use BTCPayServer.Lightning packages instead 2018-08-30 12:24:00 +09:00
MockDelay.cs Increase reliability of test CanScheduleBackgroundTasks 2019-04-05 15:16:36 +09:00
PayJoinTests.cs adapt 2020-04-08 14:32:29 +02:00
PaymentHandlerTest.cs Refactor server-side 2020-04-05 12:02:36 +09:00
PaymentRequestTests.cs Asyncify tests 2019-10-07 16:04:25 +09:00
ProcessLauncher.cs Adopt dotnet core editorconfig, big reformating 2017-10-27 17:53:04 +09:00
PSBTTests.cs BPU Prep Work Part2 (#1340) 2020-02-19 17:35:23 +09:00
RateRulesTest.cs Add warning if fail to load rates from cache 2020-02-16 23:04:48 +09:00
README.md Add cmd tools to generate blocks 2019-05-08 12:19:16 +09:00
SeleniumTester.cs allow changing the payjoin key easily later 2020-04-08 14:32:29 +02:00
SeleniumTests.cs try fix test again 2020-03-25 14:11:38 +01:00
ServerTester.cs Add Tor Http Client Factory (#1445) 2020-04-08 22:40:41 +09:00
sshd.Dockerfile Add sshd service so we can test SSH stuff as well 2019-09-06 16:51:49 +09:00
StorageTests.cs Adding test timeout 2019-11-09 16:57:40 +09:00
TestAccount.cs fix 2020-04-08 14:32:29 +02:00
TestUtils.cs Make CanChangeNetworkFeeMode more resilient 2020-04-05 20:00:28 +09:00
U2FTests.cs fix tests 2020-01-15 00:00:36 +09:00
UnitTest1.cs Add Tor Http Client Factory (#1445) 2020-04-08 22:40:41 +09:00
UtilitiesTests.cs Fix build 2019-10-06 23:41:27 +09:00
Utils.cs Fix AddressInUseException in tests 2020-01-15 00:22:31 +09:00
xunit.runner.json Add xunit diagnostic message 2018-12-20 21:00:06 +09:00

How to be started for development

BTCPay Server tests depend on having a proper environment running with Postgres, Bitcoind, NBxplorer configured. You can however use the docker-compose.yml of this folder to get it running.

In addition, when you run a debug session of BTCPay (Hitting F5 on Visual Studio Code or Visual Studio 2017), it will run the launch profile called Docker-Regtest. This launch profile depends on this docker-compose running.

This is running a bitcoind instance on regtest, a private bitcoin blockchain for testing on which you can generate blocks yourself.

docker-compose up dev

You can run the tests while it is running through your favorite IDE, or with

dotnet test

Once you want to stop

docker-compose down

If you want to stop, and remove all existing data

docker-compose down --v

You can run tests on MySql database instead of Postgres by setting environnement variable TESTS_DB equals to MySql.

How to manually test payments

Using the test bitcoin-cli

You can call bitcoin-cli inside the container with docker exec, for example, if you want to send 0.23111090 to mohu16LH66ptoWGEL1GtP6KHTBJYXMWhEf:

./docker-bitcoin-cli.sh sendtoaddress "mohu16LH66ptoWGEL1GtP6KHTBJYXMWhEf" 0.23111090

If you are using Powershell:

.\docker-bitcoin-cli.ps1 sendtoaddress "mohu16LH66ptoWGEL1GtP6KHTBJYXMWhEf" 0.23111090

You can also generate blocks:

.\docker-bitcoin-generate.ps1 3

Using the test litecoin-cli

Same as bitcoin-cli, but with .\docker-litecoin-cli.ps1 and .\docker-litecoin-cli.sh instead.

Using the test lightning-cli

If you are using Linux:

./docker-customer-lightning-cli.sh pay lnbcrt100u1pd2e6uspp5ajnadvhazjrz55twd5k6yeg9u87wpw0q2fdr7g960yl5asv5fmnqdq9d3hkccqpxmedyrk0ehw5ueqx5e0r4qrrv74cewddfcvsxaawqz7634cmjj39sqwy5tvhz0hasktkk6t9pqfdh3edmf3z09zst5y7khv3rvxh8ctqqw6mwhh

If you are using Powershell:

.\docker-customer-lightning-cli.ps1 pay lnbcrt100u1pd2e6uspp5ajnadvhazjrz55twd5k6yeg9u87wpw0q2fdr7g960yl5asv5fmnqdq9d3hkccqpxmedyrk0ehw5ueqx5e0r4qrrv74cewddfcvsxaawqz7634cmjj39sqwy5tvhz0hasktkk6t9pqfdh3edmf3z09zst5y7khv3rvxh8ctqqw6mwhh

If you get this message:

{ "code" : 205, "message" : "Could not find a route", "data" : { "getroute_tries" : 1, "sendpay_tries" : 0 } }

Please, run the test CanSetLightningServer, this will establish a channel between the customer and the merchant, then, retry.

FAQ

docker-compose up dev failed or tests are not passing, what should I do?

  1. Run docker-compose down --v (this will reset your test environment)
  2. Run docker-compose pull (this will ensure you have the lastest images)
  3. Run again with docker-compose up dev

If you still have issues, try to restart docker.