1 /*
2 * test-rfc2ftn.c
3 */
4
5 #include "rfc2ftn.h"
6 #include "rfc2ftn-wrapper.c"
7
8 #include <cgreen/cgreen.h>
9 #include "fidogate.h"
10
11 /* rfc2ftn: */
12 /* From: john.doe@example.com -> John Doe */
13 /* From: john_doe@example.com -> John Doe */
14 /* From: john.doe@example.com (John Doe)-> John Doe */
15 /* From: john.doe@example.com (john doe)-> john doe */
16 /* From: John Doe <john.doe@example.com> -> John Doe */
17 /* From: john doe <john.doe@example.com> -> john doe */
18 /* From: "John Doe" <john.doe@example.com> -> John Doe */
19 /* From: "john doe" <john.doe@example.com> -> john doe */
20
Ensure(rfcsender_parses_no_realname)21 Ensure(rfcsender_parses_no_realname)
22 {
23 char *src = "john.doe@example.com";
24 char *user = "john.doe";
25 char *addr = "example.com";
26 char *real = "";
27
28 RFCAddr res;
29
30 res = _rfc_sender(src, NULL);
31
32 assert_that(res.user, is_equal_to_string(user));
33 assert_that(res.addr, is_equal_to_string(addr));
34 assert_that(res.real, is_equal_to_string(real));
35 }
36
Ensure(rfcsender_parses_comment)37 Ensure(rfcsender_parses_comment)
38 {
39 char *src = "john.doe@example.com (John Doe)";
40 char *user = "john.doe";
41 char *addr = "example.com";
42 char *real = "John Doe";
43
44 RFCAddr res;
45
46 res = _rfc_sender(src, NULL);
47
48 assert_that(res.user, is_equal_to_string(user));
49 assert_that(res.addr, is_equal_to_string(addr));
50 assert_that(res.real, is_equal_to_string(real));
51 }
52
Ensure(rfcsender_parses_no_quotes)53 Ensure(rfcsender_parses_no_quotes)
54 {
55 char *src = "John Doe <john.doe@example.com>";
56 char *user = "john.doe";
57 char *addr = "example.com";
58 char *real = "John Doe";
59
60 RFCAddr res;
61
62 res = _rfc_sender(src, NULL);
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(rfcsender_parses_quotes)69 Ensure(rfcsender_parses_quotes)
70 {
71 char *src = "\"John Doe\" <john.doe@example.com>";
72 char *user = "john.doe";
73 char *addr = "example.com";
74 char *real = "John Doe";
75
76 RFCAddr res;
77
78 res = _rfc_sender(src, NULL);
79
80 assert_that(res.user, is_equal_to_string(user));
81 assert_that(res.addr, is_equal_to_string(addr));
82 assert_that(res.real, is_equal_to_string(real));
83 }
84
Ensure(mailsender_converts_user_dot)85 Ensure(mailsender_converts_user_dot)
86 {
87 Node node;
88 RFCAddr rfc = {
89 .user = "john.doe",
90 .addr = "example.com",
91 .real = "",
92 };
93 char res[NAMEBUFSIZE];
94 char *exp = "John Doe";
95
96 mail_sender(&rfc, &node, res, sizeof(res), NULL);
97
98 assert_that(res, is_equal_to_string(exp));
99 }
100
Ensure(mailsender_converts_user_underscore)101 Ensure(mailsender_converts_user_underscore)
102 {
103 Node node;
104 RFCAddr rfc = {
105 .user = "john_doe",
106 .addr = "example.com",
107 .real = "",
108 };
109 char res[NAMEBUFSIZE];
110 char *exp = "John Doe";
111
112 mail_sender(&rfc, &node, res, sizeof(res), NULL);
113
114 assert_that(res, is_equal_to_string(exp));
115 }
116
Ensure(mailsender_does_not_capitalizes_real)117 Ensure(mailsender_does_not_capitalizes_real)
118 {
119 Node node;
120 RFCAddr rfc = {
121 .user = "john_doe",
122 .addr = "example.com",
123 .real = "john doe",
124 };
125 char res[NAMEBUFSIZE];
126 char *exp = "john doe";
127
128 mail_sender(&rfc, &node, res, sizeof(res), NULL);
129
130 assert_that(res, is_equal_to_string(exp));
131 }
132
Ensure(mailsender_does_not_amend_dot_underscore_in_real)133 Ensure(mailsender_does_not_amend_dot_underscore_in_real)
134 {
135 Node node;
136 RFCAddr rfc = {
137 .user = "john_doe",
138 .addr = "example.com",
139 .real = "john_doe.foo",
140 };
141 char res[NAMEBUFSIZE];
142 char *exp = "john_doe.foo";
143
144 mail_sender(&rfc, &node, res, sizeof(res), NULL);
145
146 assert_that(res, is_equal_to_string(exp));
147 }
148
Ensure(rfcparse_converts_useronly)149 Ensure(rfcparse_converts_useronly)
150 {
151 RFCAddr src = {
152 .real = "",
153 .user = "user",
154 .addr = "example.com",
155 };
156 char res[NAMEBUFSIZE];
157 char *exp = "User";
158
159 rfc_parse(&src, res, sizeof(res), NULL, FALSE, NULL);
160
161 assert_that(res, is_equal_to_string(exp));
162 }
163
Ensure(rfcparse_doesnot_convert_real)164 Ensure(rfcparse_doesnot_convert_real)
165 {
166 RFCAddr src = {
167 .real = "user",
168 .user = "user",
169 .addr = "example.com",
170 };
171 char res[NAMEBUFSIZE];
172 char *exp = "user";
173
174 rfc_parse(&src, res, sizeof(res), NULL, FALSE, NULL);
175
176 assert_that(res, is_equal_to_string(exp));
177 }
178
create_my_suite(void)179 static TestSuite *create_my_suite(void)
180 {
181 TestSuite *suite = create_named_test_suite("rfc2ftn suite");
182
183 add_test(suite, mailsender_converts_user_dot);
184 add_test(suite, mailsender_converts_user_underscore);
185 add_test(suite, mailsender_does_not_capitalizes_real);
186 add_test(suite, mailsender_does_not_amend_dot_underscore_in_real);
187
188 add_test(suite, rfcsender_parses_no_realname);
189 add_test(suite, rfcsender_parses_comment);
190 add_test(suite, rfcsender_parses_no_quotes);
191 add_test(suite, rfcsender_parses_quotes);
192
193 add_test(suite, rfcparse_converts_useronly);
194 add_test(suite, rfcparse_doesnot_convert_real);
195
196 return suite;
197 }
198
main(int argc,char ** argv)199 int main(int argc, char **argv)
200 {
201 TestSuite *suite = create_my_suite();
202
203 if (argc > 1)
204 return run_single_test(suite, argv[1], create_text_reporter());
205
206 return run_test_suite(suite, create_text_reporter());
207 }
208