diff options
author | Jonathan Buchanan <jonathan.russ.buchanan@gmail.com> | 2020-08-01 03:05:09 -0400 |
---|---|---|
committer | Jonathan Buchanan <jonathan.russ.buchanan@gmail.com> | 2020-08-01 03:05:09 -0400 |
commit | 859675fe134b673b99cf1d9edcbdf258798ea740 (patch) | |
tree | 29a116b259a03f703782a1e6c4fb8be08ecbcafb /src | |
parent | 9a1369603bd98944d8276989e36a78ec9a84b247 (diff) | |
download | merchant-859675fe134b673b99cf1d9edcbdf258798ea740.tar.gz merchant-859675fe134b673b99cf1d9edcbdf258798ea740.tar.bz2 merchant-859675fe134b673b99cf1d9edcbdf258798ea740.zip |
fix query paid orders & add test
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/taler-merchant-httpd_private-get-orders.c | 43 | ||||
-rw-r--r-- | src/testing/test_merchant_api.c | 9 |
2 files changed, 37 insertions, 15 deletions
diff --git a/src/backend/taler-merchant-httpd_private-get-orders.c b/src/backend/taler-merchant-httpd_private-get-orders.c index ab90c576..dc4901c3 100644 --- a/src/backend/taler-merchant-httpd_private-get-orders.c +++ b/src/backend/taler-merchant-httpd_private-get-orders.c @@ -259,21 +259,9 @@ add_order (void *cls, struct AddOrderState *aos = cls; json_t *contract_terms; struct GNUNET_HashCode h_contract_terms; - enum GNUNET_DB_QueryStatus qs = - TMH_db->lookup_order (TMH_db->cls, - aos->instance_id, - order_id, - NULL, - &contract_terms); + enum GNUNET_DB_QueryStatus qs; bool refundable = false; bool paid; - if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs) - { - aos->result = 1; - aos->ec_msg = "failed to lookup order in database"; - json_decref (contract_terms); - return; - } { qs = TMH_db->lookup_order_status (TMH_db->cls, @@ -288,11 +276,38 @@ add_order (void *cls, { aos->result = 1; aos->ec_msg = "failed to lookup order status in database"; - json_decref (contract_terms); return; } } + if (paid) + { + /* if the order was paid, it must have been claimed, so use + lookup_contract_terms to avoid the order being deleted in the db. */ + uint64_t os; + qs = TMH_db->lookup_contract_terms (TMH_db->cls, + aos->instance_id, + order_id, + &contract_terms, + &os); + } + else + { + qs = TMH_db->lookup_order (TMH_db->cls, + aos->instance_id, + order_id, + NULL, + &contract_terms); + } + + if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs) + { + aos->result = 1; + aos->ec_msg = "failed to lookup order in database"; + json_decref (contract_terms); + return; + } + { struct TALER_Amount order_amount; struct GNUNET_TIME_Absolute rd; diff --git a/src/testing/test_merchant_api.c b/src/testing/test_merchant_api.c index 6ea9901b..b8ef13c0 100644 --- a/src/testing/test_merchant_api.c +++ b/src/testing/test_merchant_api.c @@ -286,12 +286,14 @@ run (void *cls, "x-taler-bank", "", ""), - /*TALER_TESTING_cmd_merchant_post_orders2 ("create-proposal-1-idem", + /* + TALER_TESTING_cmd_merchant_post_orders2 ("create-proposal-1-idem", merchant_url, MHD_HTTP_OK, "1", GNUNET_TIME_UNIT_ZERO_ABS, GNUNET_TIME_UNIT_FOREVER_ABS, + true, "EUR:5.0", "x-taler-bank", "", @@ -365,6 +367,11 @@ run (void *cls, true, false, MHD_HTTP_OK), + TALER_TESTING_cmd_merchant_get_orders ("get-orders-1-paid", + merchant_url, + MHD_HTTP_OK, + "create-proposal-1", + NULL), TALER_TESTING_cmd_merchant_pay_order ("replay-simple", merchant_url, MHD_HTTP_OK, |