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