From 9de8b7762547e4064d618cf2ad1e4da8a1f6994b Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 24 Jan 2019 18:45:47 +0100 Subject: adding separate test just for /verison API --- src/lib/test_auditor_api_version.c | 163 +++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 src/lib/test_auditor_api_version.c (limited to 'src/lib/test_auditor_api_version.c') diff --git a/src/lib/test_auditor_api_version.c b/src/lib/test_auditor_api_version.c new file mode 100644 index 000000000..7a21430da --- /dev/null +++ b/src/lib/test_auditor_api_version.c @@ -0,0 +1,163 @@ +/* + This file is part of TALER + Copyright (C) 2014-2018 Taler Systems SA + + 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 + +*/ + +/** + * @file auditor-lib/test_auditor_api_version.c + * @brief testcase to test auditor's HTTP API interface to fetch /version + * @author Christian Grothoff + * @author Marcello Stanisci + */ +#include "platform.h" +#include "taler_util.h" +#include "taler_signatures.h" +#include "taler_exchange_service.h" +#include "taler_auditor_service.h" +#include "taler_json_lib.h" +#include +#include +#include "taler_bank_service.h" +#include "taler_fakebank_lib.h" +#include "taler_testing_lib.h" +#include "taler_testing_auditor_lib.h" + +/** + * Configuration file we use. One (big) configuration is used + * for the various components for this test. + */ +#define CONFIG_FILE "test_auditor_api.conf" + +static struct TALER_AUDITOR_Handle *ah; + +static struct GNUNET_CURL_Context *ctx; + +static struct GNUNET_CURL_RescheduleContext *rc; + +static int global_ret; + +static struct GNUNET_SCHEDULER_Task *tt; + +static void +do_shutdown (void *cls) +{ + (void) cls; + + if (NULL != tt) + { + GNUNET_SCHEDULER_cancel (tt); + tt = NULL; + } + TALER_AUDITOR_disconnect (ah); + GNUNET_CURL_fini (ctx); + GNUNET_CURL_gnunet_rc_destroy (rc); +} + + +static void +do_timeout (void *cls) +{ + (void) cls; + tt = NULL; + global_ret = 3; + GNUNET_SCHEDULER_shutdown (); +} + + +/** + * Function called with information about the auditor. + * + * @param cls closure + * @param vi basic information about the auditor + * @param compat protocol compatibility information + */ +static void +version_cb (void *cls, + const struct TALER_AUDITOR_VersionInformation *vi, + enum TALER_AUDITOR_VersionCompatibility compat) +{ + if ( (NULL != vi) && + (TALER_AUDITOR_VC_MATCH == compat) ) + global_ret = 0; + else + global_ret = 2; + GNUNET_SCHEDULER_shutdown (); +} + + +/** + * Main function that will tell the interpreter what commands to + * run. + * + * @param cls closure + */ +static void +run (void *cls) +{ + const char *auditor_url = "http://localhost:8083/"; + + (void) cls; + ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule, + &rc); + rc = GNUNET_CURL_gnunet_rc_create (ctx); + ah = TALER_AUDITOR_connect (ctx, + auditor_url, + &version_cb, + NULL); + GNUNET_SCHEDULER_add_shutdown (&do_shutdown, + NULL); + tt = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, + &do_timeout, + NULL); +} + + +int +main (int argc, + char * const *argv) +{ + struct GNUNET_OS_Process *proc; + + /* These environment variables get in the way... */ + unsetenv ("XDG_DATA_HOME"); + unsetenv ("XDG_CONFIG_HOME"); + GNUNET_log_setup ("test-auditor-api-version", + "INFO", + NULL); + proc = GNUNET_OS_start_process (GNUNET_NO, + GNUNET_OS_INHERIT_STD_ALL, + NULL, NULL, NULL, + "taler-auditor-httpd", + "taler-auditor-httpd", + "-c", CONFIG_FILE, + NULL); + if (NULL == proc) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to run `taler-auditor-httpd`," + " is your PATH correct?\n"); + return 77; + } + GNUNET_SCHEDULER_run (&run, + NULL); + GNUNET_OS_process_kill (proc, SIGTERM); + GNUNET_OS_process_wait (proc); + GNUNET_OS_process_destroy (proc); + return global_ret; +} + +/* end of test_auditor_api_version.c */ -- cgit v1.2.3