diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/bank-lib/Makefile.am | 19 | ||||
| -rw-r--r-- | src/bank-lib/test_bank_api_NEW.c | 262 | ||||
| -rw-r--r-- | src/bank-lib/test_bank_api_new.c | 283 | 
3 files changed, 167 insertions, 397 deletions
diff --git a/src/bank-lib/Makefile.am b/src/bank-lib/Makefile.am index 8b5d59a6..50bf32ab 100644 --- a/src/bank-lib/Makefile.am +++ b/src/bank-lib/Makefile.am @@ -108,7 +108,7 @@ check_PROGRAMS += \  test_bank_api_with_pybank_twisted_SOURCES = \ -  test_bank_api_twisted_NEW.c +  test_bank_api_twisted_new.c  test_bank_api_with_pybank_twisted_LDADD = \    $(top_builddir)/src/lib/libtalertesting.la \    libtalerbank.la \ @@ -124,7 +124,7 @@ test_bank_api_with_pybank_twisted_LDADD = \  test_bank_api_with_fakebank_twisted_SOURCES = \ -  test_bank_api_twisted_NEW.c +  test_bank_api_twisted_new.c  test_bank_api_with_fakebank_twisted_LDADD = \    $(top_builddir)/src/lib/libtalertesting.la \    libtalerbank.la \ @@ -153,17 +153,6 @@ test_bank_api_LDADD = \    -lgnunetutil \    -ljansson -test_bank_api_new_SOURCES = \ -  test_bank_api_new.c - -test_bank_api_new_LDADD = \ -  $(top_builddir)/src/lib/libtalertesting.la \ -  $(top_builddir)/src/json/libtalerjson.la \ -  libtalerbanktesting.la \ -  -ltalerexchange \ -  -lgnunetutil \ -  libtalerbank.la -  test_bank_api_with_fakebank_SOURCES = \    test_bank_interpreter.c test_bank_interpreter.h \    test_bank_api_with_fakebank.c @@ -176,7 +165,7 @@ test_bank_api_with_fakebank_LDADD = \    -ljansson  test_bank_api_with_pybank_new_SOURCES = \ -  test_bank_api_NEW.c +  test_bank_api_new.c  test_bank_api_with_pybank_new_LDADD = \    $(top_builddir)/src/lib/libtalertesting.la \ @@ -186,7 +175,7 @@ test_bank_api_with_pybank_new_LDADD = \    libtalerbank.la  test_bank_api_with_fakebank_new_SOURCES = \ -  test_bank_api_NEW.c +  test_bank_api_new.c  test_bank_api_with_fakebank_new_LDADD = \    $(top_builddir)/src/lib/libtalertesting.la \ diff --git a/src/bank-lib/test_bank_api_NEW.c b/src/bank-lib/test_bank_api_NEW.c deleted file mode 100644 index 5c7920b7..00000000 --- a/src/bank-lib/test_bank_api_NEW.c +++ /dev/null @@ -1,262 +0,0 @@ -/* -  This file is part of TALER -  Copyright (C) 2016, 2017 GNUnet e.V. - -  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 bank/test_bank_api_with_fakebank.c - * @brief testcase to test bank's HTTP API - *        interface against the fakebank - * @author Marcello Stanisci - * @author Christian Grothoff - */ - -#include "platform.h" -#include "taler_util.h" -#include "taler_signatures.h" -#include "taler_bank_service.h" -#include "taler_exchange_service.h" -#include <gnunet/gnunet_util_lib.h> -#include <gnunet/gnunet_curl_lib.h> -#include <microhttpd.h> -#include "test_bank_interpreter.h" -#include "taler_testing_lib.h" -#include "taler_testing_bank_lib.h" - - -#define CONFIG_FILE "bank.conf" - -/** - * Fakebank URL. - */ -static char *bank_url; - -/** - * Handle to the Py-bank daemon. - */ -static struct GNUNET_OS_Process *bankd; - -/** - * Flag indicating whether the test is running against the - * Fakebank.  Set up at runtime. - */ -static int WITH_FAKEBANK; - -/** - * Main function that will tell the interpreter what commands to - * run. - * - * @param cls closure - */ -static void -run (void *cls, -     struct TALER_TESTING_Interpreter *is) -{ -  GNUNET_log (GNUNET_ERROR_TYPE_INFO, -              "Bank serves at `%s'\n", -              bank_url); -  extern struct TALER_BANK_AuthenticationData AUTHS[]; - -  struct TALER_TESTING_Command commands[] = { - -    TALER_TESTING_cmd_bank_history ("history-0", -                                    bank_url, -                                    BANK_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_BOTH, -                                    GNUNET_YES, -                                    NULL, -                                    1), - -    /* WARNING: old API has expected http response code among -     * the parameters, although it was always set as '200 OK' */ -    TALER_TESTING_cmd_fakebank_transfer_with_subject -      ("debit-1", -       "KUDOS:5.01", -       bank_url, -       EXCHANGE_ACCOUNT_NUMBER, -       BANK_ACCOUNT_NUMBER, -       AUTHS[EXCHANGE_ACCOUNT_NUMBER - 1].details.basic.username, -       AUTHS[EXCHANGE_ACCOUNT_NUMBER - 1].details.basic.password, -       "subject 1", -       "http://exchange.com/"), - -    TALER_TESTING_cmd_bank_history ("history-1c", -                                    bank_url, -                                    BANK_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_CREDIT, -                                    GNUNET_YES, -                                    NULL, -                                    5), - -    TALER_TESTING_cmd_bank_history ("history-1d", -                                    bank_url, -                                    BANK_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_DEBIT, -                                    GNUNET_YES, -                                    NULL, -                                    5), - -    TALER_TESTING_cmd_fakebank_transfer_with_subject -      ("debit-2", -       "KUDOS:3.21", -       bank_url, -       EXCHANGE_ACCOUNT_NUMBER,  // debit account. -       USER_ACCOUNT_NUMBER, -       AUTHS[EXCHANGE_ACCOUNT_NUMBER - 1].details.basic.username, -       AUTHS[EXCHANGE_ACCOUNT_NUMBER - 1].details.basic.password, -       "subject 2", -       "http://exchange.org/"), - -    TALER_TESTING_cmd_fakebank_transfer_with_subject -      ("credit-2", -       "KUDOS:3.22", -       bank_url, -       USER_ACCOUNT_NUMBER,  // debit account. -       EXCHANGE_ACCOUNT_NUMBER, -       AUTHS[USER_ACCOUNT_NUMBER - 1].details.basic.username, -       AUTHS[USER_ACCOUNT_NUMBER - 1].details.basic.password, -       "credit 2", -       "http://exchange.org/"), - -    TALER_TESTING_cmd_bank_history ("history-2b", -                                    bank_url, -                                    EXCHANGE_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_BOTH, -                                    GNUNET_YES, -                                    NULL, -                                    5), - -    TALER_TESTING_cmd_bank_history ("history-2bi", -                                    bank_url, -                                    EXCHANGE_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_BOTH, -                                    GNUNET_YES, -                                    "debit-1", -                                    5), - -    TALER_TESTING_cmd_fakebank_transfer_with_subject -      ("credit-for-reject-1", -       "KUDOS:1.01", -       bank_url, -       BANK_ACCOUNT_NUMBER, -       EXCHANGE_ACCOUNT_NUMBER, -       AUTHS[BANK_ACCOUNT_NUMBER - 1].details.basic.username, -       AUTHS[BANK_ACCOUNT_NUMBER - 1].details.basic.password, -       "subject 3", -       "http://exchange.net/"), - -    TALER_TESTING_cmd_bank_reject ("reject-1", -                                   bank_url, -                                   "credit-for-reject-1"), - -    TALER_TESTING_cmd_bank_history ("history-r1", -                                    bank_url, -                                    BANK_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_BOTH, -                                    GNUNET_YES, -                                    NULL, -                                    5), - -    TALER_TESTING_cmd_bank_history ("history-r1c", -                                    bank_url, -                                    BANK_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_BOTH -                                    | TALER_BANK_DIRECTION_CANCEL, -                                    GNUNET_YES, -                                    NULL, -                                    5), - -    /** -     * End the suite.  Fixme: better to have a label for this -     * too, as it shows a "(null)" token on logs. -     */ -    TALER_TESTING_cmd_end () -  }; - -  if (GNUNET_YES == WITH_FAKEBANK) -    TALER_TESTING_run_with_fakebank (is, -                                     commands, -                                     bank_url); -  else -    TALER_TESTING_run (is, -                       commands); -} - -int -main (int argc, -      char *const *argv) -{ -  int rv; -  /* These environment variables get in the way... */ -  unsetenv ("XDG_DATA_HOME"); -  unsetenv ("XDG_CONFIG_HOME"); -  GNUNET_log_setup ("test-bank-api-with-(fake)bank-new", -                    "DEBUG", -                    NULL); - -  WITH_FAKEBANK = TALER_TESTING_has_in_name (argv[0], -                                             "_with_fakebank"); -  if (GNUNET_YES == WITH_FAKEBANK) -  { -    TALER_LOG_DEBUG ("Running against the Fakebank.\n"); -    if (NULL == (bank_url = TALER_TESTING_prepare_fakebank -        (CONFIG_FILE, -         "account-1"))) -    { -      GNUNET_break (0); -      return 77; -    } -  } -  else -  { -    TALER_LOG_DEBUG ("Running against the Pybank.\n"); -    if (NULL == (bank_url = TALER_TESTING_prepare_bank -        (CONFIG_FILE))) -    { -      GNUNET_break (0); -      return 77; -    } - -    if (NULL == (bankd = TALER_TESTING_run_bank -        (CONFIG_FILE, -         bank_url))) -    { -      GNUNET_break (0); -      return 77; -    } -  } - -  rv = (GNUNET_OK == TALER_TESTING_setup (&run, -                                          NULL, -                                          CONFIG_FILE, -                                          NULL, -                                          GNUNET_NO)) ? 0 : 1; -  if (GNUNET_NO == WITH_FAKEBANK) -  { - -    GNUNET_OS_process_kill (bankd, -                            SIGKILL); -    GNUNET_OS_process_wait (bankd); -    GNUNET_OS_process_destroy (bankd); -    GNUNET_free (bank_url); -  } -   -  return rv; -} - - -/* end of test_bank_api_with_fakebank_new.c */ diff --git a/src/bank-lib/test_bank_api_new.c b/src/bank-lib/test_bank_api_new.c index 17acac9b..5c7920b7 100644 --- a/src/bank-lib/test_bank_api_new.c +++ b/src/bank-lib/test_bank_api_new.c @@ -3,14 +3,14 @@    Copyright (C) 2016, 2017 GNUnet e.V.    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. +  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. +  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, @@ -18,61 +18,43 @@  */  /** - * @file bank/test_bank_api_new.c + * @file bank/test_bank_api_with_fakebank.c   * @brief testcase to test bank's HTTP API - *        interface against the "real" bank - * @author Christian Grothoff + *        interface against the fakebank   * @author Marcello Stanisci + * @author Christian Grothoff   */  #include "platform.h"  #include "taler_util.h"  #include "taler_signatures.h"  #include "taler_bank_service.h" +#include "taler_exchange_service.h"  #include <gnunet/gnunet_util_lib.h>  #include <gnunet/gnunet_curl_lib.h>  #include <microhttpd.h> -#include "taler_exchange_service.h"  #include "test_bank_interpreter.h"  #include "taler_testing_lib.h"  #include "taler_testing_bank_lib.h" +  #define CONFIG_FILE "bank.conf"  /** - * Add seconds. - * - * @param base absolute time to add seconds to. - * @param relative number of seconds to add. - * @return a new absolute time, modified according to @e relative. - */ -#define ADDSECS(base, secs) \ -  GNUNET_TIME_absolute_add \ -    (base, \ -    GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, \ -                                   secs)) -/** - * Subtract seconds. - * - * @param base absolute time to subtract seconds to. - * @param secs relative number of _seconds_ to subtract. - * @return a new absolute time, modified according to @e relative. + * Fakebank URL.   */ -#define SUBSECS(base, secs) \ -  GNUNET_TIME_absolute_subtract \ -    (base, \ -    GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, \ -                                   secs)) +static char *bank_url; +  /** - * Bank process. + * Handle to the Py-bank daemon.   */ -struct GNUNET_OS_Process *bankd; +static struct GNUNET_OS_Process *bankd;  /** - * Bank URL. + * Flag indicating whether the test is running against the + * Fakebank.  Set up at runtime.   */ -char *bank_url; - +static int WITH_FAKEBANK;  /**   * Main function that will tell the interpreter what commands to @@ -84,91 +66,120 @@ static void  run (void *cls,       struct TALER_TESTING_Interpreter *is)  { +  GNUNET_log (GNUNET_ERROR_TYPE_INFO, +              "Bank serves at `%s'\n", +              bank_url);    extern struct TALER_BANK_AuthenticationData AUTHS[]; -  struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get (); +    struct TALER_TESTING_Command commands[] = { +      TALER_TESTING_cmd_bank_history ("history-0",                                      bank_url, -                                    EXCHANGE_ACCOUNT_NUMBER, +                                    BANK_ACCOUNT_NUMBER,                                      TALER_BANK_DIRECTION_BOTH, -                                    GNUNET_NO, -                                    NULL, /* start */ -                                    5), -    TALER_TESTING_cmd_bank_history_range_with_dates -      ("history-0-range", -      bank_url, -      EXCHANGE_ACCOUNT_NUMBER, -      TALER_BANK_DIRECTION_BOTH, -      GNUNET_NO, -      SUBSECS (now, -               5), -      ADDSECS (now, -               5)), -    TALER_TESTING_cmd_fakebank_transfer_with_subject -      ("deposit-1", -      "KUDOS:5.01", -      bank_url, -      BANK_ACCOUNT_NUMBER, -      EXCHANGE_ACCOUNT_NUMBER, -      AUTHS[BANK_ACCOUNT_NUMBER - 1].details.basic.username, -      AUTHS[BANK_ACCOUNT_NUMBER - 1].details.basic.password, -      "subject 1", -      "http://exchange.com/"), -    /* bank gives to exchange */ +                                    GNUNET_YES, +                                    NULL, +                                    1), + +    /* WARNING: old API has expected http response code among +     * the parameters, although it was always set as '200 OK' */      TALER_TESTING_cmd_fakebank_transfer_with_subject -      ("deposit-2", -      "KUDOS:5.01", -      bank_url, -      BANK_ACCOUNT_NUMBER, -      EXCHANGE_ACCOUNT_NUMBER, -      AUTHS[BANK_ACCOUNT_NUMBER - 1].details.basic.username, -      AUTHS[BANK_ACCOUNT_NUMBER - 1].details.basic.password, -      "subject 2", -      "http://exchange.com/"), +      ("debit-1", +       "KUDOS:5.01", +       bank_url, +       EXCHANGE_ACCOUNT_NUMBER, +       BANK_ACCOUNT_NUMBER, +       AUTHS[EXCHANGE_ACCOUNT_NUMBER - 1].details.basic.username, +       AUTHS[EXCHANGE_ACCOUNT_NUMBER - 1].details.basic.password, +       "subject 1", +       "http://exchange.com/"), +      TALER_TESTING_cmd_bank_history ("history-1c",                                      bank_url, -                                    EXCHANGE_ACCOUNT_NUMBER, +                                    BANK_ACCOUNT_NUMBER,                                      TALER_BANK_DIRECTION_CREDIT,                                      GNUNET_YES,                                      NULL,                                      5), +      TALER_TESTING_cmd_bank_history ("history-1d",                                      bank_url, -                                    EXCHANGE_ACCOUNT_NUMBER, +                                    BANK_ACCOUNT_NUMBER,                                      TALER_BANK_DIRECTION_DEBIT,                                      GNUNET_YES,                                      NULL,                                      5), -    TALER_TESTING_cmd_bank_history ("history-1dr", + +    TALER_TESTING_cmd_fakebank_transfer_with_subject +      ("debit-2", +       "KUDOS:3.21", +       bank_url, +       EXCHANGE_ACCOUNT_NUMBER,  // debit account. +       USER_ACCOUNT_NUMBER, +       AUTHS[EXCHANGE_ACCOUNT_NUMBER - 1].details.basic.username, +       AUTHS[EXCHANGE_ACCOUNT_NUMBER - 1].details.basic.password, +       "subject 2", +       "http://exchange.org/"), + +    TALER_TESTING_cmd_fakebank_transfer_with_subject +      ("credit-2", +       "KUDOS:3.22", +       bank_url, +       USER_ACCOUNT_NUMBER,  // debit account. +       EXCHANGE_ACCOUNT_NUMBER, +       AUTHS[USER_ACCOUNT_NUMBER - 1].details.basic.username, +       AUTHS[USER_ACCOUNT_NUMBER - 1].details.basic.password, +       "credit 2", +       "http://exchange.org/"), + +    TALER_TESTING_cmd_bank_history ("history-2b",                                      bank_url,                                      EXCHANGE_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_DEBIT, +                                    TALER_BANK_DIRECTION_BOTH,                                      GNUNET_YES,                                      NULL,                                      5), -    TALER_TESTING_cmd_bank_history ("history-2fwd", + +    TALER_TESTING_cmd_bank_history ("history-2bi",                                      bank_url,                                      EXCHANGE_ACCOUNT_NUMBER, -                                    TALER_BANK_DIRECTION_DEBIT, +                                    TALER_BANK_DIRECTION_BOTH,                                      GNUNET_YES, -                                    "deposit-1", +                                    "debit-1",                                      5), -    /** -     * Just check that the two transactions show up. -     */ -    TALER_TESTING_cmd_bank_history_range_with_dates -      ("history-2-range", -      bank_url, -      EXCHANGE_ACCOUNT_NUMBER, -      TALER_BANK_DIRECTION_BOTH, -      GNUNET_NO, -      SUBSECS (now, -               50), -      ADDSECS (now, -               5)), + +    TALER_TESTING_cmd_fakebank_transfer_with_subject +      ("credit-for-reject-1", +       "KUDOS:1.01", +       bank_url, +       BANK_ACCOUNT_NUMBER, +       EXCHANGE_ACCOUNT_NUMBER, +       AUTHS[BANK_ACCOUNT_NUMBER - 1].details.basic.username, +       AUTHS[BANK_ACCOUNT_NUMBER - 1].details.basic.password, +       "subject 3", +       "http://exchange.net/"), +      TALER_TESTING_cmd_bank_reject ("reject-1",                                     bank_url, -                                   "deposit-1"), +                                   "credit-for-reject-1"), + +    TALER_TESTING_cmd_bank_history ("history-r1", +                                    bank_url, +                                    BANK_ACCOUNT_NUMBER, +                                    TALER_BANK_DIRECTION_BOTH, +                                    GNUNET_YES, +                                    NULL, +                                    5), + +    TALER_TESTING_cmd_bank_history ("history-r1c", +                                    bank_url, +                                    BANK_ACCOUNT_NUMBER, +                                    TALER_BANK_DIRECTION_BOTH +                                    | TALER_BANK_DIRECTION_CANCEL, +                                    GNUNET_YES, +                                    NULL, +                                    5), +      /**       * End the suite.  Fixme: better to have a label for this       * too, as it shows a "(null)" token on logs. @@ -176,44 +187,76 @@ run (void *cls,      TALER_TESTING_cmd_end ()    }; -  TALER_TESTING_run (is, commands); +  if (GNUNET_YES == WITH_FAKEBANK) +    TALER_TESTING_run_with_fakebank (is, +                                     commands, +                                     bank_url); +  else +    TALER_TESTING_run (is, +                       commands);  } - -/* Pacifies "make check" */  int  main (int argc,        char *const *argv)  { -  unsigned int ret; +  int rv;    /* These environment variables get in the way... */    unsetenv ("XDG_DATA_HOME");    unsetenv ("XDG_CONFIG_HOME"); -  GNUNET_log_setup ("test-bank-api-new", "DEBUG", NULL); +  GNUNET_log_setup ("test-bank-api-with-(fake)bank-new", +                    "DEBUG", +                    NULL); -  if (NULL == -      (bank_url = TALER_TESTING_prepare_bank (CONFIG_FILE))) -    return 77; +  WITH_FAKEBANK = TALER_TESTING_has_in_name (argv[0], +                                             "_with_fakebank"); +  if (GNUNET_YES == WITH_FAKEBANK) +  { +    TALER_LOG_DEBUG ("Running against the Fakebank.\n"); +    if (NULL == (bank_url = TALER_TESTING_prepare_fakebank +        (CONFIG_FILE, +         "account-1"))) +    { +      GNUNET_break (0); +      return 77; +    } +  } +  else +  { +    TALER_LOG_DEBUG ("Running against the Pybank.\n"); +    if (NULL == (bank_url = TALER_TESTING_prepare_bank +        (CONFIG_FILE))) +    { +      GNUNET_break (0); +      return 77; +    } -  if (NULL == (bankd = -                 TALER_TESTING_run_bank (CONFIG_FILE, bank_url))) -    return 77; +    if (NULL == (bankd = TALER_TESTING_run_bank +        (CONFIG_FILE, +         bank_url))) +    { +      GNUNET_break (0); +      return 77; +    } +  } -  ret = TALER_TESTING_setup (&run, -                             NULL, -                             CONFIG_FILE, -                             NULL, -                             GNUNET_NO); // means no exchange. +  rv = (GNUNET_OK == TALER_TESTING_setup (&run, +                                          NULL, +                                          CONFIG_FILE, +                                          NULL, +                                          GNUNET_NO)) ? 0 : 1; +  if (GNUNET_NO == WITH_FAKEBANK) +  { -  GNUNET_OS_process_kill (bankd, SIGKILL); -  GNUNET_OS_process_wait (bankd); -  GNUNET_OS_process_destroy (bankd); -  GNUNET_free (bank_url); - -  if (GNUNET_OK == ret) -    return 0; - -  return 1; +    GNUNET_OS_process_kill (bankd, +                            SIGKILL); +    GNUNET_OS_process_wait (bankd); +    GNUNET_OS_process_destroy (bankd); +    GNUNET_free (bank_url); +  } +   +  return rv;  } -/* end of test_bank_api_new.c */ + +/* end of test_bank_api_with_fakebank_new.c */  | 
