merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit bee412d0d4fb788f79259836b525be2888cc321f
parent 76db1c16e5b06a3eb885880fe718b9b608fa2fac
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 16 Apr 2023 10:51:45 +0200

-more style fixes

Diffstat:
Msrc/testing/test_merchant_wirewatch.sh | 151+++++++++++++++++++++++++++++++++----------------------------------------------
1 file changed, 63 insertions(+), 88 deletions(-)

diff --git a/src/testing/test_merchant_wirewatch.sh b/src/testing/test_merchant_wirewatch.sh @@ -31,8 +31,6 @@ export LIBEUFIN_SANDBOX_DB_CONNECTION="jdbc:sqlite:${TALER_DB}" export LIBEUFIN_SANDBOX_ADMIN_PASSWORD="secret" export LIBEUFIN_SANDBOX_URL="http://localhost:1${NEXUS_PORT}/" -export GNUNET_PAYTO=$(get_payto_uri gnunet x) - export LIBEUFIN_SANDBOX_USERNAME="admin" export LIBEUFIN_SANDBOX_PASSWORD="secret" export EBICS_USER_ID="gnunet_ebics" @@ -60,7 +58,8 @@ echo -n "Create credit user (for gnunet-merchant) at Nexus ..." export LIBEUFIN_NEXUS_DB_CONNECTION="jdbc:sqlite:${TALER_DB}" libeufin-nexus \ superuser "$CREDIT_USERNAME" \ - --password="$CREDIT_PASSWORD" + --password="$CREDIT_PASSWORD" \ + &> nexus-credit-create.log echo " OK" export LIBEUFIN_NEXUS_USERNAME="$CREDIT_USERNAME" export LIBEUFIN_NEXUS_PASSWORD="$CREDIT_PASSWORD" @@ -72,7 +71,8 @@ libeufin-cli sandbox \ --host-id ${EBICS_HOST} \ --user-id ${NEXUS_ACCOUNT_NAME} \ --partner-id ${EBICS_PARTNER} \ - --bank-account ${SANDBOX_ACCOUNT_NAME} + --bank-account ${SANDBOX_ACCOUNT_NAME} \ + &> sandbox-subscriber-create.log libeufin-cli \ connections \ @@ -81,24 +81,28 @@ libeufin-cli \ --host-id=${EBICS_HOST} \ --partner-id=${EBICS_PARTNER} \ --ebics-user-id=${NEXUS_ACCOUNT_NAME} \ - ${BANK_CONNECTION_NAME} + ${BANK_CONNECTION_NAME} \ + &> nexus-connection-create.log -# FIXME-MS: This step fails with a 500 error (code 9000!) libeufin-cli \ connections \ connect \ - ${BANK_CONNECTION_NAME} + ${BANK_CONNECTION_NAME} \ + &> nexus-connection-connect.log libeufin-cli \ connections \ download-bank-accounts \ - ${BANK_CONNECTION_NAME} + ${BANK_CONNECTION_NAME} \ + &> nexus-account-download.log + libeufin-cli \ connections \ import-bank-account \ --offered-account-id=${SANDBOX_ACCOUNT_NAME} \ --nexus-bank-account-id=${NEXUS_ACCOUNT_NAME} \ - ${BANK_CONNECTION_NAME} + ${BANK_CONNECTION_NAME} \ + &> nexus-account-import.log libeufin-cli \ facades \ @@ -106,11 +110,12 @@ libeufin-cli \ --currency=TESTKUDOS \ --facade-name=${GNUNET_CREDIT_FACADE} \ ${BANK_CONNECTION_NAME} \ - ${NEXUS_ACCOUNT_NAME} + ${NEXUS_ACCOUNT_NAME} \ + &> nexus-new-facade.log FACADE_URL=$(libeufin-cli facades list | jq .facades[0].baseUrl | tr -d \") -echo -n "Setting FACADE URL ${FACADE_URL} in configuration..." +echo -n "Setting FACADE URL in configuration..." taler-config -c "$CONF" \ -s "taler-merchant-wirewatch" \ -o "WIRE_GATEWAY_URL" \ @@ -118,10 +123,10 @@ taler-config -c "$CONF" \ echo " OK" echo -n "First prepare wallet with coins..." -rm "${WALLET_DB}" +rm -f "${WALLET_DB}" taler-wallet-cli \ --no-throttle \ - --wallet-db=$WALLET_DB \ + --wallet-db="$WALLET_DB" \ api \ --expect-success 'withdrawTestBalance' \ "$(jq -n ' @@ -134,7 +139,7 @@ taler-wallet-cli \ --arg EXCHANGE_URL "$EXCHANGE_URL" )" 2>wallet-withdraw-1.err >wallet-withdraw-1.out taler-wallet-cli \ - --wallet-db=$WALLET_DB \ + --wallet-db="$WALLET_DB" \ run-until-done \ 2>wallet-withdraw-finish-1.err \ >wallet-withdraw-finish-1.out @@ -152,7 +157,7 @@ GNUNET_PAYTO=$(get_payto_uri gnunet x) STATUS=$(curl -H "Content-Type: application/json" -X POST \ -H 'Authorization: Bearer secret-token:super_secret' \ http://localhost:9966/management/instances \ - -d '{"auth":{"method":"external"},"payto_uris":["'$TOR_PAYTO'","'$GNUNET_PAYTO'"],"id":"default","name":"default","user_type":"business","address":{},"jurisdiction":{},"default_max_wire_fee":"TESTKUDOS:1", "default_max_deposit_fee":"TESTKUDOS:1","default_wire_fee_amortization":1,"default_wire_transfer_delay":{"d_us" : 50000000},"default_pay_delay":{"d_us": 60000000}}' \ + -d '{"auth":{"method":"external"},"payto_uris":["'"$TOR_PAYTO"'","'"$GNUNET_PAYTO"'"],"id":"default","name":"default","user_type":"business","address":{},"jurisdiction":{},"default_max_wire_fee":"TESTKUDOS:1", "default_max_deposit_fee":"TESTKUDOS:1","default_wire_fee_amortization":1,"default_wire_transfer_delay":{"d_us" : 50000000},"default_pay_delay":{"d_us": 60000000}}' \ -w "%{http_code}" -s -o /dev/null) if [ "$STATUS" != "204" ] @@ -162,88 +167,67 @@ fi echo "OK" - -echo -n "Configuring merchant test instance ..." -SURVEY_PAYTO=$(get_payto_uri survey x) -TUTORIAL_PAYTO=$(get_payto_uri tutorial x) -# create with 2 address - -STATUS=$(curl -H "Content-Type: application/json" -X POST \ - -H 'Authorization: Bearer secret-token:super_secret' \ - http://localhost:9966/management/instances \ - -d '{"auth":{"method":"external"},"payto_uris":["'$SURVEY_PAYTO'","'$TUTORIAL_PAYTO'"],"id":"test","name":"default","user_type":"business","address":{},"jurisdiction":{},"default_max_wire_fee":"TESTKUDOS:1", "default_max_deposit_fee":"TESTKUDOS:1","default_wire_fee_amortization":1,"default_wire_transfer_delay":{"d_us" : 50000000},"default_pay_delay":{"d_us": 60000000}}' \ - -w "%{http_code}" -s -o /dev/null) - -if [ "$STATUS" != "204" ] -then - exit_fail "Expected 204 no content. Got: $STATUS" -fi -echo "OK" - -RANDOM_IMG='data:image/png;base64,abcdefg' - # CREATE ORDER AND SELL IT echo -n "Creating order to be paid..." -STATUS=$(curl 'http://localhost:9966/instances/test/private/orders' \ +STATUS=$(curl 'http://localhost:9966/instances/default/private/orders' \ -d '{"order":{"amount":"TESTKUDOS:1","summary":"payme"}}' \ - -w "%{http_code}" -s -o $LAST_RESPONSE) + -w "%{http_code}" \ + -s \ + -o "$LAST_RESPONSE") if [ "$STATUS" != "200" ] then - exit_fail "Expected 200 OK. Got: $STATUS " $(cat "$LAST_RESPONSE") + exit_fail "Expected 200 OK. Got: $STATUS " "$(cat "$LAST_RESPONSE")" fi -ORDER_ID=$(jq -e -r .order_id < $LAST_RESPONSE) -TOKEN=$(jq -e -r .token < $LAST_RESPONSE) - -STATUS=$(curl "http://localhost:9966/instances/test/private/orders/${ORDER_ID}" \ - -w "%{http_code}" -s -o $LAST_RESPONSE) +ORDER_ID=$(jq -e -r .order_id < "$LAST_RESPONSE") +STATUS=$(curl "http://localhost:9966/instances/default/private/orders/${ORDER_ID}" \ + -w "%{http_code}" \ + -s \ + -o "$LAST_RESPONSE") if [ "$STATUS" != "200" ] then - exit_fail "Expected 200 ok. Got: $STATUS" $(cat $LAST_RESPONSE) + exit_fail "Expected 200 ok. Got: $STATUS" "$(cat "$LAST_RESPONSE")" fi -PAY_URL=$(jq -e -r .taler_pay_uri < $LAST_RESPONSE) +PAY_URL=$(jq -e -r .taler_pay_uri < "$LAST_RESPONSE") echo OK NOW=$(date +%s) echo -n "Pay first order ..." taler-wallet-cli \ --no-throttle \ - --wallet-db=$WALLET_DB \ + --wallet-db="$WALLET_DB" \ handle-uri "${PAY_URL}" \ -y 2> wallet-pay1.err > wallet-pay1.log NOW2=$(date +%s) -echo " OK (took $( echo -n $(($NOW2 - $NOW))) secs)" +echo "OK. Took $(( NOW2 - NOW))s." -STATUS=$(curl "http://localhost:9966/instances/test/private/orders/${ORDER_ID}" \ - -w "%{http_code}" -s -o $LAST_RESPONSE) +STATUS=$(curl "http://localhost:9966/instances/default/private/orders/${ORDER_ID}" \ + -w "%{http_code}" \ + -s \ + -o "$LAST_RESPONSE") if [ "$STATUS" != "200" ] then - exit_fail "Expected 200 Ok. Got: $STATUS" $(cat $LAST_RESPONSE) + exit_fail "Expected 200 Ok. Got: $STATUS" "$(cat "$LAST_RESPONSE")" fi -ORDER_STATUS=$(jq -r .order_status < $LAST_RESPONSE) - +ORDER_STATUS=$(jq -r .order_status < "$LAST_RESPONSE") if [ "$ORDER_STATUS" != "paid" ] then - exit_fail "Expected order status 'paid'. Got: $ORDER_STATUS" $(cat $LAST_RESPONSE) + exit_fail "Expected order status 'paid'. Got: $ORDER_STATUS" "$(cat "$LAST_RESPONSE")" fi # # WIRE TRANSFER TO MERCHANT AND NOTIFY BACKEND # -PAY_DEADLINE=$(jq -r .contract_terms.pay_deadline.t_s < $LAST_RESPONSE) -WIRE_DEADLINE=$(jq -r .contract_terms.wire_transfer_deadline.t_s < $LAST_RESPONSE) - +WIRE_DEADLINE=$(jq -r .contract_terms.wire_transfer_deadline.t_s < "$LAST_RESPONSE") NOW=$(date +%s) -TO_SLEEP=$(echo $(( $WIRE_DEADLINE - $NOW )) ) -echo "Waiting ${TO_SLEEP}s for wire transfer" - -echo -n "Perform wire transfers ..." +TO_SLEEP="$(( 1 + WIRE_DEADLINE - NOW ))" +echo -n "Perform wire transfers (with ${TO_SLEEP}s timeshift) ..." taler-exchange-aggregator \ -y \ -c "$CONF" \ @@ -258,6 +242,11 @@ echo " DONE" echo -n "Waiting for Nexus and Sandbox to settle the payment ..." sleep 3 +libeufin-cli \ + accounts \ + fetch-transactions \ + ${NEXUS_ACCOUNT_NAME} \ + &> libeufin-transfer-fetch.out echo " DONE" echo -n "Obtaining wire transfer details from bank..." @@ -269,50 +258,36 @@ echo " OK" echo -n "Fetching wire transfers of DEFAULT instance ..." STATUS=$(curl 'http://localhost:9966/instances/default/private/transfers' \ - -w "%{http_code}" -s -o $LAST_RESPONSE) + -w "%{http_code}" \ + -s \ + -o "$LAST_RESPONSE") if [ "$STATUS" != "200" ] then - jq . < $LAST_RESPONSE - exit_fail "Expected response 200 Ok. Got: $STATUS" + exit_fail "Expected response 200 Ok. Got: $STATUS" "$(jq . < "$LAST_RESPONSE")" fi -TRANSFERS_LIST_SIZE=$(jq -r '.transfers | length' < $LAST_RESPONSE) +TRANSFERS_LIST_SIZE=$(jq -r '.transfers | length' < "$LAST_RESPONSE") if [ "$TRANSFERS_LIST_SIZE" != "1" ] then - jq . < $LAST_RESPONSE - exit_fail "Expected one transfer. Got: $TRANSFERS_LIST_SIZE" -fi -echo " OK" - -echo -n "Fetching wire transfers of 'test' instance ..." -STATUS=$(curl 'http://localhost:9966/instances/test/private/transfers' \ - -w "%{http_code}" -s -o $LAST_RESPONSE) -if [ "$STATUS" != "200" ] -then - jq . < $LAST_RESPONSE - exit_fail "Expected response 200 Ok. Got: $STATUS" -fi -TRANSFERS_LIST_SIZE=$(jq -r '.transfers | length' < $LAST_RESPONSE) -if [ "$TRANSFERS_LIST_SIZE" != "0" ] -then - jq . < $LAST_RESPONSE - exit_fail "Expected response ok. got: $STATUS" + exit_fail "Expected one transfer. Got: $TRANSFERS_LIST_SIZE" "$(jq . < "$LAST_RESPONSE")" fi echo " OK" echo -n "Checking order status ..." -STATUS=$(curl "http://localhost:9966/instances/test/private/orders/${ORDER_ID}?transfer=YES" \ - -w "%{http_code}" -s -o $LAST_RESPONSE) +STATUS=$(curl "http://localhost:9966/instances/default/private/orders/${ORDER_ID}?transfer=YES" \ + -w "%{http_code}" \ + -s \ + -o "$LAST_RESPONSE") if [ "$STATUS" != "200" ] then - jq . < $LAST_RESPONSE - exit_fail "Expected 200 ok. got: $STATUS" $(cat $LAST_RESPONSE) + jq . < "$LAST_RESPONSE" + exit_fail "Expected 200 ok. got: $STATUS" "$(cat "$LAST_RESPONSE")" fi -WAS_WIRED=$(jq -r .wired < $LAST_RESPONSE) +WAS_WIRED=$(jq -r .wired < "$LAST_RESPONSE") if [ "$WAS_WIRED" != "true" ] then - jq . < $LAST_RESPONSE + jq . < "$LAST_RESPONSE" exit_fail "Got .wired 'false', expected 'true'" fi echo " OK"