From 5ed3b2cfe1aa0cb31c589b308cc70684a20dd368 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 11 Apr 2023 19:44:51 +0200 Subject: store user-type with merchant settings --- src/testing/testing_api_cmd_get_instance.c | 354 +++++++++++++++-------------- 1 file changed, 178 insertions(+), 176 deletions(-) (limited to 'src/testing/testing_api_cmd_get_instance.c') diff --git a/src/testing/testing_api_cmd_get_instance.c b/src/testing/testing_api_cmd_get_instance.c index 95dc7282..0127a13d 100644 --- a/src/testing/testing_api_cmd_get_instance.c +++ b/src/testing/testing_api_cmd_get_instance.c @@ -96,17 +96,11 @@ struct GetInstanceState * Callback for a /get/instance/$ID operation. * * @param cls closure for this function - * @param hr HTTP response - * @param accounts_length how many bank accounts the instance has - * @param accounts the list of the instance's bank accounts - * @param details all the details related to this particular instance + * @param igr response */ static void get_instance_cb (void *cls, - const struct TALER_MERCHANT_HttpResponse *hr, - unsigned int accounts_length, - const struct TALER_MERCHANT_Account accounts[], - const struct TALER_MERCHANT_InstanceDetails *details) + const struct TALER_MERCHANT_InstanceGetResponse *igr) { struct GetInstanceState *gis = cls; const struct TALER_TESTING_Command *instance_cmd; @@ -116,210 +110,218 @@ get_instance_cb (void *cls, gis->instance_reference); gis->igh = NULL; - if (gis->http_status != hr->http_status) + if (gis->http_status != igr->hr.http_status) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Unexpected response code %u (%d) to command %s\n", - hr->http_status, - (int) hr->ec, + igr->hr.http_status, + (int) igr->hr.ec, TALER_TESTING_interpreter_get_current_label (gis->is)); TALER_TESTING_interpreter_fail (gis->is); return; } - switch (hr->http_status) + switch (igr->hr.http_status) { case MHD_HTTP_OK: { - const char **name; - - if (GNUNET_OK != - TALER_TESTING_get_trait_instance_name (instance_cmd, - &name)) - TALER_TESTING_interpreter_fail (gis->is); - if (0 != strcmp (details->name, - *name)) + const struct TALER_MERCHANT_InstanceDetails *details = + &igr->details.success.details; { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance name does not match: Got `%s', wanted `%s'\n", - details->name, - *name); - TALER_TESTING_interpreter_fail (gis->is); - return; + const char **name; + + if (GNUNET_OK != + TALER_TESTING_get_trait_instance_name (instance_cmd, + &name)) + TALER_TESTING_interpreter_fail (gis->is); + if (0 != strcmp (details->name, + *name)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance name does not match: Got `%s', wanted `%s'\n", + details->name, + *name); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } - } - { - const json_t *address; - - if (GNUNET_OK != - TALER_TESTING_get_trait_address (instance_cmd, - &address)) - TALER_TESTING_interpreter_fail (gis->is); - if (1 != json_equal (details->address, - address)) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance address does not match\n"); - TALER_TESTING_interpreter_fail (gis->is); - return; + const json_t *address; + + if (GNUNET_OK != + TALER_TESTING_get_trait_address (instance_cmd, + &address)) + TALER_TESTING_interpreter_fail (gis->is); + if (1 != json_equal (details->address, + address)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance address does not match\n"); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } - } - { - const struct json_t *jurisdiction; - - if (GNUNET_OK != - TALER_TESTING_get_trait_jurisdiction (instance_cmd, - &jurisdiction)) - TALER_TESTING_interpreter_fail (gis->is); - if (1 != json_equal (details->jurisdiction, - jurisdiction)) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance jurisdiction does not match\n"); - TALER_TESTING_interpreter_fail (gis->is); - return; + const struct json_t *jurisdiction; + + if (GNUNET_OK != + TALER_TESTING_get_trait_jurisdiction (instance_cmd, + &jurisdiction)) + TALER_TESTING_interpreter_fail (gis->is); + if (1 != json_equal (details->jurisdiction, + jurisdiction)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance jurisdiction does not match\n"); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } - } - { - const struct TALER_Amount *default_max_wire_fee; - - if (GNUNET_OK != - TALER_TESTING_get_trait_max_wire_fee (instance_cmd, - &default_max_wire_fee)) - TALER_TESTING_interpreter_fail (gis->is); - if ((GNUNET_OK != TALER_amount_cmp_currency ( - details->default_max_wire_fee, - default_max_wire_fee)) || - (0 != TALER_amount_cmp (details->default_max_wire_fee, - default_max_wire_fee))) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance default max wire fee does not match\n"); - TALER_TESTING_interpreter_fail (gis->is); - return; + const struct TALER_Amount *default_max_wire_fee; + + if (GNUNET_OK != + TALER_TESTING_get_trait_max_wire_fee (instance_cmd, + &default_max_wire_fee)) + TALER_TESTING_interpreter_fail (gis->is); + if ((GNUNET_OK != + TALER_amount_cmp_currency ( + &details->default_max_wire_fee, + default_max_wire_fee)) || + (0 != TALER_amount_cmp (&details->default_max_wire_fee, + default_max_wire_fee))) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance default max wire fee does not match\n"); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } - } - { - const uint32_t *default_wire_fee_amortization; - - if (GNUNET_OK != - TALER_TESTING_get_trait_wire_fee_amortization (instance_cmd, - & - default_wire_fee_amortization)) - TALER_TESTING_interpreter_fail (gis->is); - if (details->default_wire_fee_amortization != - *default_wire_fee_amortization) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance default wire fee amortization does not match\n"); - TALER_TESTING_interpreter_fail (gis->is); - return; + const uint32_t *default_wire_fee_amortization; + + if (GNUNET_OK != + TALER_TESTING_get_trait_wire_fee_amortization ( + instance_cmd, + &default_wire_fee_amortization)) + TALER_TESTING_interpreter_fail (gis->is); + if (details->default_wire_fee_amortization != + *default_wire_fee_amortization) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance default wire fee amortization does not match\n"); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } - } - { - const struct TALER_Amount *default_max_deposit_fee; - - if (GNUNET_OK != - TALER_TESTING_get_trait_max_deposit_fee (instance_cmd, - &default_max_deposit_fee)) - TALER_TESTING_interpreter_fail (gis->is); - if ( (GNUNET_OK != - TALER_amount_cmp_currency ( - details->default_max_deposit_fee, - default_max_deposit_fee)) || - (0 != TALER_amount_cmp (details->default_max_deposit_fee, - default_max_deposit_fee)) ) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance default max deposit fee %s does not match\n", - TALER_amount2s (details->default_max_deposit_fee)); - TALER_TESTING_interpreter_fail (gis->is); - return; + const struct TALER_Amount *default_max_deposit_fee; + + if (GNUNET_OK != + TALER_TESTING_get_trait_max_deposit_fee (instance_cmd, + &default_max_deposit_fee)) + TALER_TESTING_interpreter_fail (gis->is); + if ( (GNUNET_OK != + TALER_amount_cmp_currency ( + &details->default_max_deposit_fee, + default_max_deposit_fee)) || + (0 != TALER_amount_cmp (&details->default_max_deposit_fee, + default_max_deposit_fee)) ) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance default max deposit fee %s does not match\n", + TALER_amount2s (&details->default_max_deposit_fee)); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } - } - { - const struct GNUNET_TIME_Relative *default_wire_transfer_delay; - - if (GNUNET_OK != - TALER_TESTING_get_trait_wire_delay (instance_cmd, - &default_wire_transfer_delay)) - TALER_TESTING_interpreter_fail (gis->is); - if (details->default_wire_transfer_delay.rel_value_us != - default_wire_transfer_delay->rel_value_us) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance default wire transfer delay does not match\n"); - TALER_TESTING_interpreter_fail (gis->is); - return; + const struct GNUNET_TIME_Relative *default_wire_transfer_delay; + + if (GNUNET_OK != + TALER_TESTING_get_trait_wire_delay (instance_cmd, + &default_wire_transfer_delay)) + TALER_TESTING_interpreter_fail (gis->is); + if (details->default_wire_transfer_delay.rel_value_us != + default_wire_transfer_delay->rel_value_us) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance default wire transfer delay does not match\n"); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } - } - { - const struct GNUNET_TIME_Relative *default_pay_delay; - if (GNUNET_OK != - TALER_TESTING_get_trait_pay_delay (instance_cmd, - &default_pay_delay)) - TALER_TESTING_interpreter_fail (gis->is); - if (details->default_pay_delay.rel_value_us != - default_pay_delay->rel_value_us) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance default pay delay does not match\n"); - TALER_TESTING_interpreter_fail (gis->is); - return; + const struct GNUNET_TIME_Relative *default_pay_delay; + if (GNUNET_OK != + TALER_TESTING_get_trait_pay_delay (instance_cmd, + &default_pay_delay)) + TALER_TESTING_interpreter_fail (gis->is); + if (details->default_pay_delay.rel_value_us != + default_pay_delay->rel_value_us) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance default pay delay does not match\n"); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } - } - /* We aren't guaranteed an order for the accounts, so we just have to check - that we can match each account returned with exactly one account - expected. */ - if (gis->cmp_accounts) - { - unsigned int expected_accounts_length = - gis->active_accounts_length + gis->inactive_accounts_length; - unsigned int matches[accounts_length]; - - if (accounts_length != expected_accounts_length) + /* We aren't guaranteed an order for the accounts, so we just have to check + that we can match each account returned with exactly one account + expected. */ + if (gis->cmp_accounts) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Accounts length does not match\n"); - TALER_TESTING_interpreter_fail (gis->is); - return; - } + unsigned int have_al = igr->details.success.accounts_length; + unsigned int expected_accounts_length = + gis->active_accounts_length + gis->inactive_accounts_length; + unsigned int matches[GNUNET_NZL (have_al)]; + + if (have_al != expected_accounts_length) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Accounts length does not match\n"); + TALER_TESTING_interpreter_fail (gis->is); + return; + } - memset (matches, - 0, - sizeof (unsigned int) * accounts_length); + memset (matches, + 0, + sizeof (matches)); - /* Compare the accounts */ - for (unsigned int i = 0; i < accounts_length; ++i) - { - for (unsigned int j = 0; j < gis->active_accounts_length; ++j) + /* Compare the accounts */ + for (unsigned int i = 0; i < have_al; ++i) { - if ((0 == strcasecmp (accounts[i].payto_uri, - gis->active_accounts[j])) && - (true == accounts[i].active)) + const struct TALER_MERCHANT_Account *account + = &igr->details.success.accounts[i]; + for (unsigned int j = 0; j < gis->active_accounts_length; ++j) { - matches[i] += 1; + if ((0 == strcasecmp (account->payto_uri, + gis->active_accounts[j])) && + account->active) + { + matches[i] += 1; + } } - } - for (unsigned int j = 0; j < gis->inactive_accounts_length; ++j) - { - if ((0 == strcasecmp (accounts[i].payto_uri, - gis->inactive_accounts[j])) && - (false == accounts[i].active)) + for (unsigned int j = 0; j < gis->inactive_accounts_length; ++j) { - matches[i] += 1; + if ((0 == strcasecmp (account->payto_uri, + gis->inactive_accounts[j])) && + (! account->active)) + { + matches[i] += 1; + } } } - } - // Each account should have exactly one match. - for (unsigned int i = 0; i < accounts_length; ++i) - { - if (1 != matches[i]) + // Each account should have exactly one match. + for (unsigned int i = 0; i < have_al; ++i) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Instance account does not match\n"); - TALER_TESTING_interpreter_fail (gis->is); - return; + if (1 != matches[i]) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Instance account does not match\n"); + TALER_TESTING_interpreter_fail (gis->is); + return; + } } } } @@ -331,7 +333,7 @@ get_instance_cb (void *cls, default: GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Unhandled HTTP status %u for GET instance ID.\n", - hr->http_status); + igr->hr.http_status); } TALER_TESTING_interpreter_next (gis->is); } -- cgit v1.2.3