aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------contrib/wallet-core0
-rw-r--r--src/include/taler_merchant_testing_lib.h32
-rw-r--r--src/testing/Makefile.am1
-rw-r--r--src/testing/test.conf1
-rw-r--r--src/testing/test_merchant_api-cs.conf125
-rw-r--r--src/testing/test_merchant_api-rsa.conf125
-rw-r--r--src/testing/test_merchant_api.conf124
-rw-r--r--src/testing/test_template.conf1
-rw-r--r--src/testing/testing_api_cmd_checkserver.c141
-rw-r--r--src/testing/testing_api_cmd_webhook.c13
10 files changed, 217 insertions, 346 deletions
diff --git a/contrib/wallet-core b/contrib/wallet-core
-Subproject abc01ba21f670960df8a79047d536f16c263183
+Subproject 13119702d90733174fc69a75de46bda6401d083
diff --git a/src/include/taler_merchant_testing_lib.h b/src/include/taler_merchant_testing_lib.h
index e0ffcccf..a749b092 100644
--- a/src/include/taler_merchant_testing_lib.h
+++ b/src/include/taler_merchant_testing_lib.h
@@ -1771,7 +1771,7 @@ TALER_TESTING_cmd_merchant_delete_webhook (const char *label,
* to use the 'taler-merchant-webhook' program.
*
* @param label command label.
- * @param configuration file used by the webhook.
+ * @param config_filename configuration file used by the webhook.
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_webhook (const char *label,
@@ -1790,22 +1790,40 @@ TALER_TESTING_cmd_testserver (const char *label,
/**
- * This function is used to check the web server
+ * This function is used to check the web server got the
+ * expected request from the web hook.
*
* @param label command label
* @param ref_operation reference to command to the previous set server status operation.
* @param index index to know which web server we check.
- * @param url of the webhook
- * @param http_method of the webhook
- * @param header of the webhook
- * @param body of the webhook
- * @param port is the port of the web server
*/
struct TALER_TESTING_Command
TALER_TESTING_cmd_checkserver (const char *label,
const char *ref_operation,
unsigned int index);
+
+/**
+ * This function is used to check that the web server
+ * got the expected request from the web hook.
+ *
+ * @param label command label
+ * @param ref_operation reference to command to the previous set server status operation.
+ * @param index index to know which web server we check.
+ * @param expected_url url of the webhook
+ * @param expected_method method of the webhook
+ * @param expected_header header of the webhook
+ * @param expected_body body of the webhook
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_checkserver2 (const char *label,
+ const char *ref_operation,
+ unsigned int index,
+ const char *expected_url,
+ const char *expected_method,
+ const char *expected_header,
+ const char *expected_body);
+
/* ****** Specific traits supported by this component ******* */
diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am
index 7caaa7ea..e04b6c7f 100644
--- a/src/testing/Makefile.am
+++ b/src/testing/Makefile.am
@@ -221,6 +221,7 @@ EXTRA_DIST = \
test_key_rotation.sh \
test_key_rotation.conf \
test_kyc_api.conf \
+ test_merchant_api.conf \
test_merchant_api-cs.conf \
test_merchant_api-rsa.conf \
test_merchant_api_twisted-cs.conf \
diff --git a/src/testing/test.conf b/src/testing/test.conf
index 502d807a..1444f799 100644
--- a/src/testing/test.conf
+++ b/src/testing/test.conf
@@ -18,6 +18,7 @@ TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
# What currency do we use?
CURRENCY = EUR
CURRENCY_ROUND_UNIT = EUR:0.01
+AML_THRESHOLD = EUR:1000000
[taler-helper-crypto-rsa]
# Reduce from 1 year to speed up test
diff --git a/src/testing/test_merchant_api-cs.conf b/src/testing/test_merchant_api-cs.conf
index 1444f799..4d1c14b6 100644
--- a/src/testing/test_merchant_api-cs.conf
+++ b/src/testing/test_merchant_api-cs.conf
@@ -1,128 +1,5 @@
# This file is in the public domain.
-#
-[PATHS]
-# Persistent data storage for the testcase
-TALER_TEST_HOME = test_merchant_api_home/
-TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
-
-# Persistent data storage
-TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
-
-# Configuration files
-TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
-
-# Cached data, no big deal if lost
-TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
-
-[taler]
-# What currency do we use?
-CURRENCY = EUR
-CURRENCY_ROUND_UNIT = EUR:0.01
-AML_THRESHOLD = EUR:1000000
-
-[taler-helper-crypto-rsa]
-# Reduce from 1 year to speed up test
-LOOKAHEAD_SIGN = 24 days
-
-[taler-helper-crypto-eddsa]
-# Reduce from 1 year to speed up test
-LOOKAHEAD_SIGN = 24 days
-# Reduce from 12 weeks to ensure we have multiple
-DURATION = 14 days
-
-[bank]
-HTTP_PORT = 8082
-
-##########################################
-# Configuration for the merchant backend #
-##########################################
-
-[merchant]
-
-# Which port do we run the backend on? (HTTP server)
-PORT = 8080
-
-# Which plugin (backend) do we use for the DB.
-DB = postgres
-
-# This specifies which database the postgres backend uses.
-[merchantdb-postgres]
-CONFIG = postgres:///talercheck
-
-# Sections starting with "merchant-exchange-" specify trusted exchanges
-# (by the merchant)
-[merchant-exchange-test]
-MASTER_KEY = T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG
-EXCHANGE_BASE_URL = http://localhost:8081/
-CURRENCY = EUR
-
-
-#######################################################
-# Configuration for the auditor for the testcase
-#######################################################
-[auditor]
-BASE_URL = http://the.auditor/
-
-
-#######################################################
-# Configuration for ??? Is this used?
-#######################################################
-
-# Auditors must be in sections "auditor-", the rest of the section
-# name could be anything.
-[auditor-ezb]
-# Informal name of the auditor. Just for the user.
-NAME = European Central Bank
-
-# URL of the auditor (especially for in the future, when the
-# auditor offers an automated issue reporting system).
-# Not really used today.
-URL = http://taler.ezb.eu/
-
-# This is the important bit: the signing key of the auditor.
-PUBLIC_KEY = 9QXF7XY7E9VPV47B5Z806NDFSX2VJ79SVHHD29QEQ3BG31ANHZ60
-
-# Which currency is this auditor trusted for?
-CURRENCY = EUR
-
-
-###################################################
-# Configuration for the exchange for the testcase #
-###################################################
-
-[exchange]
-# How to access our database
-DB = postgres
-
-# HTTP port the exchange listens to
-PORT = 8081
-
-# Our public key
-MASTER_PUBLIC_KEY = T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG
-
-# Base URL of the exchange.
-BASE_URL = "http://localhost:8081/"
-
-
-[exchangedb-postgres]
-CONFIG = "postgres:///talercheck"
-
-
-[auditordb-postgres]
-CONFIG = postgres:///talercheck
-
-
-# Account of the EXCHANGE
-[exchange-account-exchange]
-# What is the exchange's bank account (with the "Taler Bank" demo system)?
-PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
-ENABLE_DEBIT = YES
-ENABLE_CREDIT = YES
-
-[exchange-accountcredentials-exchange]
-WIRE_GATEWAY_URL = "http://localhost:8082/2/"
-WIRE_GATEWAY_AUTH_METHOD = NONE
-
+@INLINE@ test_merchant_api.conf
[coin_eur_ct_1]
value = EUR:0.01
diff --git a/src/testing/test_merchant_api-rsa.conf b/src/testing/test_merchant_api-rsa.conf
index 53d470c1..44d8e978 100644
--- a/src/testing/test_merchant_api-rsa.conf
+++ b/src/testing/test_merchant_api-rsa.conf
@@ -1,128 +1,5 @@
# This file is in the public domain.
-#
-[PATHS]
-# Persistent data storage for the testcase
-TALER_TEST_HOME = test_merchant_api_home/
-TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
-
-# Persistent data storage
-TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
-
-# Configuration files
-TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
-
-# Cached data, no big deal if lost
-TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
-
-[taler]
-# What currency do we use?
-CURRENCY = EUR
-CURRENCY_ROUND_UNIT = EUR:0.01
-AML_THRESHOLD = EUR:1000000
-
-[taler-helper-crypto-rsa]
-# Reduce from 1 year to speed up test
-LOOKAHEAD_SIGN = 24 days
-
-[taler-helper-crypto-eddsa]
-# Reduce from 1 year to speed up test
-LOOKAHEAD_SIGN = 24 days
-# Reduce from 12 weeks to ensure we have multiple
-DURATION = 14 days
-
-[bank]
-HTTP_PORT = 8082
-
-##########################################
-# Configuration for the merchant backend #
-##########################################
-
-[merchant]
-
-# Which port do we run the backend on? (HTTP server)
-PORT = 8080
-
-# Which plugin (backend) do we use for the DB.
-DB = postgres
-
-# This specifies which database the postgres backend uses.
-[merchantdb-postgres]
-CONFIG = postgres:///talercheck
-
-# Sections starting with "merchant-exchange-" specify trusted exchanges
-# (by the merchant)
-[merchant-exchange-test]
-MASTER_KEY = T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG
-EXCHANGE_BASE_URL = http://localhost:8081/
-CURRENCY = EUR
-
-
-#######################################################
-# Configuration for the auditor for the testcase
-#######################################################
-[auditor]
-BASE_URL = http://the.auditor/
-
-
-#######################################################
-# Configuration for ??? Is this used?
-#######################################################
-
-# Auditors must be in sections "auditor-", the rest of the section
-# name could be anything.
-[auditor-ezb]
-# Informal name of the auditor. Just for the user.
-NAME = European Central Bank
-
-# URL of the auditor (especially for in the future, when the
-# auditor offers an automated issue reporting system).
-# Not really used today.
-URL = http://taler.ezb.eu/
-
-# This is the important bit: the signing key of the auditor.
-PUBLIC_KEY = 9QXF7XY7E9VPV47B5Z806NDFSX2VJ79SVHHD29QEQ3BG31ANHZ60
-
-# Which currency is this auditor trusted for?
-CURRENCY = EUR
-
-
-###################################################
-# Configuration for the exchange for the testcase #
-###################################################
-
-[exchange]
-# How to access our database
-DB = postgres
-
-# HTTP port the exchange listens to
-PORT = 8081
-
-# Our public key
-MASTER_PUBLIC_KEY = T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG
-
-# Base URL of the exchange.
-BASE_URL = "http://localhost:8081/"
-
-
-[exchangedb-postgres]
-CONFIG = "postgres:///talercheck"
-
-
-[auditordb-postgres]
-CONFIG = postgres:///talercheck
-
-
-# Account of the EXCHANGE
-[exchange-account-exchange]
-# What is the exchange's bank account (with the "Taler Bank" demo system)?
-PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
-ENABLE_DEBIT = YES
-ENABLE_CREDIT = YES
-
-[exchange-accountcredentials-exchange]
-WIRE_GATEWAY_URL = "http://localhost:8082/2/"
-WIRE_GATEWAY_AUTH_METHOD = NONE
-
+@INLINE@ test_merchant_api.conf
[coin_eur_ct_1]
value = EUR:0.01
diff --git a/src/testing/test_merchant_api.conf b/src/testing/test_merchant_api.conf
new file mode 100644
index 00000000..e0451124
--- /dev/null
+++ b/src/testing/test_merchant_api.conf
@@ -0,0 +1,124 @@
+# This file is in the public domain.
+#
+[PATHS]
+# Persistent data storage for the testcase
+TALER_TEST_HOME = test_merchant_api_home/
+TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/${USER:-}/taler-system-runtime/
+
+# Persistent data storage
+TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
+
+# Configuration files
+TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
+
+# Cached data, no big deal if lost
+TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
+
+[taler]
+# What currency do we use?
+CURRENCY = EUR
+CURRENCY_ROUND_UNIT = EUR:0.01
+AML_THRESHOLD = EUR:1000000
+
+[taler-helper-crypto-rsa]
+# Reduce from 1 year to speed up test
+LOOKAHEAD_SIGN = 24 days
+
+[taler-helper-crypto-eddsa]
+# Reduce from 1 year to speed up test
+LOOKAHEAD_SIGN = 24 days
+# Reduce from 12 weeks to ensure we have multiple
+DURATION = 14 days
+
+[bank]
+HTTP_PORT = 8082
+
+##########################################
+# Configuration for the merchant backend #
+##########################################
+
+[merchant]
+
+# Which port do we run the backend on? (HTTP server)
+PORT = 8080
+
+# Which plugin (backend) do we use for the DB.
+DB = postgres
+
+# This specifies which database the postgres backend uses.
+[merchantdb-postgres]
+CONFIG = postgres:///talercheck
+
+# Sections starting with "merchant-exchange-" specify trusted exchanges
+# (by the merchant)
+[merchant-exchange-test]
+MASTER_KEY = T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG
+EXCHANGE_BASE_URL = http://localhost:8081/
+CURRENCY = EUR
+
+
+#######################################################
+# Configuration for the auditor for the testcase
+#######################################################
+[auditor]
+BASE_URL = http://the.auditor/
+
+
+#######################################################
+# Configuration for ??? Is this used?
+#######################################################
+
+# Auditors must be in sections "auditor-", the rest of the section
+# name could be anything.
+[auditor-ezb]
+# Informal name of the auditor. Just for the user.
+NAME = European Central Bank
+
+# URL of the auditor (especially for in the future, when the
+# auditor offers an automated issue reporting system).
+# Not really used today.
+URL = http://taler.ezb.eu/
+
+# This is the important bit: the signing key of the auditor.
+PUBLIC_KEY = 9QXF7XY7E9VPV47B5Z806NDFSX2VJ79SVHHD29QEQ3BG31ANHZ60
+
+# Which currency is this auditor trusted for?
+CURRENCY = EUR
+
+
+###################################################
+# Configuration for the exchange for the testcase #
+###################################################
+
+[exchange]
+# How to access our database
+DB = postgres
+
+# HTTP port the exchange listens to
+PORT = 8081
+
+# Our public key
+MASTER_PUBLIC_KEY = T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG
+
+# Base URL of the exchange.
+BASE_URL = "http://localhost:8081/"
+
+
+[exchangedb-postgres]
+CONFIG = "postgres:///talercheck"
+
+
+[auditordb-postgres]
+CONFIG = postgres:///talercheck
+
+
+# Account of the EXCHANGE
+[exchange-account-exchange]
+# What is the exchange's bank account (with the "Taler Bank" demo system)?
+PAYTO_URI = "payto://x-taler-bank/localhost/2?receiver-name=2"
+ENABLE_DEBIT = YES
+ENABLE_CREDIT = YES
+
+[exchange-accountcredentials-exchange]
+WIRE_GATEWAY_URL = "http://localhost:8082/2/"
+WIRE_GATEWAY_AUTH_METHOD = NONE
diff --git a/src/testing/test_template.conf b/src/testing/test_template.conf
index 21bb6186..4fc0a2c3 100644
--- a/src/testing/test_template.conf
+++ b/src/testing/test_template.conf
@@ -8,6 +8,7 @@ TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/taler-system-runtime/
[taler]
CURRENCY = TESTKUDOS
CURRENCY_ROUND_UNIT = TESTKUDOS:0.01
+AML_THRESHOLD = EUR:1000000
[exchange]
MAX_KEYS_CACHING = forever
diff --git a/src/testing/testing_api_cmd_checkserver.c b/src/testing/testing_api_cmd_checkserver.c
index 1414bd1d..55f0b50d 100644
--- a/src/testing/testing_api_cmd_checkserver.c
+++ b/src/testing/testing_api_cmd_checkserver.c
@@ -33,7 +33,7 @@
/**
- * State for a "check_aml_decision" CMD.
+ * State for a "checkserver" CMD.
*/
struct CheckState
{
@@ -60,22 +60,22 @@ struct CheckState
/**
* Expected method of the pending webhook.
*/
- char *expected_method;
+ const char *expected_method;
/**
* Expected url of the pending webhook.
*/
- char *expected_url;
+ const char *expected_url;
/**
* Expected header of the pending webhook.
*/
- char *expected_header;
+ const char *expected_header;
/**
* Expected body of the pending webhook.
*/
- char *expected_body;
+ const char *expected_body;
};
@@ -93,56 +93,52 @@ checkserver_run (void *cls,
{
struct CheckState *cs = cls;
const struct TALER_TESTING_Command *ref;
+ char **expected_url;
+ char **expected_http_method;
+ char **expected_header;
+ char **expected_body;
+
(void) cmd;
cs->is = is;
-
ref = TALER_TESTING_interpreter_lookup_command (is,
cs->ref_operation);
-
-
if (NULL == ref)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "ref NULL\n");
+ "ref NULL\n");
GNUNET_break (0);
TALER_TESTING_interpreter_fail (is);
return;
}
-
- char **expected_url;
if (GNUNET_OK !=
TALER_TESTING_get_trait_urls (ref,
cs->index,
&expected_url))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Trait url does not work\n");
- GNUNET_break (0);
- TALER_TESTING_interpreter_fail (is);
- return;
- }
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Trait url does not work\n");
+ GNUNET_break (0);
+ TALER_TESTING_interpreter_fail (is);
+ return;
+ }
if (NULL == *expected_url)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Trait for url is NULL!?\n");
- GNUNET_break (0);
- TALER_TESTING_interpreter_fail (is);
- return;
- }
-
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Trait for url is NULL!?\n");
+ GNUNET_break (0);
+ TALER_TESTING_interpreter_fail (is);
+ return;
+ }
if (0 != strcmp (cs->expected_url,
*expected_url))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "URL does not match: `%s' != `%s'\n",
- cs->expected_url,
- *expected_url);
- TALER_TESTING_interpreter_fail (is);
- return;
- }
-
- char **expected_http_method;
-
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "URL does not match: `%s' != `%s'\n",
+ cs->expected_url,
+ *expected_url);
+ TALER_TESTING_interpreter_fail (is);
+ return;
+ }
if (GNUNET_OK !=
TALER_TESTING_get_trait_http_methods (ref,
cs->index,
@@ -150,16 +146,12 @@ checkserver_run (void *cls,
TALER_TESTING_interpreter_fail (is);
if (0 != strcmp (cs->expected_method,
*expected_http_method))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "http_method does not match\n");
- TALER_TESTING_interpreter_fail (is);
- return;
- }
-
-
- char **expected_header;
-
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "http_method does not match\n");
+ TALER_TESTING_interpreter_fail (is);
+ return;
+ }
if (GNUNET_OK !=
TALER_TESTING_get_trait_http_header (ref,
cs->index,
@@ -170,17 +162,14 @@ checkserver_run (void *cls,
( (NULL != cs->expected_header) &&
(0 != strcmp (cs->expected_header,
*expected_header)) ) )
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "header does not match: `%s' != `%s'\n",
- cs->expected_header,
- *expected_header);
- TALER_TESTING_interpreter_fail (is);
- return;
- }
-
- char **expected_body;
-
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "header does not match: `%s' != `%s'\n",
+ cs->expected_header,
+ *expected_header);
+ TALER_TESTING_interpreter_fail (is);
+ return;
+ }
if (GNUNET_OK !=
TALER_TESTING_get_trait_http_body (ref,
cs->index,
@@ -191,38 +180,27 @@ checkserver_run (void *cls,
( (NULL != cs->expected_body) &&
(0 != strcmp (cs->expected_body,
*expected_body) ) ) )
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "body does not match : `%s' and `%s'\n",
- cs->expected_body,
- *expected_body);
- TALER_TESTING_interpreter_fail (is);
- return;
- }
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "body does not match : `%s' and `%s'\n",
+ cs->expected_body,
+ *expected_body);
+ TALER_TESTING_interpreter_fail (is);
+ return;
+ }
TALER_TESTING_interpreter_next (is);
}
-/**
- * This function is used to check the web server
- *
- * @param label command label
- * @param ref_operation reference to command to the previous set server status operation.
- * @param index index to know which web server we check.
- * @param url of the webhook
- * @param http_method of the webhook
- * @param header of the webhook
- * @param body of the webhook
- */
struct TALER_TESTING_Command
TALER_TESTING_cmd_checkserver2 (const char *label,
const char *ref_operation,
unsigned int index,
- char *expected_url,
- char *expected_method,
- char *expected_header,
- char *expected_body)
+ const char *expected_url,
+ const char *expected_method,
+ const char *expected_header,
+ const char *expected_body)
{
struct CheckState *cs;
@@ -260,4 +238,5 @@ TALER_TESTING_cmd_checkserver (const char *label,
"5.0 EUR");
}
+
/* end of testing_api_cmd_checkserver.c */
diff --git a/src/testing/testing_api_cmd_webhook.c b/src/testing/testing_api_cmd_webhook.c
index e73f3502..8c5df5b9 100644
--- a/src/testing/testing_api_cmd_webhook.c
+++ b/src/testing/testing_api_cmd_webhook.c
@@ -118,9 +118,9 @@ webhook_cleanup (void *cls,
*/
static enum GNUNET_GenericReturnValue
webhook_traits (void *cls,
- const void **ret,
- const char *trait,
- unsigned int index)
+ const void **ret,
+ const char *trait,
+ unsigned int index)
{
struct WebhookState *ws = cls;
struct TALER_TESTING_Trait traits[] = {
@@ -135,13 +135,6 @@ webhook_traits (void *cls,
}
-
-/**
- * to use the 'taler-merchant-webhook' program.
- *
- * @param label command label.
- * @param configuration file used by the webhook.
- */
struct TALER_TESTING_Command
TALER_TESTING_cmd_webhook (const char *label,
const char *config_filename)