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