1 #include <cgreen/cgreen.h>
2 #include <fidogate.h>
3 
4 
5 /* John Doe (2:2/9999) -> John Doe <John_Doe@f9999.n2.z2.fidonet.org> */
6 /* john doe (2:2/9999) -> john doe <john_doe@f9999.n2.z2.fidonet.org> */
7 /* Василий Пупкин (2:2/9999) -> Василий Пупкин <sysop@f9999.n2.z2.fidonet.org> */
8 
9 static char sysop[] = "sysop";
10 
11 /* config private data */
12 struct st_zones {
13     int zone;                   /* Zone */
14     char *inet_domain;          /* Internet domain */
15     char *ftn_domain;           /* FTN domain */
16     char *out;                  /* Outbound subdir */
17 };
18 void cf_zones_add(struct st_zones *zone);
19 /* end of config private date */
20 
21 static struct st_zones zone = {
22     .zone = 2,
23     .inet_domain = ".fidonet.org",
24     .ftn_domain = "fidonet",
25     .out = "out",
26 };
27 
Ensure(fromrfc_passes_noncapitals)28 Ensure(fromrfc_passes_noncapitals)
29 {
30     char *src = "real <name@example.com>";
31     char *user = "name";
32     char *addr = "example.com";
33     char *real = "real";
34 
35     RFCAddr res;
36 
37     res = rfcaddr_from_rfc(src);
38 
39     assert_that(res.user, is_equal_to_string(user));
40     assert_that(res.addr, is_equal_to_string(addr));
41     assert_that(res.real, is_equal_to_string(real));
42 }
43 
Ensure(fromftn_passes_capitals)44 Ensure(fromftn_passes_capitals)
45 {
46     Node node = {
47         .zone = 2,
48         .net = 2,
49         .node = 999,
50         .point = 0,
51         .domain = "",
52         .flags = 0,
53     };
54     char *name = "John Doe";
55 
56     char *user = "John_Doe";
57     char *addr = "f999.n2.z2.fidonet.org";
58     char *real = "John Doe";
59 
60     RFCAddr res;
61 
62     res = rfcaddr_from_ftn(name, &node);
63 
64     assert_that(res.user, is_equal_to_string(user));
65     assert_that(res.addr, is_equal_to_string(addr));
66     assert_that(res.real, is_equal_to_string(real));
67 }
68 
Ensure(fromftn_passes_noncapitals)69 Ensure(fromftn_passes_noncapitals)
70 {
71     Node node = {
72         .zone = 2,
73         .net = 2,
74         .node = 999,
75         .point = 0,
76         .domain = "",
77         .flags = 0,
78     };
79     char *name = "john doe";
80 
81     char *user = "john_doe";
82     char *addr = "f999.n2.z2.fidonet.org";
83     char *real = "john doe";
84 
85     RFCAddr res;
86 
87     res = rfcaddr_from_ftn(name, &node);
88 
89     assert_that(res.user, is_equal_to_string(user));
90     assert_that(res.addr, is_equal_to_string(addr));
91     assert_that(res.real, is_equal_to_string(real));
92 }
93 
Ensure(fromftn_replaces_nonascii)94 Ensure(fromftn_replaces_nonascii)
95 {
96     Node node = {
97         .zone = 2,
98         .net = 2,
99         .node = 999,
100         .point = 0,
101         .domain = "",
102         .flags = 0,
103     };
104     char *name = "Василий Пупкин";
105 
106     char *user = sysop;
107     char *addr = "f999.n2.z2.fidonet.org";
108     char *real = "Василий Пупкин";
109 
110     RFCAddr res;
111 
112     res = rfcaddr_from_ftn(name, &node);
113 
114     assert_that(res.user, is_equal_to_string(user));
115     assert_that(res.addr, is_equal_to_string(addr));
116     assert_that(res.real, is_equal_to_string(real));
117 }
118 
rfcaddr_fromftn_setup(void)119 static void rfcaddr_fromftn_setup(void)
120 {
121     rfcaddr_fallback_username(sysop);
122     cf_zones_add(&zone);
123 }
124 
create_my_suite(void)125 static TestSuite *create_my_suite(void)
126 {
127     TestSuite *suite = create_named_test_suite("RFCAddr suite");
128 
129     add_test(suite, fromrfc_passes_noncapitals);
130 
131     add_test(suite, fromftn_passes_capitals);
132     add_test(suite, fromftn_passes_noncapitals);
133     add_test(suite, fromftn_replaces_nonascii);
134 
135     set_setup(suite, rfcaddr_fromftn_setup);
136     return suite;
137 }
138 
main(int argc,char ** argv)139 int main(int argc, char **argv)
140 {
141     TestSuite *suite = create_my_suite();
142 
143     if (argc > 1)
144 	return run_single_test(suite, argv[1], create_text_reporter());
145 
146     return run_test_suite(suite, create_text_reporter());
147 }
148