test_exchange_management_api.c (7605B)
1 /* 2 This file is part of TALER 3 Copyright (C) 2020-2023 Taler Systems SA 4 5 TALER is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as 7 published by the Free Software Foundation; either version 3, or 8 (at your option) any later version. 9 10 TALER is distributed in the hope that it will be useful, but 11 WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public 16 License along with TALER; see the file COPYING. If not, see 17 <http://www.gnu.org/licenses/> 18 */ 19 /** 20 * @file testing/test_exchange_management_api.c 21 * @brief testcase to test exchange's HTTP /management/ API 22 * @author Christian Grothoff 23 */ 24 #include "taler/platform.h" 25 #include "taler/taler_util.h" 26 #include "taler/taler_exchange_service.h" 27 #include <gnunet/gnunet_util_lib.h> 28 #include <gnunet/gnunet_testing_lib.h> 29 #include <microhttpd.h> 30 #include "taler/taler_testing_lib.h" 31 32 /** 33 * Configuration file we use. One (big) configuration is used 34 * for the various components for this test. 35 */ 36 static char *config_file; 37 38 /** 39 * Our credentials. 40 */ 41 static struct TALER_TESTING_Credentials cred; 42 43 44 /** 45 * Main function that will tell the interpreter what commands to run. 46 * 47 * @param cls closure 48 * @param is interpreter we use to run commands 49 */ 50 static void 51 run (void *cls, 52 struct TALER_TESTING_Interpreter *is) 53 { 54 struct TALER_TESTING_Command commands[] = { 55 TALER_TESTING_cmd_system_start ("start-taler", 56 config_file, 57 "-u", "exchange-account-2", 58 "-ae", 59 NULL), 60 TALER_TESTING_cmd_get_exchange ("get-exchange", 61 cred.cfg, 62 NULL, 63 true, 64 true), 65 TALER_TESTING_cmd_get_auditor ("get-auditor", 66 cred.cfg, 67 true), 68 TALER_TESTING_cmd_auditor_del ("del-auditor-FROM-SETUP", 69 MHD_HTTP_NO_CONTENT, 70 false), 71 TALER_TESTING_cmd_auditor_add ("add-auditor-BAD-SIG", 72 MHD_HTTP_FORBIDDEN, 73 true), 74 TALER_TESTING_cmd_auditor_add ("add-auditor-OK", 75 MHD_HTTP_NO_CONTENT, 76 false), 77 TALER_TESTING_cmd_auditor_add ("add-auditor-OK-idempotent", 78 MHD_HTTP_NO_CONTENT, 79 false), 80 TALER_TESTING_cmd_auditor_del ("del-auditor-BAD-SIG", 81 MHD_HTTP_FORBIDDEN, 82 true), 83 TALER_TESTING_cmd_auditor_del ("del-auditor-OK", 84 MHD_HTTP_NO_CONTENT, 85 false), 86 TALER_TESTING_cmd_auditor_del ("del-auditor-IDEMPOTENT", 87 MHD_HTTP_NO_CONTENT, 88 false), 89 TALER_TESTING_cmd_set_wire_fee ("set-fee", 90 "foo-method", 91 "EUR:1", 92 "EUR:5", 93 MHD_HTTP_NO_CONTENT, 94 false), 95 TALER_TESTING_cmd_set_wire_fee ("set-fee-conflicting", 96 "foo-method", 97 "EUR:1", 98 "EUR:1", 99 MHD_HTTP_CONFLICT, 100 false), 101 TALER_TESTING_cmd_set_wire_fee ("set-fee-bad-signature", 102 "bar-method", 103 "EUR:1", 104 "EUR:1", 105 MHD_HTTP_FORBIDDEN, 106 true), 107 TALER_TESTING_cmd_set_wire_fee ("set-fee-other-method", 108 "bar-method", 109 "EUR:1", 110 "EUR:1", 111 MHD_HTTP_NO_CONTENT, 112 false), 113 TALER_TESTING_cmd_set_wire_fee ("set-fee-idempotent", 114 "bar-method", 115 "EUR:1", 116 "EUR:1", 117 MHD_HTTP_NO_CONTENT, 118 false), 119 TALER_TESTING_cmd_wire_add ("add-wire-account", 120 cred.user42_payto, 121 MHD_HTTP_NO_CONTENT, 122 false), 123 TALER_TESTING_cmd_wire_add ("add-wire-account-idempotent", 124 cred.user42_payto, 125 MHD_HTTP_NO_CONTENT, 126 false), 127 TALER_TESTING_cmd_wire_add ("add-wire-account-another", 128 cred.user43_payto, 129 MHD_HTTP_NO_CONTENT, 130 false), 131 TALER_TESTING_cmd_wire_add ("add-wire-account-bad-signature", 132 cred.user44_payto, 133 MHD_HTTP_FORBIDDEN, 134 true), 135 TALER_TESTING_cmd_wire_del ("del-wire-account-not-found", 136 cred.user44_payto, 137 MHD_HTTP_NOT_FOUND, 138 false), 139 TALER_TESTING_cmd_wire_del ("del-wire-account-bad-signature", 140 cred.user43_payto, 141 MHD_HTTP_FORBIDDEN, 142 true), 143 TALER_TESTING_cmd_wire_del ("del-wire-account-ok", 144 cred.user43_payto, 145 MHD_HTTP_NO_CONTENT, 146 false), 147 TALER_TESTING_cmd_exec_offline_sign_keys ("download-future-keys", 148 config_file), 149 TALER_TESTING_cmd_get_exchange ("get-exchange-1", 150 cred.cfg, 151 "get-exchange", 152 true, 153 true), 154 TALER_TESTING_cmd_get_exchange ("get-exchange-2", 155 cred.cfg, 156 NULL, 157 true, 158 true), 159 TALER_TESTING_cmd_end () 160 }; 161 162 (void) cls; 163 TALER_TESTING_run (is, 164 commands); 165 } 166 167 168 int 169 main (int argc, 170 char *const *argv) 171 { 172 (void) argc; 173 { 174 char *cipher; 175 176 cipher = GNUNET_STRINGS_get_suffix_from_binary_name (argv[0]); 177 GNUNET_assert (NULL != cipher); 178 GNUNET_asprintf (&config_file, 179 "test_exchange_api-%s.conf", 180 cipher); 181 GNUNET_free (cipher); 182 } 183 return TALER_TESTING_main (argv, 184 "INFO", 185 config_file, 186 "exchange-account-2", 187 TALER_TESTING_BS_FAKEBANK, 188 &cred, 189 &run, 190 NULL); 191 } 192 193 194 /* end of test_exchange_management_api.c */