summaryrefslogtreecommitdiff
path: root/src/testing/test_merchant_order_creation.sh
blob: c865b98cc7c9577dd883d7c158d15ad2b813f50f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/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
echo OK
RANDOM_IMG='data:image/png;base64,abcdefg'

echo -n "Creating product..."
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":"'$RANDOM_IMG'","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":"'$RANDOM_IMG'","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

IMAGE=`jq -r .contract_terms.products[0].image < $LAST_RESPONSE`
if [ "$IMAGE" != "$RANDOM_IMG" ]
then
    echo 'should get image but got something else. got:' $IMAGE
    exit 1
fi
echo OK

echo -n "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
    echo 'should respond conflict, product price is in another currency. got:' $STATUS
    exit 1
fi

exit 0