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