diff options
author | Sebastian <sebasjm@gmail.com> | 2021-04-13 19:02:21 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2021-04-13 19:02:25 -0300 |
commit | c015c0ed43a4b928997e6872587a182d49c62113 (patch) | |
tree | 2202d393b116579f003f7faa33380506466c29d3 | |
parent | 754ec646e50bc7764496a71b46a2d7bcaef56d14 (diff) |
test order creation
-rwxr-xr-x | src/testing/initialize_taler_system.sh | 3 | ||||
-rwxr-xr-x | src/testing/test_merchant_order_creation.sh | 114 |
2 files changed, 116 insertions, 1 deletions
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 |