make fakebank_url more robust

This commit is contained in:
Christian Grothoff 2018-01-21 20:10:05 +01:00
parent 652bb0f9c4
commit de092c2c2b
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
3 changed files with 73 additions and 23 deletions

View File

@ -30,16 +30,17 @@
#include "taler_fakebank_lib.h"
#include "taler_testing_lib.h"
/**
* Configuration file we use. One (big) configuration is used
* for the various components for this test.
*/
#define CONFIG_FILE "test_exchange_api.conf"
/**
* Is the configuration file is set to include wire format 'test'?
* URL of the fakebank. Obtained from CONFIG_FILE's "exchange-wire-test:BANK_URI" option.
*/
#define WIRE_TEST 1
static char *fakebank_url;
/**
* Is the configuration file is set to include wire format 'sepa'?
*/
#define WIRE_SEPA 1
/**
* Account number of the exchange at the bank.
@ -52,41 +53,37 @@
#define USER_ACCOUNT_NO 42
/**
*
* User name. Never checked by fakebank.
*/
#define USER_LOGIN_NAME "user42"
/**
*
* User password. Never checked by fakebank.
*/
#define USER_LOGIN_PASS "pass42"
/**
* Execute the taler-exchange-wirewatch command with
* our configuration file.
*
*/
#define FAKEBANK_URL "http://localhost:8082/"
/**
*
*/
#define CONFIG_FILE "test_exchange_api.conf"
/**
*
* @param label label to use for the command.
*/
#define CMD_EXEC_WIREWATCH(label) \
TALER_TESTING_cmd_exec_wirewatch (label, CONFIG_FILE)
/**
* Run wire transfer of funds from some user's account to the
* exchange.
*
* @param label label to use for the command.
* @param amount amount to transfer, i.e. "EUR:1"
*/
#define CMD_TRANSFER_TO_EXCHANGE(label,amount) \
TALER_TESTING_cmd_fakebank_transfer (label, amount, \
FAKEBANK_URL, USER_ACCOUNT_NO, EXCHANGE_ACCOUNT_NO, \
fakebank_url, USER_ACCOUNT_NO, EXCHANGE_ACCOUNT_NO, \
USER_LOGIN_NAME, USER_LOGIN_PASS)
/**
* Main function that will tell the interpreter what commands to run.
*
@ -105,7 +102,7 @@ run (void *cls,
TALER_TESTING_run_with_fakebank (is,
commands,
FAKEBANK_URL);
fakebank_url);
}
@ -119,8 +116,7 @@ main (int argc,
GNUNET_log_setup ("test-exchange-api-new",
"INFO",
NULL);
if (GNUNET_OK !=
TALER_TESTING_url_port_free (FAKEBANK_URL))
if (NULL == (fakebank_url = TALER_TESTING_prepare_fakebank (CONFIG_FILE)))
return 77;
TALER_TESTING_cleanup_files (CONFIG_FILE);
switch (TALER_TESTING_prepare_exchange (CONFIG_FILE))

View File

@ -95,6 +95,7 @@ TALER_TESTING_prepare_exchange (const char *config_filename)
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
"exchange",
"PORT");
GNUNET_CONFIGURATION_destroy (cfg);
return GNUNET_NO;
}
GNUNET_CONFIGURATION_destroy (cfg);
@ -324,4 +325,46 @@ TALER_TESTING_url_port_free (const char *url)
return GNUNET_OK;
}
/**
* Prepare launching a fakebank. Check that the configuration
* file has the right option, and that the port is avaiable.
* If everything is OK, return the configured URL of the fakebank.
*
* @param config_filename configuration file to use
* @return NULL on error, fakebank URL otherwise
*/
char *
TALER_TESTING_prepare_fakebank (const char *config_filename)
{
struct GNUNET_CONFIGURATION_Handle *cfg;
char *fakebank_url;
cfg = GNUNET_CONFIGURATION_create ();
if (GNUNET_OK !=
GNUNET_CONFIGURATION_load (cfg,
config_filename))
return NULL;
if (GNUNET_OK !=
GNUNET_CONFIGURATION_get_value_string (cfg,
"exchange-wire-test",
"BANK_URI",
&fakebank_url))
{
GNUNET_log_config_missing (GNUNET_ERROR_TYPE_WARNING,
"exchange-wire-test",
"BANK_URI");
GNUNET_CONFIGURATION_destroy (cfg);
return NULL;
}
GNUNET_CONFIGURATION_destroy (cfg);
if (GNUNET_OK !=
TALER_TESTING_url_port_free (fakebank_url))
{
GNUNET_free (fakebank_url);
return NULL;
}
return fakebank_url;
}
/* end of testing_api_helpers.c */

View File

@ -71,6 +71,17 @@ int
TALER_TESTING_url_port_free (const char *url);
/**
* Prepare launching a fakebank. Check that the configuration
* file has the right option, and that the port is avaiable.
* If everything is OK, return the configured URL of the fakebank.
*
* @param config_filename configuration file to use
* @return NULL on error, fakebank URL otherwise
*/
char *
TALER_TESTING_prepare_fakebank (const char *config_filename);
/* ******************* Generic interpreter logic ****************** */