diff options
Diffstat (limited to 'src/testing/test_exchange_api_twisted.c')
-rw-r--r-- | src/testing/test_exchange_api_twisted.c | 266 |
1 files changed, 128 insertions, 138 deletions
diff --git a/src/testing/test_exchange_api_twisted.c b/src/testing/test_exchange_api_twisted.c index f8cfa64b7..75ffe1f15 100644 --- a/src/testing/test_exchange_api_twisted.c +++ b/src/testing/test_exchange_api_twisted.c @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2014-2020 Taler Systems SA + Copyright (C) 2014-2023 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -44,19 +44,14 @@ static char *config_file; /** - * (real) Twister URL. Used at startup time to check if it runs. + * Our credentials. */ -static char *twister_url; +static struct TALER_TESTING_Credentials cred; /** - * Exchange configuration data. - */ -static struct TALER_TESTING_ExchangeConfiguration ec; - -/** - * Bank configuration data. + * (real) Twister URL. Used at startup time to check if it runs. */ -static struct TALER_TESTING_BankConfiguration bc; +static char *twister_url; /** * Twister process. @@ -73,8 +68,9 @@ static struct GNUNET_OS_Process *twisterd; static struct TALER_TESTING_Command CMD_EXEC_WIREWATCH (const char *label) { - return TALER_TESTING_cmd_exec_wirewatch (label, - config_file); + return TALER_TESTING_cmd_exec_wirewatch2 (label, + config_file, + "exchange-account-2"); } @@ -92,8 +88,8 @@ CMD_TRANSFER_TO_EXCHANGE (const char *label, { return TALER_TESTING_cmd_admin_add_incoming (label, amount, - &bc.exchange_auth, - bc.user42_payto); + &cred.ba, + cred.user42_payto); } @@ -112,8 +108,9 @@ run (void *cls, * response from a refresh-reveal operation. */ struct TALER_TESTING_Command refresh_409_conflict[] = { - CMD_TRANSFER_TO_EXCHANGE ("refresh-create-reserve", - "EUR:5.01"), + CMD_TRANSFER_TO_EXCHANGE ( + "refresh-create-reserve", + "EUR:5.01"), /** * Make previous command effective. */ @@ -121,34 +118,38 @@ run (void *cls, /** * Withdraw EUR:5. */ - TALER_TESTING_cmd_withdraw_amount ("refresh-withdraw-coin", - "refresh-create-reserve", - "EUR:5", - 0, /* age restriction off */ - MHD_HTTP_OK), - TALER_TESTING_cmd_deposit ("refresh-deposit-partial", - "refresh-withdraw-coin", - 0, - bc.user42_payto, - "{\"items\":[{\"name\":\"ice cream\",\ - \"value\":\"EUR:1\"}]}", - GNUNET_TIME_UNIT_ZERO, - "EUR:1", - MHD_HTTP_OK), + TALER_TESTING_cmd_withdraw_amount ( + "refresh-withdraw-coin", + "refresh-create-reserve", + "EUR:5", + 0, /* age restriction off */ + MHD_HTTP_OK), + TALER_TESTING_cmd_deposit ( + "refresh-deposit-partial", + "refresh-withdraw-coin", + 0, + cred.user42_payto, + "{\"items\":[{\"name\":\"ice cream\",\"value\":\"EUR:1\"}]}", + GNUNET_TIME_UNIT_ZERO, + "EUR:1", + MHD_HTTP_OK), /** * Melt the rest of the coin's value * (EUR:4.00 = 3x EUR:1.03 + 7x EUR:0.13) */ - TALER_TESTING_cmd_melt ("refresh-melt", - "refresh-withdraw-coin", - MHD_HTTP_OK, - NULL), + TALER_TESTING_cmd_melt ( + "refresh-melt", + "refresh-withdraw-coin", + MHD_HTTP_OK, + NULL), /* Trigger 409 Conflict. */ - TALER_TESTING_cmd_flip_upload ("flip-upload", - config_file, - "transfer_privs.0"), - TALER_TESTING_cmd_refresh_reveal ("refresh-(flipped-)reveal", - "refresh-melt", - MHD_HTTP_CONFLICT), + TALER_TESTING_cmd_flip_upload ( + "flip-upload", + config_file, + "transfer_privs.0"), + TALER_TESTING_cmd_refresh_reveal ( + "refresh-(flipped-)reveal", + "refresh-melt", + MHD_HTTP_CONFLICT), TALER_TESTING_cmd_end () }; @@ -159,23 +160,25 @@ run (void *cls, * lib test suite. */ struct TALER_TESTING_Command refund[] = { - CMD_TRANSFER_TO_EXCHANGE ("create-reserve-r1", - "EUR:5.01"), + CMD_TRANSFER_TO_EXCHANGE ( + "create-reserve-r1", + "EUR:5.01"), CMD_EXEC_WIREWATCH ("wirewatch-r1"), - TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-r1", - "create-reserve-r1", - "EUR:5", - 0, /* age restriction off */ - MHD_HTTP_OK), - TALER_TESTING_cmd_deposit ("deposit-refund-1", - "withdraw-coin-r1", - 0, - bc.user42_payto, - "{\"items\":[{\"name\":\"ice cream\"," - "\"value\":\"EUR:5\"}]}", - GNUNET_TIME_UNIT_MINUTES, - "EUR:5", - MHD_HTTP_OK), + TALER_TESTING_cmd_withdraw_amount ( + "withdraw-coin-r1", + "create-reserve-r1", + "EUR:5", + 0, /* age restriction off */ + MHD_HTTP_OK), + TALER_TESTING_cmd_deposit ( + "deposit-refund-1", + "withdraw-coin-r1", + 0, + cred.user42_payto, + "{\"items\":[{\"name\":\"ice cream\",\"value\":\"EUR:5\"}]}", + GNUNET_TIME_UNIT_MINUTES, + "EUR:5", + MHD_HTTP_OK), TALER_TESTING_cmd_refund ("refund-currency-mismatch", MHD_HTTP_BAD_REQUEST, "USD:5", @@ -190,18 +193,18 @@ run (void *cls, /* This next deposit CMD is only used to provide a * good merchant signature to the next (failing) refund * operations. */ - TALER_TESTING_cmd_deposit ("deposit-refund-to-fail", - "withdraw-coin-r1", - 0, /* coin index. */ - bc.user42_payto, - /* This parameter will make any comparison about - h_contract_terms fail, when /refund will be handled. - So in other words, this is h_contract mismatch. */ - "{\"items\":[{\"name\":\"ice skate\"," - "\"value\":\"EUR:5\"}]}", - GNUNET_TIME_UNIT_MINUTES, - "EUR:5", - MHD_HTTP_CONFLICT), + TALER_TESTING_cmd_deposit ( + "deposit-refund-to-fail", + "withdraw-coin-r1", + 0, /* coin index. */ + cred.user42_payto, + /* This parameter will make any comparison about + h_contract_terms fail, when /refund will be handled. + So in other words, this is h_contract mismatch. */ + "{\"items\":[{\"name\":\"ice skate\",\"value\":\"EUR:5\"}]}", + GNUNET_TIME_UNIT_MINUTES, + "EUR:5", + MHD_HTTP_CONFLICT), TALER_TESTING_cmd_refund ("refund-deposit-not-found", MHD_HTTP_NOT_FOUND, "EUR:5", @@ -219,10 +222,11 @@ run (void *cls, * are out of date. */ struct TALER_TESTING_Command expired_keys[] = { - TALER_TESTING_cmd_modify_header_dl ("modify-expiration", - config_file, - MHD_HTTP_HEADER_EXPIRES, - "Wed, 19 Jan 586524 08:01:49 GMT"), + TALER_TESTING_cmd_modify_header_dl ( + "modify-expiration", + config_file, + MHD_HTTP_HEADER_EXPIRES, + "Wed, 19 Jan 586524 08:01:49 GMT"), TALER_TESTING_cmd_check_keys_pull_all_keys ( "check-keys-expiration-0", 2), @@ -232,28 +236,35 @@ run (void *cls, CMD_TRANSFER_TO_EXCHANGE ("create-reserve-r2", "EUR:55.01"), CMD_EXEC_WIREWATCH ("wirewatch-r2"), - TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-r2", - "create-reserve-r2", - "EUR:5", - 0, /* age restriction off */ - MHD_HTTP_OK), + TALER_TESTING_cmd_withdraw_amount ( + "withdraw-coin-r2", + "create-reserve-r2", + "EUR:5", + 0, /* age restriction off */ + MHD_HTTP_OK), TALER_TESTING_cmd_end () }; #endif struct TALER_TESTING_Command commands[] = { - TALER_TESTING_cmd_wire_add ("add-wire-account", - "payto://x-taler-bank/localhost/2", - MHD_HTTP_NO_CONTENT, - false), - TALER_TESTING_cmd_exec_offline_sign_keys ("offline-sign-future-keys", - config_file), - TALER_TESTING_cmd_check_keys_pull_all_keys ("refetch /keys", - 1), - TALER_TESTING_cmd_batch ("refresh-reveal-409-conflict", - refresh_409_conflict), - TALER_TESTING_cmd_batch ("refund", - refund), + TALER_TESTING_cmd_run_fakebank ("run-fakebank", + cred.cfg, + "exchange-account-2"), + TALER_TESTING_cmd_system_start ("start-taler", + config_file, + "-e", + NULL), + TALER_TESTING_cmd_get_exchange ("get-exchange", + cred.cfg, + NULL, + true, + true), + TALER_TESTING_cmd_batch ( + "refresh-reveal-409-conflict", + refresh_409_conflict), + TALER_TESTING_cmd_batch ( + "refund", + refund), #if 0 TALER_TESTING_cmd_batch ("expired-keys", expired_keys), @@ -262,16 +273,15 @@ run (void *cls, }; (void) cls; - TALER_TESTING_run_with_fakebank (is, - commands, - bc.exchange_auth.wire_gateway_url); + TALER_TESTING_run (is, + commands); } /** * Kill, wait, and destroy convenience function. * - * @param process process to purge. + * @param[in] process process to purge. */ static void purge_process (struct GNUNET_OS_Process *process) @@ -287,57 +297,37 @@ int main (int argc, char *const *argv) { - char *cipher; int ret; (void) argc; - /* These environment variables get in the way... */ - unsetenv ("XDG_DATA_HOME"); - unsetenv ("XDG_CONFIG_HOME"); - GNUNET_log_setup (argv[0], - "DEBUG", - NULL); - cipher = GNUNET_TESTING_get_testname_from_underscore (argv[0]); - GNUNET_assert (NULL != cipher); - GNUNET_asprintf (&config_file, - "test_exchange_api_twisted-%s.conf", - cipher); - GNUNET_free (cipher); - if (GNUNET_OK != - TALER_TESTING_prepare_fakebank (config_file, - "exchange-account-2", - &bc)) - return 77; - if (NULL == (twister_url = TALER_TWISTER_prepare_twister - (config_file))) - return 77; - TALER_TESTING_cleanup_files (config_file); - switch (TALER_TESTING_prepare_exchange (config_file, - GNUNET_YES, - &ec)) { - case GNUNET_SYSERR: - GNUNET_break (0); - return 1; - case GNUNET_NO: - return 77; - case GNUNET_OK: - if (NULL == (twisterd = TALER_TWISTER_run_twister (config_file))) - return 77; - ret = TALER_TESTING_setup_with_exchange (&run, - NULL, - config_file); - purge_process (twisterd); - GNUNET_free (twister_url); + char *cipher; - if (GNUNET_OK != ret) - return 1; - break; - default: - GNUNET_break (0); - return 1; + cipher = GNUNET_STRINGS_get_suffix_from_binary_name (argv[0]); + GNUNET_assert (NULL != cipher); + GNUNET_asprintf (&config_file, + "test_exchange_api_twisted-%s.conf", + cipher); + GNUNET_free (cipher); } - return 0; + /* FIXME: introduce commands for twister! */ + twister_url = TALER_TWISTER_prepare_twister (config_file); + if (NULL == twister_url) + return 77; + twisterd = TALER_TWISTER_run_twister (config_file); + if (NULL == twisterd) + return 77; + ret = TALER_TESTING_main (argv, + "INFO", + config_file, + "exchange-account-2", + TALER_TESTING_BS_FAKEBANK, + &cred, + &run, + NULL); + purge_process (twisterd); + GNUNET_free (twister_url); + return ret; } |