test_payto.c (4862B)
1 /* 2 This file is part of TALER 3 (C) 2020, 2024 Taler Systems SA 4 5 TALER is free software; you can redistribute it and/or modify it under the 6 terms of the GNU General Public License as published by the Free Software 7 Foundation; either version 3, or (at your option) any later version. 8 9 TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 A PARTICULAR PURPOSE. See the GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License along with 14 TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 */ 16 /** 17 * @file util/test_payto.c 18 * @brief Tests for payto helpers 19 * @author Christian Grothoff 20 */ 21 #include "taler/platform.h" 22 #include "taler/taler_util.h" 23 24 #define CHECK(a,b) do { \ 25 GNUNET_assert (a != NULL); \ 26 GNUNET_assert (b != NULL); \ 27 if (0 != strcmp (a,b)) { \ 28 GNUNET_break (0); \ 29 fprintf (stderr, "Got %s, wanted %s\n", b, a); \ 30 GNUNET_free (b); \ 31 return 1; \ 32 } else { \ 33 GNUNET_free (b); \ 34 } \ 35 } while (0) 36 37 38 int 39 main (int argc, 40 const char *const argv[]) 41 { 42 char *r; 43 44 (void) argc; 45 (void) argv; 46 GNUNET_log_setup ("test-payto", 47 "WARNING", 48 NULL); 49 GNUNET_assert (GNUNET_TIME_absolute_is_never ( 50 GNUNET_TIME_UNIT_FOREVER_TS.abs_time)); 51 GNUNET_assert (NULL == 52 TALER_iban_validate ("FR1420041010050500013M02606")); 53 GNUNET_assert (NULL == 54 TALER_iban_validate ("DE89370400440532013000")); 55 r = TALER_payto_validate ( 56 (struct TALER_FullPayto) { 57 (char *) "payto://x-taler-bank/hostname/username?receiver-name=foo" 58 }); 59 GNUNET_assert (NULL == r); 60 r = TALER_payto_validate ( 61 (struct TALER_FullPayto) { 62 (char *) "payto://x-taler-bank/hostname/~path/username?receiver-name=foo" 63 }); 64 GNUNET_assert (NULL == r); 65 r = TALER_payto_validate ( 66 (struct TALER_FullPayto) { 67 (char *) "payto://x-taler-bank/hostname/~path/username?receiver-name=fo/o" 68 }); 69 GNUNET_assert (NULL == r); 70 r = TALER_payto_validate ( 71 (struct TALER_FullPayto) { 72 (char *) "payto://x-taler-bank/host_name/~path/username?receiver-name=fo_o" 73 }); 74 GNUNET_assert (NULL == r); 75 r = TALER_payto_validate ( 76 (struct TALER_FullPayto) { 77 (char *) "payto://x-taler-bank/hostname/path/username?receiver-name=foo" 78 }); 79 GNUNET_assert (NULL == r); 80 r = TALER_payto_validate ( 81 (struct TALER_FullPayto) { 82 (char *) "payto://x-taler-bank/https://hostname/username?receiver-name=foo" 83 }); 84 GNUNET_assert (NULL != r); 85 GNUNET_free (r); 86 r = TALER_payto_validate ( 87 (struct TALER_FullPayto) { 88 (char *) "payto://x-taler-bank/hostname:4a2/path/username?receiver-name=foo" 89 }); 90 GNUNET_assert (NULL != r); 91 GNUNET_free (r); 92 r = TALER_payto_validate ( 93 (struct TALER_FullPayto) { 94 (char *) "payto://x-taler-bank/-hostname/username?receiver-name=foo" 95 }); 96 GNUNET_assert (NULL != r); 97 GNUNET_free (r); 98 r = TALER_payto_validate ( 99 (struct TALER_FullPayto) { 100 (char *) "payto://x-taler-bank/domain..name/username?receiver-name=foo" 101 }); 102 GNUNET_assert (NULL != r); 103 GNUNET_free (r); 104 r = TALER_payto_validate ( 105 (struct TALER_FullPayto) { 106 (char *) "payto://x-taler-bank/domain..name/?receiver-name=foo" 107 }); 108 GNUNET_assert (NULL != r); 109 GNUNET_free (r); 110 r = TALER_payto_validate ( 111 (struct TALER_FullPayto) { 112 (char *) "payto://x-taler-bank/domain.name/username" 113 }); 114 GNUNET_assert (NULL != r); 115 GNUNET_free (r); 116 r = TALER_xtalerbank_account_from_payto ( 117 (struct TALER_FullPayto) { 118 (char *) "payto://x-taler-bank/localhost:1080/alice?receiver-name=alice" 119 }); 120 CHECK ("alice", 121 r); 122 r = TALER_xtalerbank_account_from_payto ( 123 (struct TALER_FullPayto) { 124 (char *) "payto://x-taler-bank/localhost:1080/path/alice?receiver-name=bob" 125 }); 126 CHECK ("alice", 127 r); 128 r = TALER_xtalerbank_account_from_payto ( 129 (struct TALER_FullPayto) { 130 (char *) 131 "payto://x-taler-bank/localhost:1080/path/alice?receiver-name=ali/cia" 132 }); 133 CHECK ("alice", 134 r); 135 r = TALER_xtalerbank_account_from_payto ( 136 (struct TALER_FullPayto) { 137 (char *) 138 "payto://x-taler-bank/localhost:1080/alice?subject=hello&amount=EUR:1&receiver-name=bob" 139 }); 140 CHECK ("alice", 141 r); 142 143 r = TALER_payto_get_subject ( 144 (struct TALER_FullPayto) { 145 (char *) 146 "payto://x-taler-bank/localhost:1080/alice?subject=hello&amount=EUR:1" 147 }); 148 CHECK ("hello", 149 r); 150 151 r = TALER_payto_get_subject ( 152 (struct TALER_FullPayto) { 153 (char *) "payto://x-taler-bank/localhost:1080/alice" 154 }); 155 GNUNET_assert (r == NULL); 156 return 0; 157 } 158 159 160 /* end of test_payto.c */