summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2018-01-21 20:10:05 +0100
committerChristian Grothoff <christian@grothoff.org>2018-01-21 20:10:05 +0100
commitde092c2c2b4184e5276923a92e19a859c1cc07aa (patch)
tree562052b9a7aff8093d7aade8c8ef6e65bb5474e7
parent652bb0f9c4d9527c409db6a99a7e550c57328adf (diff)
downloadexchange-de092c2c2b4184e5276923a92e19a859c1cc07aa.tar.gz
exchange-de092c2c2b4184e5276923a92e19a859c1cc07aa.tar.bz2
exchange-de092c2c2b4184e5276923a92e19a859c1cc07aa.zip
make fakebank_url more robust
-rw-r--r--src/exchange-lib/test_exchange_api_new.c40
-rw-r--r--src/exchange-lib/testing_api_helpers.c43
-rw-r--r--src/include/taler_testing_lib.h11
3 files changed, 72 insertions, 22 deletions
diff --git a/src/exchange-lib/test_exchange_api_new.c b/src/exchange-lib/test_exchange_api_new.c
index 077115a22..32e1ad37a 100644
--- a/src/exchange-lib/test_exchange_api_new.c
+++ b/src/exchange-lib/test_exchange_api_new.c
@@ -30,16 +30,17 @@
#include "taler_fakebank_lib.h"
#include "taler_testing_lib.h"
-
/**
- * Is the configuration file is set to include wire format 'test'?
+ * Configuration file we use. One (big) configuration is used
+ * for the various components for this test.
*/
-#define WIRE_TEST 1
+#define CONFIG_FILE "test_exchange_api.conf"
/**
- * Is the configuration file is set to include wire format 'sepa'?
+ * URL of the fakebank. Obtained from CONFIG_FILE's "exchange-wire-test:BANK_URI" option.
*/
-#define WIRE_SEPA 1
+static char *fakebank_url;
+
/**
* 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))
diff --git a/src/exchange-lib/testing_api_helpers.c b/src/exchange-lib/testing_api_helpers.c
index fd3d2ddf0..2d1e866fe 100644
--- a/src/exchange-lib/testing_api_helpers.c
+++ b/src/exchange-lib/testing_api_helpers.c
@@ -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 */
diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h
index 709139b7c..2a95ff6de 100644
--- a/src/include/taler_testing_lib.h
+++ b/src/include/taler_testing_lib.h
@@ -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 ****************** */