donau

Donation authority for GNU Taler (experimental)
Log | Files | Refs | Submodules | README | LICENSE

commit 0e9604918293996b9a690bd6909538fb324123ca
parent 2d671bbac066be29f2cfbabd9f1ed2b31c2d9ae4
Author: Casaburi Johannes <johannes.casaburi@students.bfh.ch>
Date:   Thu, 25 Apr 2024 17:59:30 +0200

work on db tests

Diffstat:
Msrc/donaudb/pg_insert_submitted_receipts.c | 2+-
Msrc/donaudb/pg_insert_submitted_receipts.h | 2+-
Msrc/donaudb/test_donaudb.c | 151+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Msrc/include/donaudb_plugin.h | 54+++++++++++++++++++++++++++---------------------------
4 files changed, 161 insertions(+), 48 deletions(-)

diff --git a/src/donaudb/pg_insert_submitted_receipts.c b/src/donaudb/pg_insert_submitted_receipts.c @@ -29,7 +29,7 @@ enum GNUNET_DB_QueryStatus DH_PG_insert_submitted_receipts ( void *cls, - const struct DONAU_HashDonorTaxId *h_tax_number, + struct DONAU_HashDonorTaxId *h_tax_number, size_t num_dr, const struct DONAU_DonationReceipt donation_receipts[static num_dr], uint64_t donation_year) diff --git a/src/donaudb/pg_insert_submitted_receipts.h b/src/donaudb/pg_insert_submitted_receipts.h @@ -38,7 +38,7 @@ enum GNUNET_DB_QueryStatus DH_PG_insert_submitted_receipts ( void *cls, - const struct DONAU_HashDonorTaxId *h_tax_number, + struct DONAU_HashDonorTaxId *h_tax_number, size_t num_dr, const struct DONAU_DonationReceipt donation_receipts[static num_dr], uint64_t donation_year diff --git a/src/donaudb/test_donaudb.c b/src/donaudb/test_donaudb.c @@ -65,6 +65,67 @@ static int result; */ static struct DONAUDB_Plugin *plugin; +/** + * Return charities information. + * + * @param cls closure + */ +static enum GNUNET_GenericReturnValue +charities_cb ( + void *cls, + const struct DONAU_CharityPublicKeyP charity_pub, + const char *charity_name, + const char *charity_url, + struct TALER_Amount max_per_year, + struct TALER_Amount receipts_to_date, + uint64_t current_year) +{ + fprintf (stderr, + "called charities_cb\n"); + return GNUNET_OK; +} + + +/** + * Function called with information about the donau's donation_unit keys. + * + * @param cls NULL + * @param donation_unit_pub public key of the donation_unit + * @param h_donation_unit_pub hash of @a donation_unit_pub + * @param validity_year of the donation unit + * @param value of the donation unit + */ +static enum GNUNET_GenericReturnValue +donation_unit_info_cb ( + void *cls, + const struct DONAU_DonationUnitHashP *h_donation_unit_pub, + const struct DONAU_DonationUnitPublicKey *donation_unit_pub, + uint64_t validity_year, + struct TALER_Amount *value) +{ + fprintf (stderr, + "called donation_unit_info_cb\n"); + return GNUNET_OK; +} + + +/** + * Function called with information about the donau's online signing keys. + * + * @param cls NULL + * @param donau_pub the public key + * @param meta meta data information about the denomination type (expirations) + */ +static void +iterate_active_signing_keys_cb ( + void *cls, + const struct DONAU_DonauPublicKeyP *donau_pub, + struct DONAUDB_SignkeyMetaData *meta) +{ + fprintf (stderr, + "called iterate_active_signing_keys_cb\n"); +} + /** * Main function that will be run by the scheduler. @@ -98,6 +159,19 @@ run (void *cls) struct DONAU_DonauPublicKeyP donau_pub; struct DONAUDB_SignkeyMetaData sk_meta; + // Issued receipts information + size_t num_b_sigs = 1; + struct DONAU_BlindedDonationUnitSignature du_sigs[num_b_sigs]; + struct DONAU_DonationReceiptHashP h_receipt; + struct TALER_Amount amount_receipts; + bool smaller_than_max_per_year; + struct DONAUDB_IssuedReceiptsMetaData ir_meta; + + // Submitted receipts information + struct DONAU_HashDonorTaxId h_tax_number; + size_t num_dr = 1; + struct DONAU_DonationReceipt donation_receipts[num_dr]; + if (NULL == (plugin = DONAUDB_plugin_load (cfg))) { @@ -124,10 +198,7 @@ run (void *cls) "Running DB tests\n"); /* test DB is empty */ - #ifdef SKIP charity_id = 1; - fprintf (stderr, - "Running lookup charity test...\n"); FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != plugin->lookup_charity (plugin->cls, charity_id, @@ -145,7 +216,8 @@ run (void *cls) GNUNET_assert (GNUNET_OK == TALER_string_to_amount (CURRENCY ":0.000010", &receipts_to_date)); - FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != + + FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != plugin->insert_charity (plugin->cls, &charity_pub, charity_name, @@ -153,12 +225,14 @@ run (void *cls) &max_per_year, &receipts_to_date, &current_year, - NULL)); + &charity_id)); + /* test get charities */ FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != plugin->get_charities (plugin->cls, - NULL, + &charities_cb, charities)); + /* test delete charity */ FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != plugin->do_charity_delete (plugin->cls, @@ -172,19 +246,26 @@ run (void *cls) TALER_string_to_amount (CURRENCY ":1.000010", &du_value)); - FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != - plugin->insert_donation_unit (plugin->cls, - &h_donation_unit_pub, - &donation_unit_pub, - validity_year, - &du_value)); - /* test iterate donation units */ - FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != + FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != plugin->iterate_donation_units (plugin->cls, - NULL, + &donation_unit_info_cb, NULL)); + // FIXME + // FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != + // plugin->insert_donation_unit (plugin->cls, + // &h_donation_unit_pub, + // &donation_unit_pub, + // validity_year, + // &du_value)); + // + // /* test iterate donation units */ + // FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != + // plugin->iterate_donation_units (plugin->cls, + // &donation_unit_info_cb, + // NULL)); + /* test insert signing key */ RND_BLK (&donau_pub); now = GNUNET_TIME_timestamp_get (); @@ -192,7 +273,7 @@ run (void *cls) sk_meta.expire_sign = now; sk_meta.valid_from = now; - FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != + FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != plugin->insert_signing_key (plugin->cls, &donau_pub, &sk_meta)); @@ -200,10 +281,42 @@ run (void *cls) /* test iterate signing key */ FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != plugin->iterate_active_signing_keys (plugin->cls, - NULL, + &iterate_active_signing_keys_cb, NULL)); - // TODO Add more tests - #endif + + /* test insert issued receipt */ + RND_BLK (&du_sigs[0]); + RND_BLK (&h_receipt); + smaller_than_max_per_year = false; + GNUNET_assert (GNUNET_OK == + TALER_string_to_amount (CURRENCY ":1.000010", + &amount_receipts)); + FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != + plugin->insert_issued_receipt (plugin->cls, + 1, + du_sigs, + charity_id, + &h_receipt, + &amount_receipts, + &smaller_than_max_per_year)); + + // FIXME + // FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != + // plugin->lookup_issued_receipts (plugin->cls, + // &h_receipt, + // &ir_meta)); + + /* test insert submitted receipts */ + // RND_BLK (&h_tax_number); + // RND_BLK (&donation_receipts[0].h_donation_unit_pub); + // RND_BLK (&donation_receipts[0].nonce); + // RND_BLK (&donation_receipts[0].donau_sig); + // FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != + // plugin->insert_submitted_receipts (plugin->cls, + // &h_tax_number, + // num_dr, + // donation_receipts, + // current_year)); plugin->preflight (plugin->cls); diff --git a/src/include/donaudb_plugin.h b/src/include/donaudb_plugin.h @@ -216,7 +216,7 @@ struct DONAUDB_Plugin * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure */ enum GNUNET_GenericReturnValue - (*drop_tables)(void *cls); + (*drop_tables)(void *cls); /** * Create the necessary tables if they are not present @@ -229,7 +229,7 @@ struct DONAUDB_Plugin * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure */ enum GNUNET_GenericReturnValue - (*create_tables)(void *cls); + (*create_tables)(void *cls); /** @@ -241,8 +241,8 @@ struct DONAUDB_Plugin * @return #GNUNET_OK on success */ enum GNUNET_GenericReturnValue - (*start)(void *cls, - const char *name); + (*start)(void *cls, + const char *name); /** @@ -254,8 +254,8 @@ struct DONAUDB_Plugin * @return #GNUNET_OK on success */ enum GNUNET_GenericReturnValue - (*start_read_committed)(void *cls, - const char *name); + (*start_read_committed)(void *cls, + const char *name); /** * Start a READ ONLY serializable transaction. @@ -266,8 +266,8 @@ struct DONAUDB_Plugin * @return #GNUNET_OK on success */ enum GNUNET_GenericReturnValue - (*start_read_only)(void *cls, - const char *name); + (*start_read_only)(void *cls, + const char *name); /** @@ -277,7 +277,7 @@ struct DONAUDB_Plugin * @return transaction status */ enum GNUNET_DB_QueryStatus - (*commit)(void *cls); + (*commit)(void *cls); /** @@ -291,7 +291,7 @@ struct DONAUDB_Plugin * #GNUNET_SYSERR on hard errors */ enum GNUNET_GenericReturnValue - (*preflight)(void *cls); + (*preflight)(void *cls); /** @@ -312,7 +312,7 @@ struct DONAUDB_Plugin * #GNUNET_SYSERR on DB errors */ enum GNUNET_GenericReturnValue - (*gc)(void *cls); + (*gc)(void *cls); /** @@ -367,7 +367,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*lookup_charity)( + (*lookup_charity)( void *cls, uint64_t charity_id, struct DONAUDB_CharityMetaData *meta); @@ -382,7 +382,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*do_charity_delete)( + (*do_charity_delete)( void *cls, uint64_t charity_id); @@ -395,7 +395,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*get_charities)( + (*get_charities)( void *cls, DONAUDB_GetCharitiesCallback cb, void *cb_cls); @@ -409,7 +409,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*insert_charity)( + (*insert_charity)( void *cls, const struct DONAU_CharityPublicKeyP *charity_pub, const char *charity_name, @@ -428,7 +428,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*iterate_donation_units)( + (*iterate_donation_units)( void *cls, DONAUDB_IterateDonationUnitsCallback cb, void *cb_cls); @@ -442,7 +442,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*get_history)( + (*get_history)( void *cls, DONAUDB_GetHistoryCallback cb, void *cb_cls); @@ -456,7 +456,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*lookup_history_entry)( + (*lookup_history_entry)( void *cls, const unsigned long long charity_id, const struct TALER_Amount *final_amount, @@ -470,7 +470,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*insert_donation_unit)( + (*insert_donation_unit)( void *cls, const struct DONAU_DonationUnitHashP *h_donation_unit_pub, const struct DONAU_DonationUnitPublicKey *donation_unit_pub, @@ -487,7 +487,7 @@ struct DONAUDB_Plugin * @return transaction status code */ enum GNUNET_DB_QueryStatus - (*insert_history_entry)( + (*insert_history_entry)( void *cls, const uint64_t charity_id, const struct TALER_Amount *final_amount, @@ -506,7 +506,7 @@ struct DONAUDB_Plugin * @return transaction status code */ enum GNUNET_DB_QueryStatus - (*insert_issued_receipt)( + (*insert_issued_receipt)( void *cls, const size_t num_blinded_sig, const struct DONAU_BlindedDonationUnitSignature signatures[num_blinded_sig], @@ -527,9 +527,9 @@ struct DONAUDB_Plugin * @return transaction status code */ enum GNUNET_DB_QueryStatus - (*insert_submitted_receipts)( + (*insert_submitted_receipts)( void *cls, - const struct DONAU_HashDonorTaxId *h_tax_number, + struct DONAU_HashDonorTaxId *h_tax_number, size_t num_dr, const struct DONAU_DonationReceipt donation_receipts[static num_dr], uint64_t donation_year); @@ -543,7 +543,7 @@ struct DONAUDB_Plugin * @return transaction status code */ enum GNUNET_DB_QueryStatus - (*lookup_issued_receipts)( + (*lookup_issued_receipts)( void *cls, struct DONAU_DonationReceiptHashP *h_receitps, struct DONAUDB_IssuedReceiptsMetaData *meta); @@ -557,7 +557,7 @@ struct DONAUDB_Plugin * @return transaction status code */ enum GNUNET_DB_QueryStatus - (*insert_signing_key)( + (*insert_signing_key)( void *cls, const struct DONAU_DonauPublicKeyP *donau_pub, struct DONAUDB_SignkeyMetaData *meta); @@ -571,7 +571,7 @@ struct DONAUDB_Plugin * @return transaction status code */ enum GNUNET_DB_QueryStatus - (*lookup_signing_key)( + (*lookup_signing_key)( void *cls, const struct DONAU_DonauPublicKeyP *donau_pub, struct DONAUDB_SignkeyMetaData *meta); @@ -585,7 +585,7 @@ struct DONAUDB_Plugin * @return database transaction status */ enum GNUNET_DB_QueryStatus - (*iterate_active_signing_keys)( + (*iterate_active_signing_keys)( void *cls, DONAUDB_IterateActiveSigningKeysCallback cb, void *cb_cls);