summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-04-13 19:02:21 -0300
committerSebastian <sebasjm@gmail.com>2021-04-13 19:02:25 -0300
commitc015c0ed43a4b928997e6872587a182d49c62113 (patch)
tree2202d393b116579f003f7faa33380506466c29d3
parent754ec646e50bc7764496a71b46a2d7bcaef56d14 (diff)
downloadmerchant-c015c0ed43a4b928997e6872587a182d49c62113.tar.gz
merchant-c015c0ed43a4b928997e6872587a182d49c62113.tar.bz2
merchant-c015c0ed43a4b928997e6872587a182d49c62113.zip
test order creation
-rwxr-xr-xsrc/testing/initialize_taler_system.sh3
-rwxr-xr-xsrc/testing/test_merchant_order_creation.sh114
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