aboutsummaryrefslogtreecommitdiff
path: root/src/exchangedb
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb')
-rw-r--r--src/exchangedb/plugin_exchangedb_common.c12
-rw-r--r--src/exchangedb/test_exchangedb.c36
2 files changed, 43 insertions, 5 deletions
diff --git a/src/exchangedb/plugin_exchangedb_common.c b/src/exchangedb/plugin_exchangedb_common.c
index b97aa08c2..ba182d425 100644
--- a/src/exchangedb/plugin_exchangedb_common.c
+++ b/src/exchangedb/plugin_exchangedb_common.c
@@ -34,13 +34,13 @@ common_free_reserve_history (void *cls,
struct TALER_EXCHANGEDB_CollectableBlindcoin *cbc;
struct TALER_EXCHANGEDB_Payback *payback;
struct TALER_EXCHANGEDB_ReserveHistory *backref;
-
+ struct TALER_EXCHANGEDB_ClosingTransfer *closing;
+
while (NULL != rh)
{
switch(rh->type)
{
case TALER_EXCHANGEDB_RO_BANK_TO_EXCHANGE:
- case TALER_EXCHANGEDB_RO_EXCHANGE_TO_BANK:
bt = rh->details.bank;
if (NULL != bt->sender_account_details)
json_decref (bt->sender_account_details);
@@ -60,6 +60,14 @@ common_free_reserve_history (void *cls,
GNUNET_CRYPTO_rsa_public_key_free (payback->coin.denom_pub.rsa_public_key);
GNUNET_free (payback);
break;
+ case TALER_EXCHANGEDB_RO_EXCHANGE_TO_BANK:
+ closing = rh->details.closing;
+ if (NULL != closing->receiver_account_details)
+ json_decref (closing->receiver_account_details);
+ if (NULL != closing->transfer_details)
+ json_decref (closing->transfer_details);
+ GNUNET_free (closing);
+ break;
}
backref = rh;
rh = rh->next;
diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c
index 330380d31..83949d855 100644
--- a/src/exchangedb/test_exchangedb.c
+++ b/src/exchangedb/test_exchangedb.c
@@ -295,6 +295,7 @@ static struct TALER_Amount fee_withdraw;
static struct TALER_Amount fee_deposit;
static struct TALER_Amount fee_refresh;
static struct TALER_Amount fee_refund;
+static struct TALER_Amount fee_closing;
static struct TALER_Amount amount_with_fee;
@@ -1611,7 +1612,25 @@ run (void *cls)
&value,
&cbc.h_coin_envelope,
deadline));
-
+ sndr = json_loads ("{ \"account\":\"1\" }", 0, NULL);
+ just = json_loads ("{ \"trans-details\":\"2\" }", 0, NULL);
+ GNUNET_assert (GNUNET_OK ==
+ TALER_string_to_amount (CURRENCY ":0.000010",
+ &fee_closing));
+ GNUNET_assert (GNUNET_OK ==
+ TALER_string_to_amount (CURRENCY ":1.000010",
+ &amount_with_fee));
+ FAILIF (GNUNET_OK !=
+ plugin->insert_reserve_closed (plugin->cls,
+ session,
+ &reserve_pub,
+ GNUNET_TIME_absolute_get (),
+ sndr /* receiver_account */,
+ just /* transfer_details */,
+ &amount_with_fee,
+ &fee_closing));
+ json_decref (just);
+ json_decref (sndr);
result = 7;
rh = plugin->get_reserve_history (plugin->cls,
session,
@@ -1664,11 +1683,22 @@ run (void *cls)
}
break;
case TALER_EXCHANGEDB_RO_EXCHANGE_TO_BANK:
- GNUNET_break (0); /* FIXME: #4956 */
+ {
+ struct TALER_EXCHANGEDB_ClosingTransfer *closing
+ = rh_head->details.closing;
+
+ FAILIF (0 != memcmp (&closing->reserve_pub,
+ &reserve_pub,
+ sizeof (reserve_pub)));
+ FAILIF (0 != TALER_amount_cmp (&closing->amount,
+ &amount_with_fee));
+ FAILIF (0 != TALER_amount_cmp (&closing->closing_fee,
+ &fee_closing));
+ }
break;
}
}
- FAILIF (4 != cnt);
+ FAILIF (5 != cnt);
auditor_row_cnt = 0;
FAILIF (GNUNET_OK !=