merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 8145acda94ba0bb1fc2bbe6cda3bfb12b9fffd5a
parent ad4f0177e175251f51e939eba22b9fa7d28474b8
Author: bohdan-potuzhnyi <bohdan.potuzhnyi@gmail.com>
Date:   Mon, 31 Mar 2025 22:26:31 +0200

Merge branch 'master' of ssh://git.taler.net/merchant

Diffstat:
Msrc/backend/taler-merchant-httpd_post-orders-ID-abort.c | 1+
Msrc/backenddb/pg_statistics_examples.sql | 12++++++------
Msrc/backenddb/test_merchantdb.c | 47+++++++++++++++++++++++++++++------------------
3 files changed, 36 insertions(+), 24 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_post-orders-ID-abort.c b/src/backend/taler-merchant-httpd_post-orders-ID-abort.c @@ -797,6 +797,7 @@ begin_transaction (struct AbortContext *ac) &h_contract_terms)) { GNUNET_break_op (0); + TMH_db->rollback (TMH_db->cls); resume_abort_with_error (ac, MHD_HTTP_FORBIDDEN, TALER_EC_MERCHANT_POST_ORDERS_ID_ABORT_CONTRACT_HASH_MISSMATCH, diff --git a/src/backenddb/pg_statistics_examples.sql b/src/backenddb/pg_statistics_examples.sql @@ -56,16 +56,16 @@ VALUES ('deposits' ,'sales (before refunds)' ,'amount' - ,generate_series (1, 10, 1) || generate_series (60, 180, 60), - ,array_fill (1, 10) || array_fill (5, 3)] + ,ARRAY(SELECT generate_series (1, 10, 1)) || ARRAY(SELECT generate_series (60, 180, 60)), + ,array_fill (1, ARRAY[10]) || array_fill (5, ARRAY[3]) ), ('products-sold' ,'number of products sold' ,'number' - ,generate_series (1, 10, 1) || [60], - ,array_fill (1, 10) || [10] + ,ARRAY(SELECT generate_series (1, 10, 1)) || [60], + ,array_fill (1, ARRAY[10]) || [10] ) -ON CONFLICT DO NOTHING; +ON CONFLICT DO NOTHING; DROP FUNCTION IF EXISTS merchant_deposits_statistics_trigger CASCADE; CREATE FUNCTION merchant_deposits_statistics_trigger() @@ -134,7 +134,7 @@ VALUES ,ARRAY['second'::statistic_range, 'minute', 'day', 'week', 'month', 'quarter', 'year'] ,ARRAY[120, 120, 60, 12, 24, 8, 10] -- track last 120s, 120 minutes, 60 days, 12 weeks, 24 months, 8 quarters and 10 years ) -ON CONFLICT DO NOTHING; +ON CONFLICT DO NOTHING; DROP FUNCTION IF EXISTS merchant_products_sold_statistics_trigger CASCADE; CREATE FUNCTION merchant_products_sold_statistics_trigger() diff --git a/src/backenddb/test_merchantdb.c b/src/backenddb/test_merchantdb.c @@ -720,6 +720,7 @@ make_product (const char *id, product->product.description_i18n = json_array (); GNUNET_assert (NULL != product->product.description_i18n); product->product.unit = "boxes"; + product->product.minimum_age = 0; GNUNET_assert (GNUNET_OK == TALER_string_to_amount ("EUR:120.40", &product->product.price)); @@ -1115,6 +1116,7 @@ pre_test_products (struct TestProducts_Closure *cls) &cls->products[1]); cls->products[1].product.description = "This is a another test product"; cls->products[1].product.unit = "cans"; + cls->products[1].product.minimum_age = 0; GNUNET_assert (GNUNET_OK == TALER_string_to_amount ("EUR:4.95", &cls->products[1].product.price)); @@ -1438,18 +1440,25 @@ make_order (const char *order_id, &order->claim_token, sizeof (order->claim_token)); refund_deadline = GNUNET_TIME_relative_to_timestamp (GNUNET_TIME_UNIT_WEEKS); - json_object_set_new (order->contract, - "fulfillment_url", - json_string ("a")); - json_object_set_new (order->contract, - "order_id", - json_string (order_id)); - json_object_set_new (order->contract, - "pay_deadline", - GNUNET_JSON_from_timestamp (order->pay_deadline)); - json_object_set_new (order->contract, - "refund_deadline", - GNUNET_JSON_from_timestamp (refund_deadline)); + GNUNET_assert (0 == + json_object_set_new (order->contract, + "fulfillment_url", + json_string ("a"))); + GNUNET_assert (0 == + json_object_set_new (order->contract, + "order_id", + json_string (order_id))); + GNUNET_assert (0 == + json_object_set_new ( + order->contract, + "pay_deadline", + GNUNET_JSON_from_timestamp (order->pay_deadline)) + ); + GNUNET_assert (0 == + json_object_set_new (order->contract, + "refund_deadline", + GNUNET_JSON_from_timestamp ( + refund_deadline))); } @@ -2113,9 +2122,10 @@ pre_test_orders (struct TestOrders_Closure *cls) make_order ("test_orders_od_2", &cls->orders[2]); - GNUNET_assert (0 == json_object_set_new (cls->orders[1].contract, - "other_field", - json_string ("Second contract"))); + GNUNET_assert (0 == + json_object_set_new (cls->orders[1].contract, + "other_field", + json_string ("Second contract"))); cls->orders[2].pay_deadline = GNUNET_TIME_UNIT_ZERO_TS; GNUNET_assert (0 == @@ -2252,9 +2262,10 @@ run_test_orders (struct TestOrders_Closure *cls) } } /* Test update contract terms */ - json_object_set_new (cls->orders[0].contract, - "some_new_field", - json_string ("another value")); + GNUNET_assert (0 == + json_object_set_new (cls->orders[0].contract, + "some_new_field", + json_string ("another value"))); TEST_RET_ON_FAIL (test_update_contract_terms (&cls->instance, &cls->orders[0], GNUNET_DB_STATUS_SUCCESS_ONE_RESULT));