[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-donau] branch master updated: [lib] resolve errors
From: |
gnunet |
Subject: |
[taler-donau] branch master updated: [lib] resolve errors |
Date: |
Thu, 11 Jan 2024 00:07:28 +0100 |
This is an automated email from the git hooks/post-receive script.
lukas-matyja pushed a commit to branch master
in repository donau.
The following commit(s) were added to refs/heads/master by this push:
new d5e3574 [lib] resolve errors
new bfb45fd Merge remote-tracking branch 'refs/remotes/origin/master'
d5e3574 is described below
commit d5e3574e32ac64555512f60dab2277ed5aa16ba7
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
AuthorDate: Thu Jan 11 00:07:55 2024 +0100
[lib] resolve errors
---
src/Makefile.am | 4 +-
src/include/donau_crypto_lib.h | 4 +-
src/include/donau_json_lib.h | 21 +-
src/include/donau_service.h | 12 +-
src/json/donau_json.c | 79 ++-
src/lib/donau_api_handle.c | 100 ++-
src/lib/donau_api_handle.h | 31 -
src/testing/Makefile.am | 7 +-
src/testing/test_api_cmd_get_donau.c | 88 ---
src/testing/test_donau_api.c | 1178 +---------------------------------
src/testing/testing_api_loop.c | 68 ++
src/util/donau_signatures.c | 6 +-
12 files changed, 233 insertions(+), 1365 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index c71890d..021ed99 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -18,6 +18,6 @@ SUBDIRS = \
$(PQ_DIR) \
donaudb \
donau \
- #lib \
+ lib \
donau-tools \
- #testing
+ testing
diff --git a/src/include/donau_crypto_lib.h b/src/include/donau_crypto_lib.h
index 32a7500..e8219ee 100644
--- a/src/include/donau_crypto_lib.h
+++ b/src/include/donau_crypto_lib.h
@@ -299,7 +299,7 @@ DONAU_charity_budi_key_pair_verify (
void
DONAU_donation_statement_sign (
const struct TALER_Amount *amount_tot,
- const unsigned int year,
+ const uint32_t year,
const struct DONAU_HashDonorTaxId *i,
const struct DONAU_PrivateKeyP *donau_priv,
struct DONAU_DonauSignatureP *statement_sig);
@@ -318,7 +318,7 @@ DONAU_donation_statement_sign (
enum GNUNET_GenericReturnValue
DONAU_donation_statement_verify (
const struct TALER_Amount *amount_tot,
- const unsigned int year,
+ const uint32_t year,
const struct DONAU_HashDonorTaxId *i,
const struct DONAU_DonauPublicKeyP *donau_pub,
const struct DONAU_DonauSignatureP *statement_sig);
diff --git a/src/include/donau_json_lib.h b/src/include/donau_json_lib.h
index 9dcafe6..2a1c67b 100644
--- a/src/include/donau_json_lib.h
+++ b/src/include/donau_json_lib.h
@@ -24,8 +24,11 @@
#include <jansson.h>
#include <gnunet/gnunet_json_lib.h>
#include <gnunet/gnunet_curl_lib.h>
+#include <gnunet/gnunet_json_lib.h>
#include "taler/taler_util.h"
#include "taler/taler_error_codes.h"
+#include "donau_util.h"
+#include "taler/taler_json_lib.h"
/**
* Generate a parser specification for a donation unit public key of a given
@@ -40,4 +43,20 @@ struct GNUNET_JSON_Specification
DONAU_JSON_spec_donation_unit_pub_cipher (
const char *field,
enum GNUNET_CRYPTO_BlindSignatureAlgorithm cipher,
- struct DONAU_DonationUnitPublicKey *pk);
\ No newline at end of file
+ struct DONAU_DonationUnitPublicKey *pk);
+
+
+/**
+ * Generate a parser for a group of donation units.
+ *
+ * @param[in] field name of the field, maybe NULL
+ * @param[in] currency name of the currency
+ * @param[out] group donation unit group information
+ * @return corresponding field spec
+ */
+struct GNUNET_JSON_Specification
+DONAU_JSON_spec_donation_unit_group (const char *field,
+ const char *currency,
+ struct DONAU_DonationUnitGroup *group);
+
+#endif
\ No newline at end of file
diff --git a/src/include/donau_service.h b/src/include/donau_service.h
index 9853241..89baa8a 100644
--- a/src/include/donau_service.h
+++ b/src/include/donau_service.h
@@ -47,7 +47,7 @@ struct DONAU_SigningPublicKeyAndValidity
/**
* Tax year this key is valid for.
*/
- unsigned int year;
+ uint32_t year;
};
@@ -69,7 +69,7 @@ struct DONAU_DonationUnitInformation
/**
* Year of validity
*/
- unsigned int year;
+ uint32_t year;
};
@@ -383,7 +383,7 @@ DONAU_keys_decref (struct DONAU_Keys *keys);
// enum GNUNET_GenericReturnValue
// DONAU_test_signing_key (
// const struct DONAU_Keys *keys,
-// const unsigned int year,
+// const uint32_t year,
// const struct DONAU_DonauPublicKeyP *pub);
@@ -409,7 +409,7 @@ DONAU_get_donation_unit_key (
* @return details about the given donation unit key, returns NULL
* if the key is not available or deprecated.
*/
-const struct DONAU_DonationUnitPublicKey *
+const struct DONAU_DonationUnitInformation *
DONAU_get_donation_unit_key_by_hash (
const struct DONAU_Keys *keys,
const struct DONAU_DonationUnitHashP *hc);
@@ -459,7 +459,7 @@ struct DONAU_BatchIssueReceipts
struct
{
- unsigned int num_donau_sigs;
+ uint32_t num_donau_sigs;
/**
* Blind signature provided by the donau
@@ -920,7 +920,7 @@ struct CharityHistoryYear
/**
* year
*/
- unsigned int year;
+ uint32_t year;
/**
* final donation amount at the end of @a year;
diff --git a/src/json/donau_json.c b/src/json/donau_json.c
index e14f707..6aebb67 100644
--- a/src/json/donau_json.c
+++ b/src/json/donau_json.c
@@ -24,7 +24,6 @@
#include "taler/taler_json_lib.h"
#include <unistr.h>
#include "donau_json_lib.h"
-#include "donau_util.h"
/**
* Parse given JSON object partially into a donation unit public key.
@@ -134,5 +133,83 @@ DONAU_JSON_spec_donation_unit_pub_cipher (const char
*field,
.ptr = pk
};
+ return ret;
+}
+
+/**
+ * Convert string value to numeric cipher value.
+ *
+ * @param cipher_s input string
+ * @return numeric cipher value
+ */
+static enum GNUNET_CRYPTO_BlindSignatureAlgorithm
+string_to_cipher (const char *cipher_s)
+{
+ if (0 == strcasecmp (cipher_s,
+ "RSA"))
+ return GNUNET_CRYPTO_BSA_RSA;
+ if (0 == strcasecmp (cipher_s,
+ "CS"))
+ return GNUNET_CRYPTO_BSA_CS;
+ return GNUNET_CRYPTO_BSA_INVALID;
+}
+
+static enum GNUNET_GenericReturnValue
+parse_donation_unit_group (void *cls,
+ json_t *root,
+ struct GNUNET_JSON_Specification *spec)
+{
+ struct DonationUnitGroup *group = spec->ptr;
+ const char *cipher;
+ const char *currency = cls;
+ struct GNUNET_JSON_Specification gspec[] = {
+ GNUNET_JSON_spec_string ("cipher",
+ &cipher),
+ TALER_JSON_spec_amount ("value",
+ currency,
+ &group->value),
+ GNUNET_JSON_spec_end ()
+ };
+ const char *emsg;
+ unsigned int eline;
+
+ if (GNUNET_OK !=
+ GNUNET_JSON_parse (root,
+ gspec,
+ &emsg,
+ &eline))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Failed to parse %s at %u: %s\n",
+ spec[eline].field,
+ eline,
+ emsg);
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+
+ group->cipher = string_to_cipher (cipher);
+ if (GNUNET_CRYPTO_BSA_INVALID == group->cipher)
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+
+ return GNUNET_OK;
+}
+
+struct GNUNET_JSON_Specification
+DONAU_JSON_spec_donation_unit_group (const char *name,
+ const char *currency,
+ struct DONAU_DonationUnitGroup *group)
+{
+ struct GNUNET_JSON_Specification ret = {
+ .cls = (void *) currency,
+ .parser = &parse_donation_unit_group,
+ .field = name,
+ .ptr = group,
+ .ptr_size = sizeof(*group)
+ };
+
return ret;
}
\ No newline at end of file
diff --git a/src/lib/donau_api_handle.c b/src/lib/donau_api_handle.c
index a0e07e6..42a1623 100644
--- a/src/lib/donau_api_handle.c
+++ b/src/lib/donau_api_handle.c
@@ -30,11 +30,12 @@
#include "taler/taler_json_lib.h"
#include "donau_service.h"
#include "taler/taler_signatures.h"
-#include "donau_api_handle.h"
#include "donau_api_curl_defaults.h"
-//#include "backoff.h"
#include "taler/taler_curl_lib.h"
#include <gnunet/gnunet_util_lib.h>
+#include "donau_json_lib.h"
+#include "taler/taler_util.h"
+#include "taler/taler_curl_lib.h"
/**
* Which version of the Donau protocol is implemented
@@ -143,7 +144,7 @@ parse_json_signkey (struct
DONAU_SigningPublicKeyAndValidity *sign_key,
struct GNUNET_JSON_Specification spec[] = {
GNUNET_JSON_spec_fixed_auto ("key",
&sign_key->key),
- GNUNET_JSON_spec_varsize ("year_of_validity",
+ GNUNET_JSON_spec_uint32 ("year_of_validity",
&sign_key->year),
GNUNET_JSON_spec_end ()
};
@@ -353,9 +354,9 @@ decode_keys_json (const json_t *resp_obj,
struct DONAU_DonationUnitGroup group = {0}; // what must be given to be
a part of a group?
const json_t *donation_unit_keys_array;
struct GNUNET_JSON_Specification group_spec[] = {
- TALER_JSON_spec_denomination_group (NULL, // TODO: write method
- key_data->currency,
- &group),
+ // DONAU_JSON_spec_donation_unit_group (NULL,
+ // key_data->currency,
+ // &group),
GNUNET_JSON_spec_array_const ("donation_units",
&donation_unit_keys_array),
GNUNET_JSON_spec_end ()
@@ -378,15 +379,15 @@ decode_keys_json (const json_t *resp_obj,
donation unit. Required to make the validity check inside
parse_json_denomkey_partially pass */
struct DONAU_DonationUnitInformation dk = {
- .value = group.value,
- .year = group.year
+ .value = group.value
+ //.year = group.year
};
bool found = false;
struct GNUNET_JSON_Specification kspec[] = {
- DONAU_JSON_spec_donation_unit_pub_cipher (NULL,
- group.cipher,
- &dk->key),
+ // DONAU_JSON_spec_donation_unit_pub_cipher (NULL,
+ // group.cipher,
+ // &dk->key),
GNUNET_JSON_spec_end ()
};
@@ -403,7 +404,7 @@ decode_keys_json (const json_t *resp_obj,
j<key_data->num_donation_unit_keys;
j++)
{
- if (0 == donation_units_cmp (&dk.key,
+ if (0 == donation_units_cmp (&dk,
&key_data->donation_unit_keys[j]))
{
found = true;
@@ -488,7 +489,6 @@ keys_completed_cb (void *cls,
if (GNUNET_OK !=
decode_keys_json (j,
- true,
kd,
&kresp.details.ok.compat))
{
@@ -554,41 +554,30 @@ keys_completed_cb (void *cls,
* @param userdata the `struct DONAU_GetKeysHandle`
* @return `size * nitems` on success (everything else aborts)
*/
-static size_t
-header_cb (char *buffer,
- size_t size,
- size_t nitems,
- void *userdata)
-{
- struct DONAU_GetKeysHandle *kr = userdata;
- size_t total = size * nitems;
- char *val;
-
- if (total < strlen (MHD_HTTP_HEADER_EXPIRES ": "))
- return total;
- if (0 != strncasecmp (MHD_HTTP_HEADER_EXPIRES ": ",
- buffer,
- strlen (MHD_HTTP_HEADER_EXPIRES ": ")))
- return total;
- val = GNUNET_strndup (&buffer[strlen (MHD_HTTP_HEADER_EXPIRES ": ")],
- total - strlen (MHD_HTTP_HEADER_EXPIRES ": "));
- GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- "Found %s header `%s'\n",
- MHD_HTTP_HEADER_EXPIRES,
- val);
- // if (GNUNET_OK !=
- // parse_date_string (val,
- // &kr->expire))
- // {
- // GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- // "Failed to parse %s-header `%s'\n",
- // MHD_HTTP_HEADER_EXPIRES,
- // val);
- // kr->expire = GNUNET_TIME_UNIT_ZERO_TS;
- // }
- GNUNET_free (val);
- return total;
-}
+// static size_t
+// header_cb (char *buffer,
+// size_t size,
+// size_t nitems,
+// void *userdata)
+// {
+// size_t total = size * nitems;
+// char *val;
+
+// if (total < strlen (MHD_HTTP_HEADER_EXPIRES ": "))
+// return total;
+// if (0 != strncasecmp (MHD_HTTP_HEADER_EXPIRES ": ",
+// buffer,
+// strlen (MHD_HTTP_HEADER_EXPIRES ": ")))
+// return total;
+// val = GNUNET_strndup (&buffer[strlen (MHD_HTTP_HEADER_EXPIRES ": ")],
+// total - strlen (MHD_HTTP_HEADER_EXPIRES ": "));
+// GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+// "Found %s header `%s'\n",
+// MHD_HTTP_HEADER_EXPIRES,
+// val);
+// GNUNET_free (val);
+// return total;
+// }
struct DONAU_GetKeysHandle *
@@ -707,7 +696,7 @@ DONAU_get_donation_unit_key_by_hash (
for (unsigned int i = 0; i<keys->num_donation_unit_keys; i++)
// memcmp needs two pointer of the same type
if (0 == GNUNET_memcmp (&hc->hash,
-
&keys->donation_unit_keys[i].key.bsign_pub_key.pub_key_hash))
+
&keys->donation_unit_keys[i].key.bsign_pub_key->pub_key_hash))
return &keys->donation_unit_keys[i];
return NULL;
}
@@ -782,7 +771,6 @@ DONAU_keys_from_json (const json_t *j)
keys = GNUNET_new (struct DONAU_Keys);
if (GNUNET_OK !=
decode_keys_json (jkeys,
- false,
keys,
&compat))
{
@@ -865,7 +853,7 @@ DONAU_keys_to_json (const struct DONAU_Keys *kd)
{
json_t *keys;
json_t *signkeys;
- json_t *donation_units;
+ json_t *donation_units_by_group;
signkeys = json_array ();
GNUNET_assert (NULL != signkeys);
@@ -876,9 +864,9 @@ DONAU_keys_to_json (const struct DONAU_Keys *kd)
signkey = GNUNET_JSON_PACK (
GNUNET_JSON_pack_data_auto ("key",
- &sk->key),
- GNUNET_JSON_pack_uint64 ("year",
- &sk->year));
+ &sk->key));
+ // GNUNET_JSON_pack_uint32 ("year",
+ // &sk->year));
GNUNET_assert (NULL != signkey);
GNUNET_assert (0 ==
json_array_append_new (signkeys,
@@ -943,7 +931,7 @@ DONAU_keys_to_json (const struct DONAU_Keys *kd)
GNUNET_assert (false);
}
donation_unit = GNUNET_JSON_PACK (
- GNUNET_JSON_pack_data_varsize ("year",
+ GNUNET_JSON_pack_uint64 ("year",
dk->year),
key_spec
);
@@ -953,7 +941,7 @@ DONAU_keys_to_json (const struct DONAU_Keys *kd)
}
GNUNET_CONTAINER_multihashmap_iterate (dbg,
&add_grp,
- donation_unit_by_group);
+ donation_units_by_group);
GNUNET_CONTAINER_multihashmap_destroy (dbg);
}
diff --git a/src/lib/donau_api_handle.h b/src/lib/donau_api_handle.h
deleted file mode 100644
index 4bba64b..0000000
--- a/src/lib/donau_api_handle.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- This file is part of TALER
- Copyright (C) 2014, 2015, 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 published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
-
- TALER is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of CHARITYABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- TALER; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>
-*/
-/**
- * @file lib/donau_api_handle.h
- * @brief Internal interface to the handle part of the donau's HTTP API
- * @author Christian Grothoff
- */
-#ifndef DONAU_API_HANDLE_H
-#define DONAU_API_HANDLE_H
-
-#include <gnunet/gnunet_curl_lib.h>
-#include "donau_service.h"
-#include <taler/taler_util.h>
-
-
-/* end of donau_api_handle.h */
-#endif
diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am
index 92bafb9..d331f77 100644
--- a/src/testing/Makefile.am
+++ b/src/testing/Makefile.am
@@ -23,7 +23,7 @@ libdonautesting_la_LDFLAGS = \
-version-info 0:0:0 \
-no-undefined
libdonautesting_la_SOURCES = \
- testing_api_cmd_get_donau.c
+ test_api_cmd_get_donau.c
AM_TESTS_ENVIRONMENT=export DONAU_PREFIX=$${DONAU_PREFIX:-@libdir@};export
PATH=$${DONAU_PREFIX:-@prefix@}/bin:$$PATH;
@@ -69,8 +69,3 @@ EXTRA_DIST = \
coins-rsa.conf \
test_donau_api.conf
-libdonautesting_la_LDFLAGS = \
- -version-info 0:0:0 \
- -no-undefined
-libdonautesting_la_SOURCES = \
- test_api_cmd_get_donau.c
diff --git a/src/testing/test_api_cmd_get_donau.c
b/src/testing/test_api_cmd_get_donau.c
index 7d53f1d..5a7f536 100644
--- a/src/testing/test_api_cmd_get_donau.c
+++ b/src/testing/test_api_cmd_get_donau.c
@@ -54,17 +54,6 @@ struct GetDonauState
*/
char *donau_url;
- /**
- * Label of a command to use to obtain existing
- * keys.
- */
- // const char *last_keys_ref;
-
- /**
- * Last denomination date we received when doing this request.
- */
- // struct GNUNET_TIME_Timestamp my_denom_date;
-
/**
* Are we waiting for /keys before continuing?
*/
@@ -99,7 +88,6 @@ cert_cb (void *cls,
TALER_TESTING_interpreter_next (is);
return;
}
- // ges->my_denom_date = kr->details.ok.keys->last_denom_issue_date;
return;
default:
GNUNET_break (0);
@@ -130,7 +118,6 @@ get_donau_run (void *cls,
struct TALER_TESTING_Interpreter *is)
{
struct GetDonauState *ges = cls;
- // struct DONAU_Keys *xkeys = NULL;
(void) cmd;
if (NULL == ges->donau_url)
@@ -139,81 +126,13 @@ get_donau_run (void *cls,
TALER_TESTING_interpreter_fail (is);
return;
}
- // if (NULL != ges->last_keys_ref)
- // {
- // const struct TALER_TESTING_Command *state_cmd;
- // struct TALER_EXCHANGE_Keys *old_keys;
- // const char *donau_url;
- // json_t *s_keys;
-
- // state_cmd
- // = TALER_TESTING_interpreter_lookup_command (is,
- // ges->last_keys_ref);
- // if (NULL == state_cmd)
- // {
- // /* Command providing serialized keys not found. */
- // GNUNET_break (0);
- // TALER_TESTING_interpreter_fail (is);
- // return;
- // }
- // if (GNUNET_OK !=
- // TALER_TESTING_get_trait_keys (state_cmd,
- // &old_keys))
- // {
- // GNUNET_break (0);
- // TALER_TESTING_interpreter_fail (is);
- // return;
- // }
- // if (NULL == old_keys)
- // {
- // GNUNET_break (0);
- // TALER_TESTING_interpreter_fail (is);
- // return;
- // }
- // if (GNUNET_OK !=
- // TALER_TESTING_get_trait_exchange_url (state_cmd,
- // &donau_url))
- // {
- // GNUNET_break (0);
- // TALER_TESTING_interpreter_fail (is);
- // return;
- // }
- // if (0 != strcmp (donau_url,
- // ges->donau_url))
- // {
- // GNUNET_break (0);
- // TALER_TESTING_interpreter_fail (is);
- // return;
- // }
- // s_keys = TALER_EXCHANGE_keys_to_json (old_keys);
- // if (NULL == s_keys)
- // {
- // GNUNET_break (0);
- // TALER_TESTING_interpreter_fail (is);
- // return;
- // }
- // xkeys = TALER_EXCHANGE_keys_from_json (s_keys);
- // if (NULL == xkeys)
- // {
- // GNUNET_break (0);
- // json_dumpf (s_keys,
- // stderr,
- // JSON_INDENT (2));
- // json_decref (s_keys);
- // TALER_TESTING_interpreter_fail (is);
- // return;
- // }
- // json_decref (s_keys);
- // }
ges->is = is;
ges->donau
= DONAU_get_keys (TALER_TESTING_interpreter_get_context (is),
ges->donau_url,
- // xkeys,
&cert_cb,
ges);
- // DONAU_keys_decref (xkeys);
if (NULL == ges->donau)
{
GNUNET_break (0);
@@ -271,10 +190,7 @@ get_donau_traits (void *cls,
if (NULL != ges->keys)
{
struct TALER_TESTING_Trait traits[] = {
- // TALER_TESTING_make_trait_donau_keys (ges->keys),
TALER_TESTING_make_trait_exchange_url (ges->donau_url),
- // TALER_TESTING_make_trait_timestamp (0,
- // &ges->my_denom_date),
TALER_TESTING_trait_end ()
};
@@ -287,8 +203,6 @@ get_donau_traits (void *cls,
{
struct TALER_TESTING_Trait traits[] = {
TALER_TESTING_make_trait_exchange_url (ges->donau_url),
- // TALER_TESTING_make_trait_timestamp (0,
- // &ges->my_denom_date),
TALER_TESTING_trait_end ()
};
@@ -331,7 +245,6 @@ struct TALER_TESTING_Command
TALER_TESTING_cmd_get_donau (
const char *label,
const struct GNUNET_CONFIGURATION_Handle *cfg,
- // const char *last_keys_ref,
bool wait_for_keys,
bool load_private_key)
{
@@ -339,7 +252,6 @@ TALER_TESTING_cmd_get_donau (
ges = GNUNET_new (struct GetDonauState);
ges->donau_url = get_donau_base_url (cfg);
- // ges->last_keys_ref = last_keys_ref;
ges->wait_for_keys = wait_for_keys;
{
struct TALER_TESTING_Command cmd = {
diff --git a/src/testing/test_donau_api.c b/src/testing/test_donau_api.c
index 4d3b900..5b613f7 100644
--- a/src/testing/test_donau_api.c
+++ b/src/testing/test_donau_api.c
@@ -22,6 +22,7 @@
* @author Sree Harsha Totakura <sreeharsha@totakura.in>
* @author Christian Grothoff
* @author Marcello Stanisci
+ * @author Lukas Matyja
*/
#include "taler/platform.h"
#include "taler/taler_util.h"
@@ -32,9 +33,8 @@
#include <gnunet/gnunet_testing_lib.h>
#include <microhttpd.h>
#include "taler/taler_bank_service.h"
-#include "taler/taler_fakebank_lib.h"
#include "taler/taler_testing_lib.h"
-#include "taler/taler_extensions.h"
+#include "donau_testing_lib.h"
/**
* Configuration file we use. One (big) configuration is used
@@ -42,12 +42,6 @@
*/
static char *config_file;
-/**
- * Special configuration file to use when we want reserves
- * to expire 'immediately'.
- */
-static char *config_file_expire_reserve_now;
-
/**
* Our credentials.
*/
@@ -62,39 +56,6 @@ static struct TALER_TESTING_Credentials cred;
*/
static bool uses_cs;
-/**
- * Execute the taler-exchange-wirewatch command with
- * our configuration file.
- *
- * @param label label to use for the command.
- */
-#define CMD_EXEC_WIREWATCH(label) \
- TALER_TESTING_cmd_exec_wirewatch2 (label, config_file, "exchange-account-2")
-
-/**
- * Execute the taler-exchange-aggregator, closer and transfer commands with
- * our configuration file.
- *
- * @param label label to use for the command.
- */
-#define CMD_EXEC_AGGREGATOR(label) \
- TALER_TESTING_cmd_sleep ("sleep-before-aggregator", 2), \
- TALER_TESTING_cmd_exec_aggregator (label "-aggregator", config_file), \
- TALER_TESTING_cmd_exec_transfer (label "-transfer", 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_admin_add_incoming (label, amount, \
- &cred.ba, \
- cred.user42_payto)
-
/**
* Main function that will tell the interpreter what commands to
* run.
@@ -106,1127 +67,9 @@ static void
run (void *cls,
struct TALER_TESTING_Interpreter *is)
{
- /**
- * Test withdrawal plus spending.
- */
- //struct TALER_TESTING_Command withdraw[] = {
- /**
- * Move money to the exchange's bank account.
- */
- // CMD_TRANSFER_TO_EXCHANGE ("create-reserve-1",
- // "EUR:6.02"),
- // TALER_TESTING_cmd_reserve_poll ("poll-reserve-1",
- // "create-reserve-1",
- // "EUR:6.02",
- // GNUNET_TIME_UNIT_MINUTES,
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_check_bank_admin_transfer ("check-create-reserve-1",
- // "EUR:6.02",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "create-reserve-1"),
- // /**
- // * Make a reserve exist, according to the previous
- // * transfer.
- // */
- // D_EXEC_WIREWATCH ("wirewatch-1"),
- // TALER_TESTING_cmd_reserve_poll_finish ("finish-poll-reserve-1",
- // GNUNET_TIME_UNIT_SECONDS,
- // "poll-reserve-1"),
- // /**
- // * Withdraw EUR:5.
- // */
- // TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-1",
- // "create-reserve-1",
- // "EUR:5",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // /**
- // * Withdraw EUR:1 using the SAME private coin key as for the previous
coin
- // * (in violation of the specification, to be detected on spending!).
- // * However, note that this does NOT work with 'CS', as for a different
- // * denomination we get different R0/R1 values from the exchange, and
- // * thus will generate a different coin private key as R0/R1 are hashed
- // * into the coin priv. So here, we fail to 'reuse' the key due to the
- // * cryptographic construction!
- // */
- // TALER_TESTING_cmd_withdraw_amount_reuse_key ("withdraw-coin-1x",
- // "create-reserve-1",
- // "EUR:1",
- // 0, /* age restriction off
*/
- // "withdraw-coin-1",
- // MHD_HTTP_OK),
- // /**
- // * Check the reserve is depleted.
- // */
- // TALER_TESTING_cmd_status ("status-1",
- // "create-reserve-1",
- // "EUR:0",
- // MHD_HTTP_OK),
- // /*
- // * Try to overdraw.
- // */
- // TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-2",
- // "create-reserve-1",
- // "EUR:5",
- // 0, /* age restriction off */
- // MHD_HTTP_CONFLICT),
- // TALER_TESTING_cmd_end ()
- // };
-
- // //struct TALER_TESTING_Command spend[] = {
- // /**
- // * Spend the coin.
- // */
- // //TALER_TESTING_cmd_deposit ("deposit-simple",
- // "withdraw-coin-1",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:5",
- // MHD_HTTP_OK),
- // //TALER_TESTING_cmd_deposit_replay ("deposit-simple-replay-1",
- // "deposit-simple",
- // MHD_HTTP_OK),
- // //TALER_TESTING_cmd_sleep ("sleep-before-deposit-replay",
- // 1),
- // //TALER_TESTING_cmd_deposit_replay ("deposit-simple-replay-2",
- // "deposit-simple",
- // MHD_HTTP_OK),
- // /* This creates a conflict, as we have the same coin public key
(reuse!),
- // but different denomination public keys (which is not allowed).
- // However, note that this does NOT work with 'CS', as for a different
- // denomination we get different R0/R1 values from the exchange, and
- // thus will generate a different coin private key as R0/R1 are hashed
- // into the coin priv. So here, we fail to 'reuse' the key due to the
- // cryptographic construction! */
- // //TALER_TESTING_cmd_deposit ("deposit-reused-coin-key-failure",
- // "withdraw-coin-1x",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:1",
- // uses_cs
- // ? MHD_HTTP_OK
- // : MHD_HTTP_CONFLICT),
- // /**
- // * Try to double spend using different wire details.
- // */
- // //TALER_TESTING_cmd_deposit ("deposit-double-1",
- // "withdraw-coin-1",
- // 0,
- // cred.user43_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:5",
- // MHD_HTTP_CONFLICT),
- // /* Try to double spend using a different transaction id.
- // * The test needs the contract terms to differ. This
- // * is currently the case because of the "timestamp" field,
- // * which is set automatically by #TALER_TESTING_cmd_deposit().
- // * This could theoretically fail if at some point a deposit
- // * command executes in less than 1 ms. *///
- // //TALER_TESTING_cmd_deposit ("deposit-double-1",
- // "withdraw-coin-1",
- // 0,
- // cred.user43_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:5",
- // MHD_HTTP_CONFLICT),
- // /**
- // * Try to double spend with different proposal.
- // */
- // //TALER_TESTING_cmd_deposit ("deposit-double-2",
- // "withdraw-coin-1",
- // 0,
- // cred.user43_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":2}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:5",
- // MHD_HTTP_CONFLICT),
- // TALER_TESTING_cmd_end ()
- // };
-
- // struct TALER_TESTING_Command refresh[] = {
- // /**
- // * Try to melt the coin that shared the private key with another
- // * coin (should fail). Note that in the CS-case, we fail also
- // * with MHD_HTTP_CONFLICT, but for a different reason: here it
- // * is not a denomination conflict, but a double-spending conflict.
- // */
- // //TALER_TESTING_cmd_melt ("refresh-melt-reused-coin-key-failure",
- // "withdraw-coin-1x",
- // MHD_HTTP_CONFLICT,
- // NULL),
-
- // /* Fill reserve with EUR:5, 1ct is for fees. */
- // //CMD_TRANSFER_TO_EXCHANGE ("refresh-create-reserve-1",
- // "EUR:5.01"),
- // //TALER_TESTING_cmd_check_bank_admin_transfer
("ck-refresh-create-reserve-1",
- // "EUR:5.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- //
"refresh-create-reserve-1"),
- // /**
- // * Make previous command effective.
- // */
- // //CMD_EXEC_WIREWATCH ("wirewatch-2"),
- // /**
- // * Withdraw EUR:5.
- // */
- // //TALER_TESTING_cmd_withdraw_amount ("refresh-withdraw-coin-1",
- // "refresh-create-reserve-1",
- // "EUR:5",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // /* Try to partially spend (deposit) 1 EUR of the 5 EUR coin
- // * (in full) (merchant would receive EUR:0.99 due to 1 ct
- // * deposit fee)
- // */
- // //TALER_TESTING_cmd_deposit ("refresh-deposit-partial",
- // "refresh-withdraw-coin-1",
- // 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_double ("refresh-melt-1",
- // "refresh-withdraw-coin-1",
- // MHD_HTTP_OK,
- // NULL),
- // /**
- // * Complete (successful) melt operation, and
- // * withdraw the coins
- // */
- // //TALER_TESTING_cmd_refresh_reveal ("refresh-reveal-1",
- // "refresh-melt-1",
- // MHD_HTTP_OK),
- // /**
- // * Do it again to check idempotency
- // */
- // //TALER_TESTING_cmd_refresh_reveal ("refresh-reveal-1-idempotency",
- // "refresh-melt-1",
- // MHD_HTTP_OK),
- // /**
- // * Test that /refresh/link works
- // */
- // //TALER_TESTING_cmd_refresh_link ("refresh-link-1",
- // "refresh-reveal-1",
- // MHD_HTTP_OK),
- // /**
- // * Try to spend a refreshed EUR:1 coin
- // */
- // //TALER_TESTING_cmd_deposit ("refresh-deposit-refreshed-1a",
- // "refresh-reveal-1-idempotency",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":3}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:1",
- // MHD_HTTP_OK),
- // /**
- // * Try to spend a refreshed EUR:0.1 coin
- // */
- // TALER_TESTING_cmd_deposit ("refresh-deposit-refreshed-1b",
- // "refresh-reveal-1",
- // 3,
- // cred.user43_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":3}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:0.1",
- // MHD_HTTP_OK),
- // /* Test running a failing melt operation (same operation
- // * again must fail) */
- // TALER_TESTING_cmd_melt ("refresh-melt-failing",
- // "refresh-withdraw-coin-1",
- // MHD_HTTP_CONFLICT,
- // NULL),
- // /* Test running a failing melt operation (on a coin that
- // was itself revealed and subsequently deposited) */
- // TALER_TESTING_cmd_melt ("refresh-melt-failing-2",
- // "refresh-reveal-1",
- // MHD_HTTP_CONFLICT,
- // NULL),
-
- // TALER_TESTING_cmd_end ()
- // };
-
- // /**
- // * Test withdrawal with age restriction. Success is expected, so it MUST
be
- // * called _after_ TALER_TESTING_cmd_exec_offline_sign_extensions is
called,
- // * i. e. age restriction is activated in the exchange!
- // *
- // * TODO: create a test that tries to withdraw coins with age restriction
but
- // * (expectedly) fails because the exchange doesn't support age restriction
- // * yet.
- // */
- // struct TALER_TESTING_Command withdraw_age[] = {
- // /**
- // * Move money to the exchange's bank account.
- // */
- // CMD_TRANSFER_TO_EXCHANGE ("create-reserve-age",
- // "EUR:6.01"),
- // TALER_TESTING_cmd_check_bank_admin_transfer ("check-create-reserve-age",
- // "EUR:6.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "create-reserve-age"),
- // /**
- // * Make a reserve exist, according to the previous
- // * transfer.
- // */
- // CMD_EXEC_WIREWATCH ("wirewatch-age"),
- // /**
- // * Withdraw EUR:5.
- // */
- // TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-age-1",
- // "create-reserve-age",
- // "EUR:5",
- // 13,
- // MHD_HTTP_OK),
-
- // TALER_TESTING_cmd_end ()
- // };
-
- // struct TALER_TESTING_Command spend_age[] = {
- // /**
- // * Spend the coin.
- // */
- // TALER_TESTING_cmd_deposit ("deposit-simple-age",
- // "withdraw-coin-age-1",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:4.99",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_deposit_replay ("deposit-simple-replay-age",
- // "deposit-simple-age",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_deposit_replay ("deposit-simple-replay-age-1",
- // "deposit-simple-age",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_sleep ("sleep-before-age-deposit-replay",
- // 1),
- // TALER_TESTING_cmd_deposit_replay ("deposit-simple-replay-age-2",
- // "deposit-simple-age",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_end ()
- // };
-
- // struct TALER_TESTING_Command track[] = {
- // /* Try resolving a deposit's WTID, as we never triggered
- // * execution of transactions, the answer should be that
- // * the exchange knows about the deposit, but has no WTID yet.
- // */
- // TALER_TESTING_cmd_track_transaction ("deposit-wtid-found",
- // "deposit-simple",
- // 0,
- // MHD_HTTP_ACCEPTED,
- // NULL),
- // /* Try resolving a deposit's WTID for a failed deposit.
- // * As the deposit failed, the answer should be that the
- // * exchange does NOT know about the deposit.
- // */
- // TALER_TESTING_cmd_track_transaction ("deposit-wtid-failing",
- // "deposit-double-2",
- // 0,
- // MHD_HTTP_NOT_FOUND,
- // NULL),
- // /* Try resolving an undefined (all zeros) WTID; this
- // * should fail as obviously the exchange didn't use that
- // * WTID value for any transaction.
- // */
- // TALER_TESTING_cmd_track_transfer_empty ("wire-deposit-failing",
- // NULL,
- // MHD_HTTP_NOT_FOUND),
- // /* Run transfers. Note that _actual_ aggregation will NOT
- // * happen here, as each deposit operation is run with a
- // * fresh merchant public key, so the aggregator will treat
- // * them as "different" merchants and do the wire transfers
- // * individually. */
- // CMD_EXEC_AGGREGATOR ("run-aggregator"),
- // /**
- // * Check all the transfers took place.
- // */
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-499c",
- // cred.exchange_url,
- // "EUR:4.98",
- // cred.exchange_payto,
- // cred.user42_payto),
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-499c2",
- // cred.exchange_url,
- // "EUR:4.97",
- // cred.exchange_payto,
- // cred.user42_payto),
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-99c1",
- // cred.exchange_url,
- // "EUR:0.98",
- // cred.exchange_payto,
- // cred.user42_payto),
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-99c2",
- // cred.exchange_url,
- // "EUR:0.98",
- // cred.exchange_payto,
- // cred.user42_payto),
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-99c3",
- // cred.exchange_url,
- // "EUR:0.98",
- // cred.exchange_payto,
- // cred.user42_payto),
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-99c4",
- // cred.exchange_url,
- // "EUR:0.98",
- // cred.exchange_payto,
- // cred.user42_payto),
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-08c",
- // cred.exchange_url,
- // "EUR:0.08",
- // cred.exchange_payto,
- // cred.user43_payto),
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-08c2",
- // cred.exchange_url,
- // "EUR:0.08",
- // cred.exchange_payto,
- // cred.user43_payto),
- // /* In case of CS, one transaction above succeeded that
- // failed for RSA, hence we need to check for an extra transfer here */
- // uses_cs
- // ? TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-98c",
- // cred.exchange_url,
- // "EUR:0.98",
- // cred.exchange_payto,
- // cred.user42_payto)
- // : TALER_TESTING_cmd_sleep ("dummy",
- // 0),
- // TALER_TESTING_cmd_check_bank_empty ("check_bank_empty"),
- // TALER_TESTING_cmd_track_transaction ("deposit-wtid-ok",
- // "deposit-simple",
- // 0,
- // MHD_HTTP_OK,
- // "check_bank_transfer-499c"),
- // TALER_TESTING_cmd_track_transfer ("wire-deposit-success-bank",
- // "check_bank_transfer-99c1",
- // MHD_HTTP_OK,
- // "EUR:0.98",
- // "EUR:0.01"),
- // TALER_TESTING_cmd_track_transfer ("wire-deposits-success-wtid",
- // "deposit-wtid-ok",
- // MHD_HTTP_OK,
- // "EUR:4.98",
- // "EUR:0.01"),
- // TALER_TESTING_cmd_end ()
- // };
-
- // /**
- // * This block checks whether a wire deadline
- // * very far in the future does NOT get aggregated now.
- // */
- // struct TALER_TESTING_Command unaggregation[] = {
- // TALER_TESTING_cmd_check_bank_empty ("far-future-aggregation-a"),
- // CMD_TRANSFER_TO_EXCHANGE ("create-reserve-unaggregated",
- // "EUR:5.01"),
- // /* "consume" reserve creation transfer. */
- // TALER_TESTING_cmd_check_bank_admin_transfer (
- // "check-create-reserve-unaggregated",
- // "EUR:5.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "create-reserve-unaggregated"),
- // CMD_EXEC_WIREWATCH ("wirewatch-unaggregated"),
- // TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-unaggregated",
- // "create-reserve-unaggregated",
- // "EUR:5",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_deposit ("deposit-unaggregated",
- // "withdraw-coin-unaggregated",
- // 0,
- // cred.user43_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_relative_multiply (
- // GNUNET_TIME_UNIT_YEARS,
- // 3000),
- // "EUR:5",
- // MHD_HTTP_OK),
- // CMD_EXEC_AGGREGATOR ("aggregation-attempt"),
-
- // TALER_TESTING_cmd_check_bank_empty (
- // "far-future-aggregation-b"),
-
- // TALER_TESTING_cmd_end ()
- // };
-
- // struct TALER_TESTING_Command refresh_age[] = {
- // /* Fill reserve with EUR:5, 1ct is for fees. */
- // CMD_TRANSFER_TO_EXCHANGE ("refresh-create-reserve-age-1",
- // "EUR:6.01"),
- // TALER_TESTING_cmd_check_bank_admin_transfer (
- // "ck-refresh-create-reserve-age-1",
- // "EUR:6.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "refresh-create-reserve-age-1"),
- // /**
- // * Make previous command effective.
- // */
- // CMD_EXEC_WIREWATCH ("wirewatch-age-2"),
- // /**
- // * Withdraw EUR:7 with age restriction for age 13.
- // */
- // TALER_TESTING_cmd_withdraw_amount ("refresh-withdraw-coin-age-1",
- // "refresh-create-reserve-age-1",
- // "EUR:5",
- // 13,
- // MHD_HTTP_OK),
- // /* Try to partially spend (deposit) 1 EUR of the 5 EUR coin
- // * (in full) (merchant would receive EUR:0.99 due to 1 ct
- // * deposit fee)
- // */
- // TALER_TESTING_cmd_deposit ("refresh-deposit-partial-age",
- // "refresh-withdraw-coin-age-1",
- // 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_double ("refresh-melt-age-1",
- // "refresh-withdraw-coin-age-1",
- // MHD_HTTP_OK,
- // NULL),
- // /**
- // * Complete (successful) melt operation, and
- // * withdraw the coins
- // */
- // TALER_TESTING_cmd_refresh_reveal ("refresh-reveal-age-1",
- // "refresh-melt-age-1",
- // MHD_HTTP_OK),
- // /**
- // * Do it again to check idempotency
- // */
- // TALER_TESTING_cmd_refresh_reveal ("refresh-reveal-age-1-idempotency",
- // "refresh-melt-age-1",
- // MHD_HTTP_OK),
- // /**
- // * Test that /refresh/link works
- // */
- // TALER_TESTING_cmd_refresh_link ("refresh-link-age-1",
- // "refresh-reveal-age-1",
- // MHD_HTTP_OK),
- // /**
- // * Try to spend a refreshed EUR:1 coin
- // */
- // TALER_TESTING_cmd_deposit ("refresh-deposit-refreshed-age-1a",
- // "refresh-reveal-age-1-idempotency",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":3}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:1",
- // MHD_HTTP_OK),
- // /**
- // * Try to spend a refreshed EUR:0.1 coin
- // */
- // TALER_TESTING_cmd_deposit ("refresh-deposit-refreshed-age-1b",
- // "refresh-reveal-age-1",
- // 3,
- // cred.user43_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":3}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:0.1",
- // MHD_HTTP_OK),
- // /* Test running a failing melt operation (same operation
- // * again must fail) */
- // TALER_TESTING_cmd_melt ("refresh-melt-failing-age",
- // "refresh-withdraw-coin-age-1",
- // MHD_HTTP_CONFLICT,
- // NULL),
- // /* Test running a failing melt operation (on a coin that
- // was itself revealed and subsequently deposited) */
- // TALER_TESTING_cmd_melt ("refresh-melt-failing-age-2",
- // "refresh-reveal-age-1",
- // MHD_HTTP_CONFLICT,
- // NULL),
- // TALER_TESTING_cmd_end ()
- // };
-
- /**
- * This block exercises the aggretation logic by making two payments
- * to the same merchant.
- */
- // struct TALER_TESTING_Command aggregation[] = {
- // CMD_TRANSFER_TO_EXCHANGE ("create-reserve-aggtest",
- // "EUR:5.01"),
- // /* "consume" reserve creation transfer. */
- // TALER_TESTING_cmd_check_bank_admin_transfer (
- // "check-create-reserve-aggtest",
- // "EUR:5.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "create-reserve-aggtest"),
- // CMD_EXEC_WIREWATCH ("wirewatch-aggtest"),
- // TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-aggtest",
- // "create-reserve-aggtest",
- // "EUR:5",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_deposit ("deposit-aggtest-1",
- // "withdraw-coin-aggtest",
- // 0,
- // cred.user43_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:2",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_deposit_with_ref ("deposit-aggtest-2",
- // "withdraw-coin-aggtest",
- // 0,
- // cred.user43_payto,
- // "{\"items\":[{\"name\":\"foo
bar\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:2",
- // MHD_HTTP_OK,
- // "deposit-aggtest-1"),
- // CMD_EXEC_AGGREGATOR ("aggregation-aggtest"),
- // TALER_TESTING_cmd_check_bank_transfer ("check-bank-transfer-aggtest",
- // cred.exchange_url,
- // "EUR:3.97",
- // cred.exchange_payto,
- // cred.user43_payto),
- // TALER_TESTING_cmd_check_bank_empty ("check-bank-empty-aggtest"),
- // TALER_TESTING_cmd_end ()
- // };
-
- // struct TALER_TESTING_Command refund[] = {
- // /**
- // * Fill reserve with EUR:5.01, as withdraw fee is 1 ct per
- // * config.
- // */
- // CMD_TRANSFER_TO_EXCHANGE ("create-reserve-r1",
- // "EUR:5.01"),
- // TALER_TESTING_cmd_check_bank_admin_transfer ("check-create-reserve-r1",
- // "EUR:5.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "create-reserve-r1"),
- // /**
- // * Run wire-watch to trigger the reserve creation.
- // */
- // CMD_EXEC_WIREWATCH ("wirewatch-3"),
- // /* Withdraw a 5 EUR coin, at fee of 1 ct */
- // TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-r1",
- // "create-reserve-r1",
- // "EUR:5",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // /**
- // * Spend 5 EUR of the 5 EUR coin (in full) (merchant would
- // * receive EUR:4.99 due to 1 ct deposit fee)
- // */
- // 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),
- // /**
- // * Run transfers. Should do nothing as refund deadline blocks it
- // */
- // CMD_EXEC_AGGREGATOR ("run-aggregator-refund"),
- // /* Check that aggregator didn't do anything, as expected.
- // * Note, this operation takes two commands: one to "flush"
- // * the preliminary transfer (used to withdraw) from the
- // * fakebank and the second to actually check there are not
- // * other transfers around. */
- // TALER_TESTING_cmd_check_bank_empty ("check_bank_transfer-pre-refund"),
- // TALER_TESTING_cmd_refund_with_id ("refund-ok",
- // MHD_HTTP_OK,
- // "EUR:3",
- // "deposit-refund-1",
- // 3),
- // TALER_TESTING_cmd_refund_with_id ("refund-ok-double",
- // MHD_HTTP_OK,
- // "EUR:3",
- // "deposit-refund-1",
- // 3),
- // /* Previous /refund(s) had id == 0. */
- // TALER_TESTING_cmd_refund_with_id ("refund-conflicting",
- // MHD_HTTP_CONFLICT,
- // "EUR:5",
- // "deposit-refund-1",
- // 1),
- // TALER_TESTING_cmd_deposit ("deposit-refund-insufficient-refund",
- // "withdraw-coin-r1",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":\"EUR:4\"}]}",
- // GNUNET_TIME_UNIT_MINUTES,
- // "EUR:4",
- // MHD_HTTP_CONFLICT),
- // TALER_TESTING_cmd_refund_with_id ("refund-ok-increase",
- // MHD_HTTP_OK,
- // "EUR:2",
- // "deposit-refund-1",
- // 2),
- // /**
- // * Spend 4.99 EUR of the refunded 4.99 EUR coin (1ct gone
- // * due to refund) (merchant would receive EUR:4.98 due to
- // * 1 ct deposit fee) */
- // TALER_TESTING_cmd_deposit ("deposit-refund-2",
- // "withdraw-coin-r1",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"more ice
cream\",\"value\":\"EUR:5\"}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:4.99",
- // MHD_HTTP_OK),
- // /**
- // * Run transfers. This will do the transfer as refund deadline
- // * was 0
- // */
- // CMD_EXEC_AGGREGATOR ("run-aggregator-3"),
- // /**
- // * Check that deposit did run.
- // */
- // TALER_TESTING_cmd_check_bank_transfer ("check_bank_transfer-pre-refund",
- // cred.exchange_url,
- // "EUR:4.97",
- // cred.exchange_payto,
- // cred.user42_payto),
- // /**
- // * Run failing refund, as past deadline & aggregation.
- // */
- // TALER_TESTING_cmd_refund ("refund-fail",
- // MHD_HTTP_GONE,
- // "EUR:4.99",
- // "deposit-refund-2"),
- // TALER_TESTING_cmd_check_bank_empty ("check-empty-after-refund"),
- // /**
- // * Test refunded coins are never executed, even past
- // * refund deadline
- // */
- // CMD_TRANSFER_TO_EXCHANGE ("create-reserve-rb",
- // "EUR:5.01"),
- // TALER_TESTING_cmd_check_bank_admin_transfer ("check-create-reserve-rb",
- // "EUR:5.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "create-reserve-rb"),
- // CMD_EXEC_WIREWATCH ("wirewatch-rb"),
- // TALER_TESTING_cmd_withdraw_amount ("withdraw-coin-rb",
- // "create-reserve-rb",
- // "EUR:5",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_deposit ("deposit-refund-1b",
- // "withdraw-coin-rb",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":\"EUR:5\"}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:5",
- // MHD_HTTP_OK),
- // /**
- // * Trigger refund (before aggregator had a chance to execute
- // * deposit, even though refund deadline was zero).
- // */
- // TALER_TESTING_cmd_refund ("refund-ok-fast",
- // MHD_HTTP_OK,
- // "EUR:5",
- // "deposit-refund-1b"),
- // /**
- // * Run transfers. This will do the transfer as refund deadline
- // * was 0, except of course because the refund succeeded, the
- // * transfer should no longer be done.
- // */
- // CMD_EXEC_AGGREGATOR ("run-aggregator-3b"),
- // /* check that aggregator didn't do anything, as expected */
- // TALER_TESTING_cmd_check_bank_empty ("check-refund-fast-not-run"),
- // TALER_TESTING_cmd_end ()
- // };
-
- // struct TALER_TESTING_Command recoup[] = {
- // /**
- // * Fill reserve with EUR:5.01, as withdraw fee is 1 ct per
- // * config.
- // */
- // CMD_TRANSFER_TO_EXCHANGE ("recoup-create-reserve-1",
- // "EUR:15.02"),
- // TALER_TESTING_cmd_check_bank_admin_transfer (
- // "recoup-create-reserve-1-check",
- // "EUR:15.02",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "recoup-create-reserve-1"),
- // /**
- // * Run wire-watch to trigger the reserve creation.
- // */
- // CMD_EXEC_WIREWATCH ("wirewatch-4"),
- // /* Withdraw a 5 EUR coin, at fee of 1 ct */
- // TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-1",
- // "recoup-create-reserve-1",
- // "EUR:5",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // /* Withdraw a 10 EUR coin, at fee of 1 ct */
- // TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-1b",
- // "recoup-create-reserve-1",
- // "EUR:10",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // /* melt 10 EUR coin to get 5 EUR refreshed coin */
- // TALER_TESTING_cmd_melt ("recoup-melt-coin-1b",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:5",
- // NULL),
- // TALER_TESTING_cmd_refresh_reveal ("recoup-reveal-coin-1b",
- // "recoup-melt-coin-1b",
- // MHD_HTTP_OK),
- // /* Revoke both 5 EUR coins */
- // TALER_TESTING_cmd_revoke ("revoke-0-EUR:5",
- // MHD_HTTP_OK,
- // "recoup-withdraw-coin-1",
- // config_file),
- // /* Recoup coin to reserve */
- // TALER_TESTING_cmd_recoup ("recoup-1",
- // MHD_HTTP_OK,
- // "recoup-withdraw-coin-1",
- // "EUR:5"),
- // /* Check the money is back with the reserve */
- // TALER_TESTING_cmd_status ("recoup-reserve-status-1",
- // "recoup-create-reserve-1",
- // "EUR:5.0",
- // MHD_HTTP_OK),
- // /* Recoup-refresh coin to 10 EUR coin */
- // TALER_TESTING_cmd_recoup_refresh ("recoup-1b",
- // MHD_HTTP_OK,
- // "recoup-reveal-coin-1b",
- // "recoup-melt-coin-1b",
- // "EUR:5"),
- // /* melt 10 EUR coin *again* to get 1 EUR refreshed coin */
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1a",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_refresh_reveal ("recoup-reveal-coin-1a",
- // "recoup-remelt-coin-1a",
- // MHD_HTTP_OK),
- // /* Try melting for more than the residual value to provoke an error */
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1b",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1c",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1d",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1e",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1f",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1g",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1h",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1i",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_OK,
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_melt ("recoup-remelt-coin-1b-failing",
- // "recoup-withdraw-coin-1b",
- // MHD_HTTP_CONFLICT,
- // "EUR:1",
- // NULL),
- // /* Re-withdraw from this reserve */
- // TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2",
- // "recoup-create-reserve-1",
- // "EUR:1",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // /**
- // * This withdrawal will test the logic to create a "recoup"
- // * element to insert into the reserve's history.
- // */
- // TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2-over",
- // "recoup-create-reserve-1",
- // "EUR:10",
- // 0, /* age restriction off */
- // MHD_HTTP_CONFLICT),
- // TALER_TESTING_cmd_status ("recoup-reserve-status-2",
- // "recoup-create-reserve-1",
- // "EUR:3.99",
- // MHD_HTTP_OK),
- // /* These commands should close the reserve because
- // * the aggregator is given a config file that overrides
- // * the reserve expiration time (making it now-ish) */
- // CMD_TRANSFER_TO_EXCHANGE ("short-lived-reserve",
- // "EUR:5.01"),
- // TALER_TESTING_cmd_check_bank_admin_transfer
("check-short-lived-reserve",
- // "EUR:5.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "short-lived-reserve"),
- // TALER_TESTING_cmd_exec_wirewatch2 ("short-lived-aggregation",
- // config_file_expire_reserve_now,
- // "exchange-account-2"),
- // TALER_TESTING_cmd_exec_closer ("close-reserves",
- // config_file_expire_reserve_now,
- // "EUR:5",
- // "EUR:0.01",
- // "short-lived-reserve"),
- // TALER_TESTING_cmd_exec_transfer ("close-reserves-transfer",
- // config_file_expire_reserve_now),
-
- // TALER_TESTING_cmd_status ("short-lived-status",
- // "short-lived-reserve",
- // "EUR:0",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_withdraw_amount ("expired-withdraw",
- // "short-lived-reserve",
- // "EUR:1",
- // 0, /* age restriction off */
- // MHD_HTTP_CONFLICT),
- // TALER_TESTING_cmd_check_bank_transfer
("check_bank_short-lived_reimburse",
- // cred.exchange_url,
- // "EUR:5",
- // cred.exchange_payto,
- // cred.user42_payto),
- // /* Fill reserve with EUR:2.02, as withdraw fee is 1 ct per
- // * config, then withdraw two coin, partially spend one, and
- // * then have the rest paid back. Check deposit of other coin
- // * fails. Do not use EUR:5 here as the EUR:5 coin was
- // * revoked and we did not bother to create a new one... */
- // CMD_TRANSFER_TO_EXCHANGE ("recoup-create-reserve-2",
- // "EUR:2.02"),
- // TALER_TESTING_cmd_check_bank_admin_transfer
("ck-recoup-create-reserve-2",
- // "EUR:2.02",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "recoup-create-reserve-2"),
- // /* Make previous command effective. */
- // CMD_EXEC_WIREWATCH ("wirewatch-5"),
- // /* Withdraw a 1 EUR coin, at fee of 1 ct */
- // TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2a",
- // "recoup-create-reserve-2",
- // "EUR:1",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // /* Withdraw a 1 EUR coin, at fee of 1 ct */
- // TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-2b",
- // "recoup-create-reserve-2",
- // "EUR:1",
- // 0, /* age restriction off */
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_deposit ("recoup-deposit-partial",
- // "recoup-withdraw-coin-2a",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"more ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:0.5",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_revoke ("revoke-1-EUR:1",
- // MHD_HTTP_OK,
- // "recoup-withdraw-coin-2a",
- // config_file),
- // /* Check recoup is failing for the coin with the reused coin key
- // (fails either because of denomination conflict (RSA) or
- // double-spending (CS))*/
- // TALER_TESTING_cmd_recoup ("recoup-2x",
- // MHD_HTTP_CONFLICT,
- // "withdraw-coin-1x",
- // "EUR:1"),
- // TALER_TESTING_cmd_recoup ("recoup-2",
- // MHD_HTTP_OK,
- // "recoup-withdraw-coin-2a",
- // "EUR:0.5"),
- // /* Idempotency of recoup (withdrawal variant) */
- // TALER_TESTING_cmd_recoup ("recoup-2b",
- // MHD_HTTP_OK,
- // "recoup-withdraw-coin-2a",
- // "EUR:0.5"),
- // TALER_TESTING_cmd_deposit ("recoup-deposit-revoked",
- // "recoup-withdraw-coin-2b",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"more ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:1",
- // MHD_HTTP_GONE),
- // /* Test deposit fails after recoup, with proof in recoup */
-
- // /* Note that, the exchange will never return the coin's transaction
- // * history with recoup data, as we get a 410 on the DK! */
- // TALER_TESTING_cmd_deposit ("recoup-deposit-partial-after-recoup",
- // "recoup-withdraw-coin-2a",
- // 0,
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"extra ice
cream\",\"value\":1}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // "EUR:0.5",
- // MHD_HTTP_GONE),
- // /* Test that revoked coins cannot be withdrawn */
- // CMD_TRANSFER_TO_EXCHANGE ("recoup-create-reserve-3",
- // "EUR:1.01"),
- // TALER_TESTING_cmd_check_bank_admin_transfer (
- // "check-recoup-create-reserve-3",
- // "EUR:1.01",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "recoup-create-reserve-3"),
- // CMD_EXEC_WIREWATCH ("wirewatch-6"),
- // TALER_TESTING_cmd_withdraw_amount ("recoup-withdraw-coin-3-revoked",
- // "recoup-create-reserve-3",
- // "EUR:1",
- // 0, /* age restriction off */
- // MHD_HTTP_GONE),
- // /* check that we are empty before the rejection test */
- // TALER_TESTING_cmd_check_bank_empty ("check-empty-again"),
-
- // TALER_TESTING_cmd_end ()
- // };
-
- /**
- * Test batch withdrawal plus spending.
- */
- // struct TALER_TESTING_Command batch_withdraw[] = {
- // /**
- // * Move money to the exchange's bank account.
- // */
- // CMD_TRANSFER_TO_EXCHANGE ("create-batch-reserve-1",
- // "EUR:6.03"),
- // TALER_TESTING_cmd_reserve_poll ("poll-batch-reserve-1",
- // "create-batch-reserve-1",
- // "EUR:6.03",
- // GNUNET_TIME_UNIT_MINUTES,
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_check_bank_admin_transfer
("check-create-batch-reserve-1",
- // "EUR:6.03",
- // cred.user42_payto,
- // cred.exchange_payto,
- // "create-batch-reserve-1"),
- // /*
- // * Make a reserve exist, according to the previous
- // * transfer.
- // */
- // CMD_EXEC_WIREWATCH ("wirewatch-batch-1"),
- // TALER_TESTING_cmd_reserve_poll_finish ("finish-poll-batch-reserve-1",
- // GNUNET_TIME_UNIT_SECONDS,
- // "poll-batch-reserve-1"),
- // /**
- // * Withdraw EUR:5 AND EUR:1.
- // */
- // TALER_TESTING_cmd_batch_withdraw ("batch-withdraw-coin-1",
- // "create-batch-reserve-1",
- // 0, /* age restriction off */
- // MHD_HTTP_OK,
- // "EUR:5",
- // "EUR:1",
- // NULL),
- // /**
- // * Check the reserve is (almost) depleted.
- // */
- // TALER_TESTING_cmd_status ("status-batch-1",
- // "create-batch-reserve-1",
- // "EUR:0.01",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_reserve_history ("history-batch-1",
- // "create-batch-reserve-1",
- // "EUR:0.01",
- // MHD_HTTP_OK),
- // /**
- // * Spend the coins.
- // */
- // TALER_TESTING_cmd_batch_deposit ("batch-deposit-1",
- // cred.user42_payto,
- // "{\"items\":[{\"name\":\"ice
cream\",\"value\":5}]}",
- // GNUNET_TIME_UNIT_ZERO,
- // MHD_HTTP_OK,
- // "batch-withdraw-coin-1#0",
- // "EUR:5",
- // "batch-withdraw-coin-1#1",
- // "EUR:1",
- // NULL),
- // TALER_TESTING_cmd_coin_history ("coin-history-batch-1",
- // "batch-withdraw-coin-1#0",
- // "EUR:0.0",
- // MHD_HTTP_OK),
- // TALER_TESTING_cmd_end ()
- // };
-
-
-#define RESERVE_OPEN_CLOSE_CHUNK 4
-#define RESERVE_OPEN_CLOSE_ITERATIONS 3
-
- // struct TALER_TESTING_Command
reserve_open_close[(RESERVE_OPEN_CLOSE_ITERATIONS
- // *
RESERVE_OPEN_CLOSE_CHUNK)
- // + 1];
-
- // (void) cls;
- // for (unsigned int i = 0;
- // i < RESERVE_OPEN_CLOSE_ITERATIONS;
- // i++)
- // {
- // reserve_open_close[(i * RESERVE_OPEN_CLOSE_CHUNK) + 0]
- // = CMD_TRANSFER_TO_EXCHANGE ("reserve-open-close-key",
- // "EUR:20");
- // reserve_open_close[(i * RESERVE_OPEN_CLOSE_CHUNK) + 1]
- // = TALER_TESTING_cmd_exec_wirewatch2 ("reserve-open-close-wirewatch",
- // config_file_expire_reserve_now,
- // "exchange-account-2");
- // reserve_open_close[(i * RESERVE_OPEN_CLOSE_CHUNK) + 2]
- // = TALER_TESTING_cmd_exec_closer ("reserve-open-close-aggregation",
- // config_file_expire_reserve_now,
- // "EUR:19.99",
- // "EUR:0.01",
- // "reserve-open-close-key");
- // reserve_open_close[(i * RESERVE_OPEN_CLOSE_CHUNK) + 3]
- // = TALER_TESTING_cmd_status ("reserve-open-close-status",
- // "reserve-open-close-key",
- // "EUR:0",
- // MHD_HTTP_OK);
- // }
- // reserve_open_close[RESERVE_OPEN_CLOSE_ITERATIONS *
RESERVE_OPEN_CLOSE_CHUNK]
- // = TALER_TESTING_cmd_end ();
-
{
struct TALER_TESTING_Command commands[] = {
- TALER_TESTING_cmd_system_start ("start-taler-donau",
+ TALER_TESTING_cmd_system_start ("start-donau",
config_file,
"-D",
NULL),
@@ -1259,17 +102,14 @@ main (int argc,
GNUNET_asprintf (&config_file,
"test_donau_api-%s.conf",
cipher);
- //GNUNET_asprintf (&config_file_expireDreserve_now,
- // "test_donau_api_expire_reserve_now-%s.conf",
- // cipher);
GNUNET_free (cipher);
}
- return DONAU_TESTING_main (char *const *argv,
- const char *loglevel,
- const char *cfg_file,
- struct TALER_TESTING_Credentials *cred,
- TALER_TESTING_Main main_cb,
- void *main_cb_cls);
+ return DONAU_TESTING_main (argv,
+ "INFO",
+ config_file,
+ &cred,
+ &run,
+ NULL);
}
diff --git a/src/testing/testing_api_loop.c b/src/testing/testing_api_loop.c
new file mode 100644
index 0000000..7fff2c0
--- /dev/null
+++ b/src/testing/testing_api_loop.c
@@ -0,0 +1,68 @@
+/*
+ This file is part of TALER
+ Copyright (C) 2018-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 published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ TALER is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with TALER; see the file COPYING. If not, see
+ <http://www.gnu.org/licenses/>
+*/
+
+/**
+ * @file testing/testing_api_loop.c
+ * @brief main interpreter loop for testcases
+ * @author Lukas Matyja
+ */
+#include "taler/platform.h"
+#include "taler/taler_json_lib.h"
+#include <gnunet/gnunet_curl_lib.h>
+#include "taler/taler_signatures.h"
+#include "taler/taler_testing_lib.h"
+#include "donau_testing_lib.h"
+
+
+int
+DONAU_TESTING_main (char *const *argv,
+ const char *loglevel,
+ const char *cfg_file,
+ struct TALER_TESTING_Credentials *cred,
+ TALER_TESTING_Main main_cb,
+ void *main_cb_cls)
+{
+ enum GNUNET_GenericReturnValue ret;
+
+ unsetenv ("XDG_DATA_HOME");
+ unsetenv ("XDG_CONFIG_HOME");
+ GNUNET_log_setup (argv[0],
+ loglevel,
+ NULL);
+ //if (GNUNET_OK !=
+ // TALER_TESTING_get_credentials (cfg_file,
+ // exchange_account_section,
+ // bs,
+ // cred))
+ //{
+ // GNUNET_break (0);
+ // return 77;
+ //}
+ //if (GNUNET_OK !=
+ // TALER_TESTING_cleanup_files_cfg (NULL,
+ // cred->cfg))
+ {
+ GNUNET_break (0);
+ return 77;
+ }
+ ret = TALER_TESTING_loop (main_cb,
+ main_cb_cls);
+ /* TODO: should we free 'cred' resources here? */
+ return (GNUNET_OK == ret) ? 0 : 1;
+}
diff --git a/src/util/donau_signatures.c b/src/util/donau_signatures.c
index dfe725b..55a63b8 100644
--- a/src/util/donau_signatures.c
+++ b/src/util/donau_signatures.c
@@ -52,7 +52,7 @@ struct DONAU_DonationStatementConfirmationPS
/**
* The corresponding year.
*/
- unsigned int year;
+ uint32_t year;
};
@@ -62,7 +62,7 @@ GNUNET_NETWORK_STRUCT_END
void
DONAU_donation_statement_sign (
const struct TALER_Amount *amount_tot,
- const unsigned int year,
+ const uint32_t year,
const struct DONAU_HashDonorTaxId *i,
const struct DONAU_PrivateKeyP *donau_priv,
struct DONAU_DonauSignatureP *statement_sig)
@@ -87,7 +87,7 @@ DONAU_donation_statement_sign (
enum GNUNET_GenericReturnValue
DONAU_donation_statement_verify (
const struct TALER_Amount *amount_tot,
- const unsigned int year,
+ const uint32_t year,
const struct DONAU_HashDonorTaxId *i,
const struct DONAU_DonauPublicKeyP *donau_pub,
const struct DONAU_DonauSignatureP *statement_sig)
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-donau] branch master updated: [lib] resolve errors,
gnunet <=