From a79b67c726e7a2d2ef44102e883b98423d129fbd Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 30 Oct 2020 22:12:02 +0100 Subject: log more nicely if authentication failed; do use new changepassword_unsafe to set bank pw -- and not others; do show stderr output of pybank in test cases --- contrib/taler-bank-manage-testing | 13 +----- .../testing_api_cmd_bank_admin_add_incoming.c | 52 ++++++++++++++-------- src/testing/testing_api_helpers_bank.c | 26 +++++++---- 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/contrib/taler-bank-manage-testing b/contrib/taler-bank-manage-testing index 29494e3ad..4fa80b177 100755 --- a/contrib/taler-bank-manage-testing +++ b/contrib/taler-bank-manage-testing @@ -21,18 +21,7 @@ taler-bank-manage -c $1 --with-db $2 django provide_accounts taler-bank-manage -c $1 --with-db $2 django add_bank_account 42 taler-bank-manage -c $1 --with-db $2 django add_bank_account 43 -# This is 'x' hashed by Django -PW_HASH='pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs=' - -# hack password hash directly into the database: -echo "UPDATE auth_user SET password='$PW_HASH'" | psql -Aqt $2 - - -# Note that calling -# taler-bank-manage -c $1 --with-db $2 django changepassword Bank x -# does not work: (1) it always insists on going interactive, and (2) -# rejects 'x' as a password. - +taler-bank-manage -c $1 --with-db $2 django changepassword_unsafe Exchange x # Now run Django for good exec taler-bank-manage -c $1 --with-db $2 $3 diff --git a/src/testing/testing_api_cmd_bank_admin_add_incoming.c b/src/testing/testing_api_cmd_bank_admin_add_incoming.c index 5df691b39..0ea5a058c 100644 --- a/src/testing/testing_api_cmd_bank_admin_add_incoming.c +++ b/src/testing/testing_api_cmd_bank_admin_add_incoming.c @@ -220,8 +220,28 @@ confirmation_cb (void *cls, fts->reserve_history.details.in_details.wire_reference_size = sizeof (fts->row_id_nbo); fts->aih = NULL; - if (MHD_HTTP_OK != http_status) + switch (http_status) { + case MHD_HTTP_OK: + fts->serial_id = serial_id; + fts->timestamp = timestamp; + TALER_TESTING_interpreter_next (is); + return; + case MHD_HTTP_UNAUTHORIZED: + switch (fts->auth.method) + { + case TALER_BANK_AUTH_NONE: + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Authentication required, but none configure.\n"); + break; + case TALER_BANK_AUTH_BASIC: + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Basic authentication (%s) failed.\n", + fts->auth.details.basic.username); + break; + } + break; + default: if (0 != fts->do_retry) { fts->do_retry--; @@ -229,8 +249,8 @@ confirmation_cb (void *cls, (TALER_EC_DB_COMMIT_FAILED_ON_RETRY == ec) || (MHD_HTTP_INTERNAL_SERVER_ERROR == http_status) ) { - GNUNET_log - (GNUNET_ERROR_TYPE_INFO, + GNUNET_log ( + GNUNET_ERROR_TYPE_INFO, "Retrying fakebank transfer failed with %u/%d\n", http_status, (int) ec); @@ -241,25 +261,21 @@ confirmation_cb (void *cls, fts->backoff = GNUNET_TIME_randomized_backoff (fts->backoff, MAX_BACKOFF); fts->is->commands[fts->is->ip].num_tries++; - fts->retry_task = GNUNET_SCHEDULER_add_delayed - (fts->backoff, - &do_retry, - fts); + fts->retry_task = GNUNET_SCHEDULER_add_delayed ( + fts->backoff, + &do_retry, + fts); return; } } - GNUNET_break (0); - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Fakebank returned HTTP status %u/%d\n", - http_status, - (int) ec); - TALER_TESTING_interpreter_fail (is); - return; + break; } - - fts->serial_id = serial_id; - fts->timestamp = timestamp; - TALER_TESTING_interpreter_next (is); + GNUNET_break (0); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Fakebank returned HTTP status %u/%d\n", + http_status, + (int) ec); + TALER_TESTING_interpreter_fail (is); } diff --git a/src/testing/testing_api_helpers_bank.c b/src/testing/testing_api_helpers_bank.c index 48802e042..c42c52cd8 100644 --- a/src/testing/testing_api_helpers_bank.c +++ b/src/testing/testing_api_helpers_bank.c @@ -120,7 +120,7 @@ TALER_TESTING_run_libeufin (const struct TALER_TESTING_BankConfiguration *bc) char *curl_check_cmd; nexus_proc = GNUNET_OS_start_process ( - GNUNET_OS_INHERIT_STD_NONE, + GNUNET_OS_INHERIT_STD_ERR, NULL, NULL, NULL, "libeufin-nexus", "libeufin-nexus", @@ -165,7 +165,7 @@ TALER_TESTING_run_libeufin (const struct TALER_TESTING_BankConfiguration *bc) fprintf (stderr, "\n"); sandbox_proc = GNUNET_OS_start_process ( - GNUNET_OS_INHERIT_STD_NONE, + GNUNET_OS_INHERIT_STD_ERR, NULL, NULL, NULL, "libeufin-sandbox", "libeufin-sandbox", @@ -268,7 +268,7 @@ TALER_TESTING_run_bank (const char *config_filename, } GNUNET_CONFIGURATION_destroy (cfg); bank_proc = GNUNET_OS_start_process ( - GNUNET_OS_INHERIT_STD_NONE, + GNUNET_OS_INHERIT_STD_ERR, NULL, NULL, NULL, "taler-bank-manage-testing", "taler-bank-manage-testing", @@ -524,9 +524,11 @@ TALER_TESTING_prepare_bank (const char *config_filename, /* DB preparation */ if (GNUNET_YES == reset_db) { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Flushing bank database\n"); if (NULL == (dbreset_proc = GNUNET_OS_start_process ( - GNUNET_OS_INHERIT_STD_NONE, + GNUNET_OS_INHERIT_STD_ERR, NULL, NULL, NULL, "taler-bank-manage", "taler-bank-manage", @@ -542,7 +544,6 @@ TALER_TESTING_prepare_bank (const char *config_filename, GNUNET_CONFIGURATION_destroy (cfg); return GNUNET_SYSERR; } - GNUNET_free (database); if (GNUNET_SYSERR == GNUNET_OS_process_wait_status (dbreset_proc, @@ -552,17 +553,21 @@ TALER_TESTING_prepare_bank (const char *config_filename, GNUNET_OS_process_destroy (dbreset_proc); GNUNET_break (0); GNUNET_CONFIGURATION_destroy (cfg); + GNUNET_free (database); return GNUNET_SYSERR; } if ( (type == GNUNET_OS_PROCESS_EXITED) && (0 != code) ) { fprintf (stderr, - "Failed to setup database\n"); + "Failed to setup database `%s'\n", + database); GNUNET_break (0); GNUNET_CONFIGURATION_destroy (cfg); + GNUNET_free (database); return GNUNET_SYSERR; } + GNUNET_free (database); if ( (type != GNUNET_OS_PROCESS_EXITED) || (0 != code) ) { @@ -591,11 +596,14 @@ TALER_TESTING_prepare_bank (const char *config_filename, "Using pybank %s on port %u\n", bc->exchange_auth.wire_gateway_url, (unsigned int) port); - GNUNET_log (GNUNET_ERROR_TYPE_INFO, "exchange payto: %s\n", + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "exchange payto: %s\n", bc->exchange_payto); - GNUNET_log (GNUNET_ERROR_TYPE_INFO, "user42_payto: %s\n", + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "user42_payto: %s\n", bc->user42_payto); - GNUNET_log (GNUNET_ERROR_TYPE_INFO, "user42_payto: %s\n", + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "user43_payto: %s\n", bc->user43_payto); return GNUNET_OK; } -- cgit v1.2.3