exchange/src/bank-lib/test_bank_api.c

121 lines
3.4 KiB
C
Raw Normal View History

2016-01-25 10:20:40 +01:00
/*
This file is part of TALER
2016-01-29 14:24:18 +01:00
Copyright (C) 2016 GNUnet e.V.
2016-01-25 10:20:40 +01:00
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 bank/test_bank_api.c
* @brief testcase to test bank's HTTP API interface against the "real" bank
2016-01-25 10:20:40 +01:00
* @author Christian Grothoff
*/
#include "platform.h"
#include "taler_util.h"
#include "taler_signatures.h"
#include "taler_bank_service.h"
#include <gnunet/gnunet_util_lib.h>
#include <gnunet/gnunet_curl_lib.h>
2016-01-25 10:20:40 +01:00
#include <microhttpd.h>
#include "test_bank_interpreter.h"
2016-01-25 10:20:40 +01:00
/**
* Main function that will be run by the scheduler.
*
* @param cls closure
*/
static void
run (void *cls)
2016-01-25 10:20:40 +01:00
{
int *resultp = cls;
static struct TBI_Command commands[] =
2016-01-25 10:20:40 +01:00
{
2016-01-29 14:24:18 +01:00
/* Add EUR:5.01 to account 42 */
{ .oc = TBI_OC_ADMIN_ADD_INCOMING,
2016-01-29 14:24:18 +01:00
.label = "deposit-1",
2016-01-25 10:20:40 +01:00
.expected_response_code = MHD_HTTP_OK,
2016-04-11 23:44:09 +02:00
.details.admin_add_incoming.credit_account_no = 1,
.details.admin_add_incoming.debit_account_no = 2,
.details.admin_add_incoming.amount = "PUDOS:5.01" },
2016-01-25 10:20:40 +01:00
{ .oc = TBI_OC_END }
2016-01-25 10:20:40 +01:00
};
TBI_run_interpreter (resultp,
0 /* we use the "real" taler bank */,
commands);
2016-01-25 10:20:40 +01:00
}
/**
* Main function for the testcase for the bank API.
*
* @param argc expected to be 1
* @param argv expected to only contain the program name
*/
int
main (int argc,
char * const *argv)
{
struct GNUNET_OS_Process *bankd;
2016-03-23 10:06:41 +01:00
unsigned int cnt;
int result;
2016-01-25 10:20:40 +01:00
GNUNET_log_setup ("test-bank-api",
"WARNING",
NULL);
bankd = GNUNET_OS_start_process (GNUNET_NO,
GNUNET_OS_INHERIT_STD_ALL,
NULL, NULL, NULL,
"taler-bank-manage",
"taler-bank-manage",
2016-04-20 01:50:26 +02:00
"serve-http",
"--port", "8081",
2016-01-25 10:20:40 +01:00
NULL);
2016-01-29 14:24:18 +01:00
if (NULL == bankd)
{
fprintf (stderr,
"taler-bank-manage not found, skipping test\n");
2016-01-29 14:24:18 +01:00
return 77; /* report 'skip' */
}
2016-01-25 10:20:40 +01:00
/* give child time to start and bind against the socket */
2016-01-29 14:24:18 +01:00
fprintf (stderr,
2016-04-11 21:10:20 +02:00
"Waiting for taler-bank-manage to be ready\n");
2016-03-23 10:06:41 +01:00
cnt = 0;
2016-01-25 10:20:40 +01:00
do
{
fprintf (stderr, ".");
sleep (1);
2016-03-23 10:06:41 +01:00
cnt++;
if (cnt > 30)
break;
2016-01-25 10:20:40 +01:00
}
while (0 != system ("wget -q -t 1 -T 1 http://127.0.0.1:8081/ -o /dev/null -O /dev/null"));
2016-01-25 10:20:40 +01:00
fprintf (stderr, "\n");
result = GNUNET_SYSERR;
2016-03-23 10:06:41 +01:00
if (cnt <= 30)
GNUNET_SCHEDULER_run (&run, &result);
2016-01-25 10:20:40 +01:00
GNUNET_OS_process_kill (bankd,
SIGTERM);
GNUNET_OS_process_wait (bankd);
GNUNET_OS_process_destroy (bankd);
2016-03-23 10:06:41 +01:00
if (cnt > 30)
{
fprintf (stderr,
"taler-bank-manage failed to start properly.\n");
return 77;
}
2016-01-25 10:20:40 +01:00
return (GNUNET_OK == result) ? 0 : 1;
}
/* end of test_bank_api.c */