From ba23a5ced35729b579e9c3453433dd1c26fa7898 Mon Sep 17 00:00:00 2001 From: MS Date: Tue, 12 Jul 2022 11:37:20 +0200 Subject: towards libeufin based tests --- src/testing/test_merchant_order_creation.sh | 57 +++++++++++++++++------------ 1 file changed, 33 insertions(+), 24 deletions(-) (limited to 'src/testing/test_merchant_order_creation.sh') diff --git a/src/testing/test_merchant_order_creation.sh b/src/testing/test_merchant_order_creation.sh index cf029714..dbe997cb 100755 --- a/src/testing/test_merchant_order_creation.sh +++ b/src/testing/test_merchant_order_creation.sh @@ -5,7 +5,15 @@ set -eu . initialize_taler_system.sh -echo -n "First prepare wallet with coins..." +# $1: sandbox username +# $2: sandbox password +# $3: payto with subject +# $4: amount +function wire_funds() { + libeufin-cli sandbox demobank new-transaction +} + +echo -n "First prepare wallet with coins ..." rm $WALLET_DB taler-wallet-cli --no-throttle --wallet-db=$WALLET_DB api 'withdrawTestBalance' \ "$(jq -n ' @@ -14,7 +22,7 @@ taler-wallet-cli --no-throttle --wallet-db=$WALLET_DB api 'withdrawTestBalance' bankBaseUrl: $BANK_URL, exchangeBaseUrl: $EXCHANGE_URL }' \ - --arg BANK_URL "$BANK_URL" \ + --arg BANK_URL "$BANK_URL/access-api/" \ --arg EXCHANGE_URL "$EXCHANGE_URL" )" 2>wallet-withdraw-1.err >wallet-withdraw-1.out taler-wallet-cli --wallet-db=$WALLET_DB run-until-done 2>wallet-withdraw-finish-1.err >wallet-withdraw-finish-1.out @@ -34,6 +42,7 @@ fi echo -n "Configuring merchant instance ..." # create with 2 address +FORTYTHREE=`get_payto_uri fortythree x` STATUS=$(curl -H "Content-Type: application/json" -X POST \ -H 'Authorization: Bearer secret-token:super_secret' \ http://localhost:9966/management/instances \ @@ -50,7 +59,11 @@ fi STATUS=$(curl -H "Content-Type: application/json" -X PATCH \ -H 'Authorization: Bearer secret-token:super_secret' \ http://localhost:9966/instances/default/private/ \ +<<<<<<< HEAD -d '{"auth":{"method":"external"},"payto_uris":["payto://x-taler-bank/localhost:8082/43"],"id":"default","name":"default","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\":[\"$FORTYTHREE\"],\"id\":\"default\",\"name\":\"default\",\"address\":{},\"jurisdiction\":{},\"default_max_wire_fee\":\"TESTKUDOS:1\", \"default_max_deposit_fee\":\"TESTKUDOS:1\",\"default_wire_fee_amortization\":1,\"default_wire_transfer_delay\":{\"d_ms\" : 50000},\"default_pay_delay\":{\"d_ms\": 60000}}" \ +>>>>>>> 0df2345 (towards libeufin based tests) -w "%{http_code}" -s -o /dev/null) if [ "$STATUS" != "204" ] @@ -59,8 +72,6 @@ then exit 1 fi - - echo OK RANDOM_IMG='data:image/png;base64,abcdefg' @@ -327,27 +338,27 @@ echo -n "Perform wire transfers ..." taler-exchange-aggregator -y -c $CONF -T ${TO_SLEEP}000000 -t -L INFO &> aggregator.log taler-exchange-transfer -c $CONF -t -L INFO &> transfer.log echo " DONE" +echo -n "Give time to Nexus to route the payment to Sandbox..." +sleep 3 +echo " DONE" echo -n "Obtaining wire transfer details from bank..." - -# First, extract the wire transfer data from the bank. -# As there is no "nice" API, we do this by dumping the -# bank database and grabbing the 'right' wire transfer, -# which is the one outgoing from the exchange (account 2). -BANKDATA=`taler-bank-manage -c $CONF django dumpdata 2>/dev/null | tail -n1 | jq '.[] | select(.model=="app.banktransaction")' | jq 'select(.fields.debit_account==2)'` -SUBJECT=`echo $BANKDATA | jq -r .fields.subject` +# Emulating the previous pybank-based logic of getting +# the wire transfer information _via the exchange_ bank +# account. NOTE: grabbing tx == 0, since the latest +# transaction appear first in the bank's history. +BANKDATA=`get_bankaccount_transactions exchange x | jq '.transactions[0]'` +SUBJECT=`echo $BANKDATA | jq -r .subject` WTID=`echo $SUBJECT | awk '{print $1}'` WURL=`echo $SUBJECT | awk '{print $2}'` -CREDIT_AMOUNT=`echo $BANKDATA | jq -r .fields.amount` -TARGET=`echo $BANKDATA | jq -r .fields.credit_account` -# 'TARGET' is now the numeric value of the account, we need to get the actual account *name*: -BANKADATA=`taler-bank-manage -c $CONF django dumpdata 2>/dev/null | tail -n1 | jq '.[] | select(.model=="auth.user")' | jq 'select(.pk=='$TARGET')'` -ACCOUNT_NAME=`echo $BANKADATA | jq -r .fields.username` -TARGET_PAYTO="payto://x-taler-bank/localhost:8082/$ACCOUNT_NAME" +CREDIT_AMOUNT="`echo $BANKDATA | jq -r .currency`:`echo $BANKDATA | jq -r .amount`" +TARGET=`echo $BANKDATA | jq -r .creditorIban` +# 'TARGET' is now the IBAN. +TARGET_PAYTO="payto://iban/SANDBOXX/$TARGET?receiver-name=Forty+Three" if [ "$EXCHANGE_URL" != "$WURL" ] then - exit_fail "Wrong exchange URL in subject '$SUBJECT', expected $EXCHANGE_URL" + exit_fail "Wrong exchange URL in subject '$SUBJECT', expected '$EXCHANGE_URL'" fi echo " OK" @@ -533,13 +544,11 @@ fi echo " OK" -echo -n "Removing password from account 43 ..." -taler-bank-manage -c $CONF --with-db postgres:///$TALER_DB django changepassword_unsafe 43 x >/dev/null 2>/dev/null - -ACCOUNT_PASSWORD="43:x" -BANK_HOST="localhost:8082" +ACCOUNT_PASSWORD="fortythree:x" +BANK_HOST="localhost:18082" -STATUS=$(curl "http://$ACCOUNT_PASSWORD@$BANK_HOST/accounts/43" \ +# Can be replaced by the libeufin-cli way. +STATUS=$(curl "http://$ACCOUNT_PASSWORD@$BANK_HOST/demobanks/default/access-api/accounts/fortythree" \ -w "%{http_code}" -s -o $LAST_RESPONSE) if [ "$STATUS" != "200" ] -- cgit v1.2.3