summaryrefslogtreecommitdiff
path: root/src/testing/testing_api_cmd_get_instance.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-04-11 19:44:51 +0200
committerChristian Grothoff <christian@grothoff.org>2023-04-11 19:44:51 +0200
commit5ed3b2cfe1aa0cb31c589b308cc70684a20dd368 (patch)
tree858e253a3393febe8207e5870e59e04946fa6958 /src/testing/testing_api_cmd_get_instance.c
parentfeaf7bae8baf8ec701d02374e18a6b978dcfb9f8 (diff)
downloadmerchant-5ed3b2cfe1aa0cb31c589b308cc70684a20dd368.tar.gz
merchant-5ed3b2cfe1aa0cb31c589b308cc70684a20dd368.tar.bz2
merchant-5ed3b2cfe1aa0cb31c589b308cc70684a20dd368.zip
store user-type with merchant settings
Diffstat (limited to 'src/testing/testing_api_cmd_get_instance.c')
-rw-r--r--src/testing/testing_api_cmd_get_instance.c354
1 files changed, 178 insertions, 176 deletions
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);
}