test_payto.c (4834B)
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/taler_util.h" 22 23 #define CHECK(a,b) do { \ 24 GNUNET_assert (a != NULL); \ 25 GNUNET_assert (b != NULL); \ 26 if (0 != strcmp (a,b)) { \ 27 GNUNET_break (0); \ 28 fprintf (stderr, "Got %s, wanted %s\n", b, a); \ 29 GNUNET_free (b); \ 30 return 1; \ 31 } else { \ 32 GNUNET_free (b); \ 33 } \ 34 } while (0) 35 36 37 int 38 main (int argc, 39 const char *const argv[]) 40 { 41 char *r; 42 43 (void) argc; 44 (void) argv; 45 GNUNET_log_setup ("test-payto", 46 "WARNING", 47 NULL); 48 GNUNET_assert (GNUNET_TIME_absolute_is_never ( 49 GNUNET_TIME_UNIT_FOREVER_TS.abs_time)); 50 GNUNET_assert (NULL == 51 TALER_iban_validate ("FR1420041010050500013M02606")); 52 GNUNET_assert (NULL == 53 TALER_iban_validate ("DE89370400440532013000")); 54 r = TALER_payto_validate ( 55 (struct TALER_FullPayto) { 56 (char *) "payto://x-taler-bank/hostname/username?receiver-name=foo" 57 }); 58 GNUNET_assert (NULL == r); 59 r = TALER_payto_validate ( 60 (struct TALER_FullPayto) { 61 (char *) "payto://x-taler-bank/hostname/~path/username?receiver-name=foo" 62 }); 63 GNUNET_assert (NULL == r); 64 r = TALER_payto_validate ( 65 (struct TALER_FullPayto) { 66 (char *) "payto://x-taler-bank/hostname/~path/username?receiver-name=fo/o" 67 }); 68 GNUNET_assert (NULL == r); 69 r = TALER_payto_validate ( 70 (struct TALER_FullPayto) { 71 (char *) "payto://x-taler-bank/host_name/~path/username?receiver-name=fo_o" 72 }); 73 GNUNET_assert (NULL == r); 74 r = TALER_payto_validate ( 75 (struct TALER_FullPayto) { 76 (char *) "payto://x-taler-bank/hostname/path/username?receiver-name=foo" 77 }); 78 GNUNET_assert (NULL == r); 79 r = TALER_payto_validate ( 80 (struct TALER_FullPayto) { 81 (char *) "payto://x-taler-bank/https://hostname/username?receiver-name=foo" 82 }); 83 GNUNET_assert (NULL != r); 84 GNUNET_free (r); 85 r = TALER_payto_validate ( 86 (struct TALER_FullPayto) { 87 (char *) "payto://x-taler-bank/hostname:4a2/path/username?receiver-name=foo" 88 }); 89 GNUNET_assert (NULL != r); 90 GNUNET_free (r); 91 r = TALER_payto_validate ( 92 (struct TALER_FullPayto) { 93 (char *) "payto://x-taler-bank/-hostname/username?receiver-name=foo" 94 }); 95 GNUNET_assert (NULL != r); 96 GNUNET_free (r); 97 r = TALER_payto_validate ( 98 (struct TALER_FullPayto) { 99 (char *) "payto://x-taler-bank/domain..name/username?receiver-name=foo" 100 }); 101 GNUNET_assert (NULL != r); 102 GNUNET_free (r); 103 r = TALER_payto_validate ( 104 (struct TALER_FullPayto) { 105 (char *) "payto://x-taler-bank/domain..name/?receiver-name=foo" 106 }); 107 GNUNET_assert (NULL != r); 108 GNUNET_free (r); 109 r = TALER_payto_validate ( 110 (struct TALER_FullPayto) { 111 (char *) "payto://x-taler-bank/domain.name/username" 112 }); 113 GNUNET_assert (NULL != r); 114 GNUNET_free (r); 115 r = TALER_xtalerbank_account_from_payto ( 116 (struct TALER_FullPayto) { 117 (char *) "payto://x-taler-bank/localhost:1080/alice?receiver-name=alice" 118 }); 119 CHECK ("alice", 120 r); 121 r = TALER_xtalerbank_account_from_payto ( 122 (struct TALER_FullPayto) { 123 (char *) "payto://x-taler-bank/localhost:1080/path/alice?receiver-name=bob" 124 }); 125 CHECK ("alice", 126 r); 127 r = TALER_xtalerbank_account_from_payto ( 128 (struct TALER_FullPayto) { 129 (char *) 130 "payto://x-taler-bank/localhost:1080/path/alice?receiver-name=ali/cia" 131 }); 132 CHECK ("alice", 133 r); 134 r = TALER_xtalerbank_account_from_payto ( 135 (struct TALER_FullPayto) { 136 (char *) 137 "payto://x-taler-bank/localhost:1080/alice?subject=hello&amount=EUR:1&receiver-name=bob" 138 }); 139 CHECK ("alice", 140 r); 141 142 r = TALER_payto_get_subject ( 143 (struct TALER_FullPayto) { 144 (char *) 145 "payto://x-taler-bank/localhost:1080/alice?subject=hello&amount=EUR:1" 146 }); 147 CHECK ("hello", 148 r); 149 150 r = TALER_payto_get_subject ( 151 (struct TALER_FullPayto) { 152 (char *) "payto://x-taler-bank/localhost:1080/alice" 153 }); 154 GNUNET_assert (r == NULL); 155 return 0; 156 } 157 158 159 /* end of test_payto.c */