6 use RT::Test tests => 30;
9 RT::Test->set_mail_catcher;
11 my $queue = RT::Test->load_or_create_queue(
13 CorrespondAddress => 'rt-recipient@example.com',
14 CommentAddress => 'rt-recipient@example.com',
16 ok $queue && $queue->id, 'loaded or created queue';
18 diag "make sure queue has no subject tag" if $ENV{'TEST_VERBOSE'};
20 my ($status, $msg) = $queue->SetSubjectTag( undef );
21 ok $status, "set subject tag for the queue" or diag "error: $msg";
24 diag "set intial simple autoreply template" if $ENV{'TEST_VERBOSE'};
26 my $template = RT::Template->new( $RT::SystemUser );
27 $template->Load('Autoreply');
28 ok $template->id, "loaded autoreply tempalte";
30 my ($status, $msg) = $template->SetContent(
31 "Subject: Autreply { \$Ticket->Subject }\n"
33 ."hi there it's an autoreply.\n"
36 ok $status, "changed content of the template"
37 or diag "error: $msg";
40 diag "basic test of autoreply" if $ENV{'TEST_VERBOSE'};
42 my $ticket = RT::Ticket->new( $RT::SystemUser );
46 Requestor => 'root@localhost',
48 my @mails = RT::Test->fetch_caught_mails;
49 ok @mails, "got some outgoing emails";
52 my $str_ru_test = "\x{442}\x{435}\x{441}\x{442}";
53 my $str_ru_autoreply = "\x{410}\x{432}\x{442}\x{43e}\x{43e}\x{442}\x{432}\x{435}\x{442}";
54 my $str_ru_support = "\x{43f}\x{43e}\x{434}\x{434}\x{435}\x{440}\x{436}\x{43a}\x{430}";
56 diag "non-ascii Subject with ascii prefix set in the template"
57 if $ENV{'TEST_VERBOSE'};
59 my $ticket = RT::Ticket->new( $RT::SystemUser );
62 Subject => $str_ru_test,
63 Requestor => 'root@localhost',
65 my @mails = RT::Test->fetch_caught_mails;
66 ok @mails, "got some outgoing emails";
69 foreach my $mail ( @mails ) {
70 my $entity = parse_mail( $mail );
71 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
72 $subject =~ /$str_ru_test/
73 or do { $status = 0; diag "wrong subject: $subject" };
75 ok $status, "all mails have correct data";
78 diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'};
80 my ($status, $msg) = $queue->SetSubjectTag( $str_ru_support );
81 ok $status, "set subject tag for the queue" or diag "error: $msg";
84 diag "ascii subject with non-ascii subject tag" if $ENV{'TEST_VERBOSE'};
86 my $ticket = RT::Ticket->new( $RT::SystemUser );
90 Requestor => 'root@localhost',
92 my @mails = RT::Test->fetch_caught_mails;
93 ok @mails, "got some outgoing emails";
96 foreach my $mail ( @mails ) {
97 my $entity = parse_mail( $mail );
98 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
99 $subject =~ /$str_ru_support/
100 or do { $status = 0; diag "wrong subject: $subject" };
102 ok $status, "all mails have correct data";
105 diag "non-ascii subject with non-ascii subject tag" if $ENV{'TEST_VERBOSE'};
107 my $ticket = RT::Ticket->new( $RT::SystemUser );
110 Subject => $str_ru_test,
111 Requestor => 'root@localhost',
113 my @mails = RT::Test->fetch_caught_mails;
114 ok @mails, "got some outgoing emails";
117 foreach my $mail ( @mails ) {
118 my $entity = parse_mail( $mail );
119 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
120 $subject =~ /$str_ru_support/
121 or do { $status = 0; diag "wrong subject: $subject" };
122 $subject =~ /$str_ru_test/
123 or do { $status = 0; diag "wrong subject: $subject" };
125 ok $status, "all mails have correct data";
128 diag "return back the empty subject tag" if $ENV{'TEST_VERBOSE'};
130 my ($status, $msg) = $queue->SetSubjectTag( undef );
131 ok $status, "set subject tag for the queue" or diag "error: $msg";
134 diag "add non-ascii subject prefix in the autoreply template" if $ENV{'TEST_VERBOSE'};
136 my $template = RT::Template->new( $RT::SystemUser );
137 $template->Load('Autoreply');
138 ok $template->id, "loaded autoreply tempalte";
140 my ($status, $msg) = $template->SetContent(
141 "Subject: $str_ru_autoreply { \$Ticket->Subject }\n"
143 ."hi there it's an autoreply.\n"
146 ok $status, "changed content of the template" or diag "error: $msg";
149 diag "ascii subject with non-ascii subject prefix in template" if $ENV{'TEST_VERBOSE'};
151 my $ticket = RT::Ticket->new( $RT::SystemUser );
155 Requestor => 'root@localhost',
157 my @mails = RT::Test->fetch_caught_mails;
158 ok @mails, "got some outgoing emails";
161 foreach my $mail ( @mails ) {
162 my $entity = parse_mail( $mail );
163 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
164 $subject =~ /$str_ru_autoreply/
165 or do { $status = 0; diag "wrong subject: $subject" };
167 ok $status, "all mails have correct data";
170 diag "non-ascii subject with non-ascii subject prefix in template"
171 if $ENV{'TEST_VERBOSE'};
173 my $ticket = RT::Ticket->new( $RT::SystemUser );
176 Subject => $str_ru_test,
177 Requestor => 'root@localhost',
179 my @mails = RT::Test->fetch_caught_mails;
180 ok @mails, "got some outgoing emails";
183 foreach my $mail ( @mails ) {
184 my $entity = parse_mail( $mail );
185 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
186 $subject =~ /$str_ru_autoreply/
187 or do { $status = 0; diag "wrong subject: $subject" };
188 $subject =~ /$str_ru_autoreply/
189 or do { $status = 0; diag "wrong subject: $subject" };
191 ok $status, "all mails have correct data";
194 diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'};
196 my ($status, $msg) = $queue->SetSubjectTag( $str_ru_support );
197 ok $status, "set subject tag for the queue" or diag "error: $msg";
200 diag "non-ascii subject, non-ascii prefix in template and non-ascii tag"
201 if $ENV{'TEST_VERBOSE'};
203 my $ticket = RT::Ticket->new( $RT::SystemUser );
206 Subject => $str_ru_test,
207 Requestor => 'root@localhost',
209 my @mails = RT::Test->fetch_caught_mails;
210 ok @mails, "got some outgoing emails";
213 foreach my $mail ( @mails ) {
214 my $entity = parse_mail( $mail );
215 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
216 $subject =~ /$str_ru_autoreply/
217 or do { $status = 0; diag "wrong subject: $subject" };
218 $subject =~ /$str_ru_autoreply/
219 or do { $status = 0; diag "wrong subject: $subject" };
220 $subject =~ /$str_ru_autoreply/
221 or do { $status = 0; diag "wrong subject: $subject" };
223 ok $status, "all mails have correct data";
226 diag "flush subject tag of the queue" if $ENV{'TEST_VERBOSE'};
228 my ($status, $msg) = $queue->SetSubjectTag( undef );
229 ok $status, "set subject tag for the queue" or diag "error: $msg";
233 diag "don't change subject via template" if $ENV{'TEST_VERBOSE'};
235 my $template = RT::Template->new( $RT::SystemUser );
236 $template->Load('Autoreply');
237 ok $template->id, "loaded autoreply tempalte";
239 my ($status, $msg) = $template->SetContent(
242 ."hi there it's an autoreply.\n"
245 ok $status, "changed content of the template" or diag "error: $msg";
248 diag "non-ascii Subject without changes in template" if $ENV{'TEST_VERBOSE'};
250 my $ticket = RT::Ticket->new( $RT::SystemUser );
253 Subject => $str_ru_test,
254 Requestor => 'root@localhost',
256 my @mails = RT::Test->fetch_caught_mails;
257 ok @mails, "got some outgoing emails";
260 foreach my $mail ( @mails ) {
261 my $entity = parse_mail( $mail );
262 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
263 $subject =~ /$str_ru_test/
264 or do { $status = 0; diag "wrong subject: $subject" };
266 ok $status, "all mails have correct data";
269 diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'};
271 my ($status, $msg) = $queue->SetSubjectTag( $str_ru_support );
272 ok $status, "set subject tag for the queue" or diag "error: $msg";
275 diag "non-ascii Subject without changes in template and with non-ascii subject tag"
276 if $ENV{'TEST_VERBOSE'};
278 my $ticket = RT::Ticket->new( $RT::SystemUser );
281 Subject => $str_ru_test,
282 Requestor => 'root@localhost',
284 my @mails = RT::Test->fetch_caught_mails;
285 ok @mails, "got some outgoing emails";
288 foreach my $mail ( @mails ) {
289 my $entity = parse_mail( $mail );
290 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
291 $subject =~ /$str_ru_test/
292 or do { $status = 0; diag "wrong subject: $subject" };
293 $subject =~ /$str_ru_support/
294 or do { $status = 0; diag "wrong subject: $subject" };
296 ok $status, "all mails have correct data";
301 require RT::EmailParser;
302 my $parser = new RT::EmailParser;
303 $parser->ParseMIMEEntityFromScalar( $mail );
304 return $parser->Entity;