From c015c0ed43a4b928997e6872587a182d49c62113 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 13 Apr 2021 19:02:21 -0300 Subject: test order creation --- src/testing/initialize_taler_system.sh | 3 +- src/testing/test_merchant_order_creation.sh | 114 ++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100755 src/testing/test_merchant_order_creation.sh diff --git a/src/testing/initialize_taler_system.sh b/src/testing/initialize_taler_system.sh index 73b4b918..21f1e208 100755 --- a/src/testing/initialize_taler_system.sh +++ b/src/testing/initialize_taler_system.sh @@ -26,7 +26,7 @@ function cleanup() do kill $n 2> /dev/null || true done - rm -rf $CONF $WALLET_DB $TMP_DIR + rm -rf $CONF $WALLET_DB $TMP_DIR $LAST_RESPONSE wait } @@ -37,6 +37,7 @@ cp test_template.conf $CONF TMP_DIR=`mktemp -d keys-tmp-XXXXXX` WALLET_DB=`mktemp test_walletXXXXXX.json` +LAST_RESPONSE=`mktemp test_responseXXXXXX.conf` # Install cleanup handler (except for kill -9) trap cleanup EXIT diff --git a/src/testing/test_merchant_order_creation.sh b/src/testing/test_merchant_order_creation.sh new file mode 100755 index 00000000..ddf949aa --- /dev/null +++ b/src/testing/test_merchant_order_creation.sh @@ -0,0 +1,114 @@ +#!/bin/bash +# This file is in the public domain. + +. initialize_taler_system.sh + +echo -n "Configuring merchant instance ..." +STATUS=$(curl -H "Content-Type: application/json" -X POST \ + -H 'Authorization: Bearer secret-token:super_secret' \ + http://localhost:9966/private/instances \ + -d '{"auth":{"method":"external"},"payto_uris":["payto://x-taler-bank/localhost/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_ms" : 3600000},"default_pay_delay":{"d_ms": 3600000}}' \ + -w "%{http_code}" -s -o /dev/null) + +if [ "$STATUS" != "204" ] +then + echo 'should respond ok, instance created. got:' $STATUS + exit 1 +fi + + +STATUS=$(curl 'http://localhost:9966/instances/default/private/products' \ + -d '{"product_id":"2","description":"product with id 2 and price :15","price":"TESTKUDOS:15","total_stock":2,"description_i18n":{},"unit":"","image":{},"taxes":[],"address":{},"next_restock":{"t_ms":"never"}}' \ + -w "%{http_code}" -s -o /dev/null) + +if [ "$STATUS" != "204" ] +then + echo 'should respond ok, product created. got:' $STATUS + exit 1 +fi +echo OK + +echo -n "Creating order with non-inventory products..." + +STATUS=$(curl 'http://localhost:9966/instances/default/private/orders' \ + -d '{"order":{"amount":"TESTKUDOS:7","summary":"3","products":[{"description":"desct","image":"","price":"TESTKUDOS:1","taxes":[],"unit":"u","quantity":1}]}}' \ + -w "%{http_code}" -s -o $LAST_RESPONSE) + +if [ "$STATUS" != "200" ] +then + echo 'should response ok, order created. got:' $STATUS `cat $LAST_RESPONSE` + exit 1 +fi + +ORDER_ID=`jq -r .order_id < $LAST_RESPONSE` +TOKEN=`jq -r .token < $LAST_RESPONSE` + +STATUS=$(curl http://localhost:9966/orders/$ORDER_ID/claim \ + -d '{"nonce":"","token":"'$TOKEN'"}' \ + -w "%{http_code}" -s -o $LAST_RESPONSE) + +if [ "$STATUS" != "200" ] +then + echo 'should response ok, order claimed. got:' $STATUS `cat $LAST_RESPONSE` + exit 1 +fi + +QUANTITY=`jq -r .contract_terms.products[0].quantity < $LAST_RESPONSE` + +if [ "$QUANTITY" != "1" ] +then + echo 'should get quantity 1. got:' $QUANTITY # `jq .contract_terms.products[0] < $LAST_RESPONSE` + exit 1 +fi +echo OK + +set -x +echo "Creating order with inventory products..." +STATUS=$(curl 'http://localhost:9966/instances/default/private/orders' \ + -d '{"order":{"amount":"TESTKUDOS:7","summary":"3"},"inventory_products":[{"product_id":"2","quantity":1}]}' \ + -w "%{http_code}" -s -o $LAST_RESPONSE) + + +if [ "$STATUS" != "200" ] +then + echo 'should response ok, order created. got:' $STATUS `cat $LAST_RESPONSE` + exit 1 +fi + +ORDER_ID=`jq -e -r .order_id < $LAST_RESPONSE` +TOKEN=`jq -e -r .token < $LAST_RESPONSE` + +STATUS=$(curl http://localhost:9966/orders/$ORDER_ID/claim \ + -d '{"nonce":"","token":"'$TOKEN'"}' \ + -w "%{http_code}" -s -o $LAST_RESPONSE) + +if [ "$STATUS" != "200" ] +then + echo 'should response ok, order claimed. got:' $STATUS `cat $LAST_RESPONSE` + exit 1 +fi + +QUANTITY=`jq -r .contract_terms.products[0].quantity < $LAST_RESPONSE` + +if [ "$QUANTITY" != "1" ] +then + echo 'should get quantity 1. got:' $QUANTITY #`jq .contract_terms.products[0] < $LAST_RESPONSE` + exit 1 +fi + +echo "OK" + + +STATUS=$(curl 'http://localhost:9966/instances/default/private/products' \ + -d '{"product_id":"1","description":"product with id 1 and price :15","price":"USD:15","total_stock":1,"description_i18n":{},"unit":"","image":{},"taxes":[],"address":{},"next_restock":{"t_ms":"never"}}' \ + -w "%{http_code}" -s -o /dev/null) + +if [ "$STATUS" != "409" ] +then +# "code": 30, +# "hint": "The currencies involved in the operation do not match.", + echo 'should respond conflict, product price is in another currency. got:' $STATUS + exit 1 +fi + +exit 0 -- cgit v1.2.3