summaryrefslogtreecommitdiff
path: root/src/merchant/test_merchant_db.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/merchant/test_merchant_db.c')
-rw-r--r--src/merchant/test_merchant_db.c147
1 files changed, 0 insertions, 147 deletions
diff --git a/src/merchant/test_merchant_db.c b/src/merchant/test_merchant_db.c
deleted file mode 100644
index 505b12c3..00000000
--- a/src/merchant/test_merchant_db.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- This file is part of TALER
- (C) 2014 Christian Grothoff (and other contributing authors)
-
- 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, If not, see <http://www.gnu.org/licenses/>
-*/
-
-/**
- * @file merchant/test_merchant_db.c
- * @brief File to test merchant database helper functions.
- * @author Sree Harsha Totakura <sreeharsha@totakura.in>
- */
-
-#include "platform.h"
-#include <gnunet/gnunet_util_lib.h>
-#include <taler/taler_util.h>
-#include "merchant_db.h"
-
-/**
- * Shorthand for exit jumps.
- */
-#define EXITIF(cond) \
- do { \
- if (cond) { GNUNET_break (0); goto EXITIF_exit; } \
- } while (0)
-
-/**
- * Macro to round microseconds to seconds in GNUNET_TIME_* structs.
- */
-#define ROUND_TO_SECS(name,us_field) name.us_field -= name.us_field % (1000 * 1000);
-
-/**
- * The database handle
- */
-PGconn *conn;
-
-/**
- * Test result
- */
-static int result;
-
-static void
-do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- if (NULL != conn)
- TALER_MERCHANTDB_disconnect (conn);
- conn = NULL;
-}
-
-
-/**
- * Main function that will be run by the scheduler.
- *
- * @param cls closure
- * @param args remaining command-line arguments
- * @param cfgfile name of the configuration file used (for saving, can be NULL!)
- * @param config configuration
- */
-static void
-run (void *cls, char *const *args, const char *cfgfile,
- const struct GNUNET_CONFIGURATION_Handle *config)
-{
- struct GNUNET_TIME_Absolute expiry;
- struct TALER_Amount amount;
- char *desc = "A contract from GNUnet e.V to say a big Thank You for a donation of the aforementioned amount.";
- uint64_t nounce;
- uint64_t product;
- long long transaction_id;
-
- conn = TALER_MERCHANTDB_connect (config);
- EXITIF (NULL == conn);
- GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
- EXITIF (GNUNET_OK != MERCHANT_DB_initialise (conn, GNUNET_YES));
- expiry = GNUNET_TIME_absolute_get ();
- expiry = GNUNET_TIME_absolute_add (expiry, GNUNET_TIME_UNIT_DAYS);
- ROUND_TO_SECS (expiry, abs_value_us);
- amount.value = 1;
- amount.fraction = 0;
- nounce = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_NONCE, UINT64_MAX);
- product = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_NONCE, UINT64_MAX);
- product &= (UINT64_MAX >> 1);
- EXITIF (-1 == (transaction_id = TALER_MERCHANTDB_contract_create (conn,
- expiry,
- &amount,
- desc,
- nounce,
- product)));
- {
- struct GNUNET_CRYPTO_EddsaPublicKey coin_pub;
- struct GNUNET_CRYPTO_EddsaSignature coin_sig;
- long long paid_product;
-
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
- &coin_pub, sizeof (coin_pub));
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
- &coin_sig, sizeof (coin_sig));
- EXITIF (GNUNET_SYSERR == TALER_MERCHANTDB_checkout_create (conn,
- &coin_pub,
- transaction_id,
- &amount,
- &coin_sig));
- EXITIF (-1 == (paid_product = TALER_MERCHANTDB_checkout_get_product (conn,
- &coin_pub)));
- EXITIF (paid_product < 0);
- EXITIF (((uint64_t) paid_product) != product);
- /* We should get -1 for product if a coin is not paid to us */
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
- &coin_pub, sizeof (coin_pub));
- EXITIF (-1 != (product = TALER_MERCHANTDB_checkout_get_product (conn,
- &coin_pub)));
- }
- result = GNUNET_OK;
-
- EXITIF_exit:
- return;
-}
-
-int
-main (int argc, char *const argv[])
-{
- char *argv2[] = {
- "test-merchant-db",
- "-c", "test_merchant.conf",
- NULL
- };
- static const struct GNUNET_GETOPT_CommandLineOption options[] = {
- GNUNET_GETOPT_OPTION_END
- };
-
- result = GNUNET_SYSERR;
- if (GNUNET_OK !=
- GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1,
- argv2, "test-merchant-db",
- "File to test merchant database helper functions.",
- options, &run, NULL))
- return 3;
- return (GNUNET_OK == result) ? 0 : 1;
-}