Skip to content

refactor: verify invoice test #332

refactor: verify invoice test

refactor: verify invoice test #332

Workflow file for this run

name: Integration Tests
on:
push:
branches:
- dev
pull_request:
branches:
- dev
jobs:
test:
runs-on: ubuntu-latest
services:
docker:
<<<<<<< HEAD

Check failure on line 17 in .github/workflows/tests.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/tests.yml

Invalid workflow file

You have an error in your yaml syntax on line 17
image: docker:24.0.5
=======
image: docker:19.03.12
>>>>>>> 1386b8b (Release 0.1.0 (#79))
options: --privileged
ports:
- 5432:5432
- 18443:18443
- 50002:50002
- 50001:50001
- 8000:8000
- 18080:18080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Docker Compose
run: |
<<<<<<< HEAD
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
=======
>>>>>>> 1386b8b (Release 0.1.0 (#79))
docker-compose -f docker-compose-test.yml up --build -d
<<<<<<< HEAD
- name: Wait for services to be ready
run: |
sleep 80 # Adjust time as necessary for services to initialize
<<<<<<< HEAD
<<<<<<< HEAD
=======
=======
>>>>>>> 5259db8 (fix: order for running script for web client)
- name: Run start-test-components.sh for web client tests
run: |
cd clients/tests/web
chmod +x start-test-components.sh
./start-test-components.sh
<<<<<<< HEAD
>>>>>>> 10a2767 (fix: step for script execution for web client)
=======
- name: Wait for services to be ready
run: |
sleep 80 # Adjust time as necessary for services to initialize
>>>>>>> 5259db8 (fix: order for running script for web client)
- name: Verify Bitcoin daemon Service and create wallet
run: |
container_id=$(docker ps -qf "name=mercurylayer-bitcoind-1")
=======
- name: Verify Bitcoin daemon Service with Curl
run: |
container_id=$(docker ps -qf "name=mercurylayer_bitcoind_1")
>>>>>>> 1386b8b (Release 0.1.0 (#79))
echo "Container ID: $container_id"
docker logs $container_id
wallet_name="new_wallet"
docker exec $container_id bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass createwallet $wallet_name
address=$(docker exec $container_id bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass getnewaddress $wallet_name)
echo "New Wallet Address: $address"
docker exec $container_id bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass generatetoaddress 101 "$address"
docker exec $container_id bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass sendtoaddress bcrt1pcngfxjdkf4r2h26k52dh5nunxg8m68uf4lkfhmfjvjj6agfkm5jqmftw4e 0.0001
<<<<<<< HEAD
<<<<<<< HEAD
=======
- name: Create wallet for esplora
run: |
container_id=$(docker ps -qf "name=esplora-container")
echo "Container ID: $container_id"
docker logs $container_id
wallet_name="esplora_wallet"
docker exec $container_id cli createwallet $wallet_name
<<<<<<< HEAD
>>>>>>> 296e370 (feat: add wallet creation for esplora)
=======
address=$(docker exec $container_id cli getnewaddress $wallet_name)
echo "New Wallet Address: $address"
docker exec $container_id cli generatetoaddress 101 "$address"
docker exec $container_id cli sendtoaddress bcrt1pcngfxjdkf4r2h26k52dh5nunxg8m68uf4lkfhmfjvjj6agfkm5jqmftw4e 0.0001
>>>>>>> a40f257 (fix: add step to generate block on esplora)
- name: Wait for services to be ready
run: |
sleep 60 # Wait for lnd to sync with latest block
- name: Verify LND nodes and create a channel between them
run: |
container_id_alice=$(docker ps -qf "name=mercurylayer-alice-1")
echo "Container ID: $container_id_alice"
container_id_bob=$(docker ps -qf "name=mercurylayer-bob-1")
echo "Container ID: $container_id_bob"
docker logs $container_id_alice
docker logs $container_id_bob
identity_pubkey_bob=$(docker exec $container_id_bob lncli -n regtest getinfo | jq -r '.identity_pubkey')
echo "Pubkey: $identity_pubkey_bob"
docker exec $container_id_alice lncli -n regtest connect $identity_pubkey_bob@bob:9735
docker exec $container_id_alice lncli -n regtest listpeers
address=$(docker exec $container_id_bob lncli -n regtest newaddress p2wkh | jq -r '.address')
container_id_bitcoind=$(docker ps -qf "name=mercurylayer-bitcoind-1")
docker exec $container_id_bitcoind bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass sendtoaddress $address 0.5
docker exec $(docker ps -qf "name=mercurylayer-bitcoind-1") bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass -generate 6
identity_pubkey_alice=$(docker exec $container_id_alice lncli -n regtest getinfo | jq -r '.identity_pubkey')
docker exec $container_id_bob lncli -n regtest openchannel $identity_pubkey_alice 100000
docker exec $(docker ps -qf "name=mercurylayer-bitcoind-1") bitcoin-cli -regtest -rpcuser=user -rpcpassword=pass -generate 5
docker logs $container_id_alice
docker logs $container_id_bob
- name: Verify ElectrumX Service with Curl
run: |
container_id=$(docker ps -qf "name=mercurylayer-electrs-1")
=======
- name: Verify ElectrumX Service with Curl
run: |
container_id=$(docker ps -qf "name=mercurylayer_electrs_1")
>>>>>>> 1386b8b (Release 0.1.0 (#79))
echo "Container ID: $container_id"
docker logs $container_id
- name: Verify Enclave Service with Curl
run: |
<<<<<<< HEAD
container_id=$(docker ps -qf "name=mercurylayer-enclave-sgx-1")
=======
container_id=$(docker ps -qf "name=mercurylayer_enclave-sgx_1")
>>>>>>> 1386b8b (Release 0.1.0 (#79))
echo "Container ID: $container_id"
docker logs $container_id
- name: Verify Mercury Service with Curl
run: |
<<<<<<< HEAD
container_id=$(docker ps -qf "name=mercurylayer-mercury-1")
=======
container_id=$(docker ps -qf "name=mercurylayer_mercury_1")
>>>>>>> 1386b8b (Release 0.1.0 (#79))
echo "Container ID: $container_id"
docker logs $container_id
docker exec $container_id \
curl http://0.0.0.0:8000/info/config
- name: Get Public Key
run: |
docker exec $(docker ps -qf "name=enclave") \
curl -X POST http://0.0.0.0:18080/get_public_key \
-H "Content-Type: application/json" \
-d '{"statechain_id":"550e8400e29b41d4a716446655440000"}'
docker logs $(docker ps -qf "name=enclave")
- name: Verify Node Service with Curl
run: |
curl -X POST http://0.0.0.0:3000/deposit_amount \
-H 'Content-Type: application/json' \
-d '{"address":"bcrt1pkygl356c6fvk6ptx72c64hrjkhcxecj4hjzfzc430svzczuv6m0s42lvwx","amount":1000}'
- name: Verify Esplora Service with Curl
run: |
curl http://0.0.0.0:8094/regtest/api/blocks/tip/height
docker logs $(docker ps -qf "name=esplora-container")
- name: Check connectivity between containers
run: |
# Get container IDs
<<<<<<< HEAD
enclave_container=$(docker ps -qf "name=mercurylayer-enclave-sgx-1")
mercury_container=$(docker ps -qf "name=mercurylayer-mercury-1")
# Check if mercurylayer-mercury-1 can reach mercurylayer-enclave-sgx-1
docker exec $mercury_container curl -v http://mercurylayer-enclave-sgx-1:18080/get_public_key \
=======
enclave_container=$(docker ps -qf "name=mercurylayer_enclave-sgx_1")
mercury_container=$(docker ps -qf "name=mercurylayer_mercury_1")
# Check if mercurylayer_mercury_1 can reach mercurylayer_enclave-sgx_1
docker exec $mercury_container curl -v http://mercurylayer_enclave-sgx_1:18080/get_public_key \
>>>>>>> 1386b8b (Release 0.1.0 (#79))
-H "Content-Type: application/json" \
-d '{"statechain_id":"550e8400e29b41d4a716446655440000"}'
# Alternatively, using IP address if service name resolution fails
enclave_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $enclave_container)
docker exec $mercury_container curl -v http://$enclave_ip:18080/get_public_key \
-H "Content-Type: application/json" \
-d '{"statechain_id":"550e8400e29b41d4a716446655440000"}'
<<<<<<< HEAD
docker inspect mercurylayer-mercury-1
=======
docker inspect mercurylayer_mercury_1
>>>>>>> 1386b8b (Release 0.1.0 (#79))
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '20.12.2'
- name: Install Node.js dependencies for client
run: |
cd clients/apps/nodejs
npm install
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
npm install mocha -g
=======
>>>>>>> 1386b8b (Release 0.1.0 (#79))
=======
=======
npm install mocha -g
>>>>>>> 51a9a0e (feat: setup esplora for actions)
- name: Install Node.js dependencies for web client
run: |
cd clients/tests/web
npm install
npx playwright install
npx playwright install-deps
>>>>>>> 90efed7 (feat: setup web client tests on actions)
- name: Install Node.js dependencies for lib
run: |
cd clients/libs/nodejs
npm install
- name: Install Node.js dependencies for web
run: |
cd clients/libs/web
npm install
- name: Run web client Tests
run: |
cd clients/tests/web
sudo chmod -R 755 ./data_bitcoin_regtest
npx vitest --browser.name=chromium --browser.headless
- name: Run Client-Side Tests
run: |
cd clients/apps/nodejs
node test_basic_workflow2.js
node test_atomic_swap.js
<<<<<<< HEAD
<<<<<<< HEAD
mocha ./test/tb04-simple-lightning-latch.mjs --exit
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
=======
>>>>>>> 1386b8b (Release 0.1.0 (#79))
=======
=======
=======
>>>>>>> 272dda7 (fix: setup script for web client tests)
- name: Run start-test-components.sh for web client tests
run: |
cd clients/tests/web
chmod +x start-test-components.sh
./start-test-components.sh
<<<<<<< HEAD
>>>>>>> 51a9a0e (feat: setup esplora for actions)
=======
>>>>>>> 84930c6 (fix: esplora and node server for web client)
=======
>>>>>>> 272dda7 (fix: setup script for web client tests)
=======
>>>>>>> 10a2767 (fix: step for script execution for web client)
=======
>>>>>>> 8ccf218 (fix: payment hash in invoice generation)
- name: Run web client Tests
run: |
cd clients/tests/web
sudo chmod -R 755 ./data_bitcoin_regtest
<<<<<<< HEAD
npx vitest --browser.name=chromium --browser.headless
>>>>>>> 90efed7 (feat: setup web client tests on actions)
=======
>>>>>>> df3af2e (fix: web client tests order)
=======
npx vitest --browser.name=chromium --browser.headless
>>>>>>> 8ccf218 (fix: payment hash in invoice generation)
=======
mocha ./test/tb04-simple-lightning-latch.mjs --exit
>>>>>>> 2b82e6b (fix: web client tests running order)
- name: Tear Down
run: |
docker-compose -f docker-compose-test.yml down