6 use RT::Test tests => 78;
10 test => "\x{442}\x{435}\x{441}\x{442}",
11 autoreply => "\x{410}\x{432}\x{442}\x{43e}\x{43e}\x{442}\x{432}\x{435}\x{442}",
12 support => "\x{43f}\x{43e}\x{434}\x{434}\x{435}\x{440}\x{436}\x{43a}\x{430}",
15 test => Encode::decode('latin1', "t\xE9st"),
16 autoreply => Encode::decode('latin1', "a\xFCtoreply"),
17 support => Encode::decode('latin1', "supp\xF5rt"),
21 RT::Test->set_mail_catcher;
23 my $queue = RT::Test->load_or_create_queue(
25 CorrespondAddress => 'rt-recipient@example.com',
26 CommentAddress => 'rt-recipient@example.com',
28 ok $queue && $queue->id, 'loaded or created queue';
30 diag "make sure queue has no subject tag" if $ENV{'TEST_VERBOSE'};
32 my ($status, $msg) = $queue->SetSubjectTag( undef );
33 ok $status, "set subject tag for the queue" or diag "error: $msg";
36 diag "set intial simple autoreply template" if $ENV{'TEST_VERBOSE'};
38 my $template = RT::Template->new( $RT::SystemUser );
39 $template->Load('Autoreply');
40 ok $template->id, "loaded autoreply tempalte";
42 my ($status, $msg) = $template->SetContent(
43 "Subject: Autreply { \$Ticket->Subject }\n"
45 ."hi there it's an autoreply.\n"
48 ok $status, "changed content of the template"
49 or diag "error: $msg";
52 diag "basic test of autoreply" if $ENV{'TEST_VERBOSE'};
54 my $ticket = RT::Ticket->new( $RT::SystemUser );
58 Requestor => 'root@localhost',
60 my @mails = RT::Test->fetch_caught_mails;
61 ok @mails, "got some outgoing emails";
64 diag "non-ascii Subject with ascii prefix set in the template"
65 if $ENV{'TEST_VERBOSE'};
66 foreach my $set ( 'ru', 'latin1' ) {
67 my $ticket = RT::Ticket->new( $RT::SystemUser );
70 Subject => $string{$set}{test},
71 Requestor => 'root@localhost',
73 my @mails = RT::Test->fetch_caught_mails;
74 ok @mails, "got some outgoing emails";
77 foreach my $mail ( @mails ) {
78 my $entity = parse_mail( $mail );
79 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
80 $subject =~ /$string{$set}{test}/
81 or do { $status = 0; diag "wrong subject: $subject" };
83 ok $status, "all mails have correct data";
86 foreach my $tag_set ( 'ru', 'latin1' ) {
88 diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'};
90 my ($status, $msg) = $queue->SetSubjectTag( $string{$tag_set}{support} );
91 ok $status, "set subject tag for the queue" or diag "error: $msg";
94 diag "ascii subject with non-ascii subject tag" if $ENV{'TEST_VERBOSE'};
96 my $ticket = RT::Ticket->new( $RT::SystemUser );
100 Requestor => 'root@localhost',
102 my @mails = RT::Test->fetch_caught_mails;
103 ok @mails, "got some outgoing emails";
106 foreach my $mail ( @mails ) {
107 my $entity = parse_mail( $mail );
108 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
109 $subject =~ /$string{$tag_set}{support}/
110 or do { $status = 0; diag "wrong subject: $subject" };
112 ok $status, "all mails have correct data";
115 diag "non-ascii subject with non-ascii subject tag" if $ENV{'TEST_VERBOSE'};
116 foreach my $set ( 'ru', 'latin1' ) {
117 my $ticket = RT::Ticket->new( $RT::SystemUser );
120 Subject => $string{$set}{test},
121 Requestor => 'root@localhost',
123 my @mails = RT::Test->fetch_caught_mails;
124 ok @mails, "got some outgoing emails";
127 foreach my $mail ( @mails ) {
128 my $entity = parse_mail( $mail );
129 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
130 $subject =~ /$string{$tag_set}{support}/
131 or do { $status = 0; diag "wrong subject: $subject" };
132 $subject =~ /$string{$set}{test}/
133 or do { $status = 0; diag "wrong subject: $subject" };
135 ok $status, "all mails have correct data";
140 diag "return back the empty subject tag" if $ENV{'TEST_VERBOSE'};
142 my ($status, $msg) = $queue->SetSubjectTag( undef );
143 ok $status, "set subject tag for the queue" or diag "error: $msg";
147 foreach my $prefix_set ( 'ru', 'latin1' ) {
149 diag "add non-ascii subject prefix in the autoreply template" if $ENV{'TEST_VERBOSE'};
151 my $template = RT::Template->new( $RT::SystemUser );
152 $template->Load('Autoreply');
153 ok $template->id, "loaded autoreply tempalte";
155 my ($status, $msg) = $template->SetContent(
156 "Subject: $string{$prefix_set}{autoreply} { \$Ticket->Subject }\n"
158 ."hi there it's an autoreply.\n"
161 ok $status, "changed content of the template" or diag "error: $msg";
164 diag "ascii subject with non-ascii subject prefix in template" if $ENV{'TEST_VERBOSE'};
166 my $ticket = RT::Ticket->new( $RT::SystemUser );
170 Requestor => 'root@localhost',
172 my @mails = RT::Test->fetch_caught_mails;
173 ok @mails, "got some outgoing emails";
176 foreach my $mail ( @mails ) {
177 my $entity = parse_mail( $mail );
178 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
179 $subject =~ /$string{$prefix_set}{autoreply}/
180 or do { $status = 0; diag "wrong subject: $subject" };
182 ok $status, "all mails have correct data";
185 diag "non-ascii subject with non-ascii subject prefix in template"
186 if $ENV{'TEST_VERBOSE'};
187 foreach my $set ( 'ru', 'latin1' ) {
188 my $ticket = RT::Ticket->new( $RT::SystemUser );
191 Subject => $string{$set}{test},
192 Requestor => 'root@localhost',
194 my @mails = RT::Test->fetch_caught_mails;
195 ok @mails, "got some outgoing emails";
198 foreach my $mail ( @mails ) {
199 my $entity = parse_mail( $mail );
200 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
201 $subject =~ /$string{$prefix_set}{autoreply}/
202 or do { $status = 0; diag "wrong subject: $subject" };
203 $subject =~ /$string{$set}{test}/
204 or do { $status = 0; diag "wrong subject: $subject" };
206 ok $status, "all mails have correct data";
209 foreach my $tag_set ( 'ru', 'latin1' ) {
210 diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'};
212 my ($status, $msg) = $queue->SetSubjectTag( $string{$tag_set}{support} );
213 ok $status, "set subject tag for the queue" or diag "error: $msg";
216 diag "non-ascii subject, non-ascii prefix in template and non-ascii tag"
217 if $ENV{'TEST_VERBOSE'};
218 foreach my $set ( 'ru', 'latin1' ) {
219 my $ticket = RT::Ticket->new( $RT::SystemUser );
222 Subject => $string{$set}{test},
223 Requestor => 'root@localhost',
225 my @mails = RT::Test->fetch_caught_mails;
226 ok @mails, "got some outgoing emails";
229 foreach my $mail ( @mails ) {
230 my $entity = parse_mail( $mail );
231 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
232 $subject =~ /$string{$prefix_set}{autoreply}/
233 or do { $status = 0; diag "wrong subject: $subject" };
234 $subject =~ /$string{$tag_set}{support}/
235 or do { $status = 0; diag "wrong subject: $subject" };
236 $subject =~ /$string{$set}{test}/
237 or do { $status = 0; diag "wrong subject: $subject" };
239 ok $status, "all mails have correct data";
244 diag "flush subject tag of the queue" if $ENV{'TEST_VERBOSE'};
246 my ($status, $msg) = $queue->SetSubjectTag( undef );
247 ok $status, "set subject tag for the queue" or diag "error: $msg";
253 diag "don't change subject via template" if $ENV{'TEST_VERBOSE'};
254 # clean DB has autoreply that always changes subject in template,
255 # we should test situation when subject is not changed from template
257 my $template = RT::Template->new( $RT::SystemUser );
258 $template->Load('Autoreply');
259 ok $template->id, "loaded autoreply tempalte";
261 my ($status, $msg) = $template->SetContent(
264 ."hi there it's an autoreply.\n"
267 ok $status, "changed content of the template" or diag "error: $msg";
270 diag "non-ascii Subject without changes in template" if $ENV{'TEST_VERBOSE'};
271 foreach my $set ( 'ru', 'latin1' ) {
272 my $ticket = RT::Ticket->new( $RT::SystemUser );
275 Subject => $string{$set}{test},
276 Requestor => 'root@localhost',
278 my @mails = RT::Test->fetch_caught_mails;
279 ok @mails, "got some outgoing emails";
282 foreach my $mail ( @mails ) {
283 my $entity = parse_mail( $mail );
284 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
285 $subject =~ /$string{$set}{test}/
286 or do { $status = 0; diag "wrong subject: $subject" };
288 ok $status, "all mails have correct data";
291 foreach my $tag_set ( 'ru', 'latin1' ) {
292 diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'};
294 my ($status, $msg) = $queue->SetSubjectTag( $string{$tag_set}{support} );
295 ok $status, "set subject tag for the queue" or diag "error: $msg";
298 diag "non-ascii Subject without changes in template and with non-ascii subject tag"
299 if $ENV{'TEST_VERBOSE'};
300 foreach my $set ( 'ru', 'latin1' ) {
301 my $ticket = RT::Ticket->new( $RT::SystemUser );
304 Subject => $string{$set}{test},
305 Requestor => 'root@localhost',
307 my @mails = RT::Test->fetch_caught_mails;
308 ok @mails, "got some outgoing emails";
311 foreach my $mail ( @mails ) {
312 my $entity = parse_mail( $mail );
313 my $subject = Encode::decode_utf8( $entity->head->get('Subject') );
314 $subject =~ /$string{$set}{test}/
315 or do { $status = 0; diag "wrong subject: $subject" };
316 $subject =~ /$string{$tag_set}{support}/
317 or do { $status = 0; diag "wrong subject: $subject" };
319 ok $status, "all mails have correct data";