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