mintdb postgres: test insert_refresh_melt().
This commit is contained in:
parent
a9e1eabe46
commit
86665a7c9f
@ -174,6 +174,98 @@ destroy_denom_key_pair (struct DenomKeyPair *dkp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to test melting of coins as part of a refresh session
|
||||||
|
*
|
||||||
|
* @param session the database session
|
||||||
|
* @param refresh_session the refresh session
|
||||||
|
* @return #GNUNET_OK if everything went well; #GNUNET_SYSERR if not
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
test_melting (struct TALER_MINTDB_Session *session)
|
||||||
|
{
|
||||||
|
#define MELT_COINS 10
|
||||||
|
struct TALER_MINTDB_RefreshSession refresh_session;
|
||||||
|
struct TALER_MINTDB_RefreshSession ret_refresh_session;
|
||||||
|
struct GNUNET_HashCode session_hash;
|
||||||
|
struct DenomKeyPair *dkp;
|
||||||
|
/* struct TALER_CoinPublicInfo *coins; */
|
||||||
|
struct TALER_MINTDB_RefreshMelt *melts;
|
||||||
|
struct TALER_Amount amount_with_fee;
|
||||||
|
struct TALER_Amount melt_fee;
|
||||||
|
unsigned int cnt;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = GNUNET_SYSERR;
|
||||||
|
RND_BLK (&refresh_session);
|
||||||
|
RND_BLK (&session_hash);
|
||||||
|
melts = NULL;
|
||||||
|
/* create and test a refresh session */
|
||||||
|
refresh_session.num_oldcoins = MELT_COINS;
|
||||||
|
refresh_session.num_newcoins = 1;
|
||||||
|
refresh_session.noreveal_index = 1;
|
||||||
|
FAILIF (GNUNET_OK != plugin->create_refresh_session (plugin->cls,
|
||||||
|
session,
|
||||||
|
&session_hash,
|
||||||
|
&refresh_session));
|
||||||
|
FAILIF (GNUNET_OK != plugin->get_refresh_session (plugin->cls,
|
||||||
|
session,
|
||||||
|
&session_hash,
|
||||||
|
&ret_refresh_session));
|
||||||
|
FAILIF (0 != memcmp (&ret_refresh_session,
|
||||||
|
&refresh_session,
|
||||||
|
sizeof (refresh_session)));
|
||||||
|
|
||||||
|
/* create a denomination (value: 1; fraction: 100) */
|
||||||
|
dkp = create_denom_key_pair(512, session);
|
||||||
|
|
||||||
|
/* create MELT_COIN number of coins to be melted */
|
||||||
|
/* coins = GNUNET_new_array (MELT_COINS, struct TALER_CoinPublicInfo); */
|
||||||
|
/* for (cnt = 0; cnt < MELT_COINS; cnt++) */
|
||||||
|
/* { */
|
||||||
|
/* RND_BLK (&coins[cnt].coin_pub); */
|
||||||
|
/* coins[cnt].denom_pub = dkp->pub; */
|
||||||
|
/* RND_BLK (&coins[cnt].denom_sig); */
|
||||||
|
/* } */
|
||||||
|
/* create MELT_COINS number of refresh melts */
|
||||||
|
melts = GNUNET_new_array (MELT_COINS, struct TALER_MINTDB_RefreshMelt);
|
||||||
|
GNUNET_assert (GNUNET_OK ==
|
||||||
|
TALER_string_to_amount (CURRENCY ":1.000010",
|
||||||
|
&amount_with_fee));
|
||||||
|
GNUNET_assert (GNUNET_OK ==
|
||||||
|
TALER_string_to_amount (CURRENCY ":0.000010",
|
||||||
|
&melt_fee));
|
||||||
|
for (cnt=0; cnt < MELT_COINS; cnt++)
|
||||||
|
{
|
||||||
|
RND_BLK (&melts[cnt].coin.coin_pub);
|
||||||
|
melts[cnt].coin.denom_sig.rsa_signature =
|
||||||
|
GNUNET_CRYPTO_rsa_sign (dkp->priv.rsa_private_key,
|
||||||
|
&melts[cnt].coin.coin_pub,
|
||||||
|
sizeof (melts[cnt].coin.coin_pub));
|
||||||
|
melts[cnt].coin.denom_pub = dkp->pub;
|
||||||
|
RND_BLK (&melts[cnt].coin_sig);
|
||||||
|
melts[cnt].session_hash = session_hash;
|
||||||
|
melts[cnt].amount_with_fee = amount_with_fee;
|
||||||
|
melts[cnt].melt_fee = melt_fee;
|
||||||
|
FAILIF (GNUNET_OK != plugin->insert_refresh_melt (plugin->cls,
|
||||||
|
session,
|
||||||
|
cnt,
|
||||||
|
&melts[cnt]));
|
||||||
|
}
|
||||||
|
ret = GNUNET_OK;
|
||||||
|
|
||||||
|
drop:
|
||||||
|
destroy_denom_key_pair (dkp);
|
||||||
|
if (NULL != melts)
|
||||||
|
{
|
||||||
|
for (cnt = 0; cnt < MELT_COINS; cnt++)
|
||||||
|
GNUNET_CRYPTO_rsa_signature_free (melts[cnt].coin.denom_sig.rsa_signature);
|
||||||
|
GNUNET_free (melts);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main function that will be run by the scheduler.
|
* Main function that will be run by the scheduler.
|
||||||
*
|
*
|
||||||
@ -391,32 +483,9 @@ run (void *cls,
|
|||||||
plugin->have_deposit (plugin->cls,
|
plugin->have_deposit (plugin->cls,
|
||||||
session,
|
session,
|
||||||
&deposit2));
|
&deposit2));
|
||||||
/* Tests for refreshing */
|
FAILIF (GNUNET_OK != test_melting (session));
|
||||||
{
|
|
||||||
struct TALER_MINTDB_RefreshSession refresh_session;
|
|
||||||
struct TALER_MINTDB_RefreshSession ret_refresh_session;
|
|
||||||
struct GNUNET_HashCode session_hash;
|
|
||||||
RND_BLK (&refresh_session);
|
|
||||||
RND_BLK (&session_hash);
|
|
||||||
refresh_session.num_oldcoins = UINT16_MAX;
|
|
||||||
refresh_session.num_newcoins = 1;
|
|
||||||
refresh_session.noreveal_index = 1;
|
|
||||||
FAILIF (GNUNET_OK != plugin->create_refresh_session (plugin->cls,
|
|
||||||
session,
|
|
||||||
&session_hash,
|
|
||||||
&refresh_session));
|
|
||||||
FAILIF (GNUNET_OK != plugin->get_refresh_session (plugin->cls,
|
|
||||||
session,
|
|
||||||
&session_hash,
|
|
||||||
&ret_refresh_session));
|
|
||||||
FAILIF (0 != memcmp (&ret_refresh_session,
|
|
||||||
&refresh_session,
|
|
||||||
sizeof (refresh_session)));
|
|
||||||
}
|
|
||||||
// FAILIF (GNUNET_OK != test_known_coins (session));
|
|
||||||
result = 0;
|
result = 0;
|
||||||
|
|
||||||
/* FIXME: test_refresh_melts */
|
|
||||||
drop:
|
drop:
|
||||||
if (NULL != wire)
|
if (NULL != wire)
|
||||||
json_decref (wire);
|
json_decref (wire);
|
||||||
|
Loading…
Reference in New Issue
Block a user