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/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 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 */
|