diff options
Diffstat (limited to 'rt/t/mail/charsets-outgoing.t')
-rw-r--r-- | rt/t/mail/charsets-outgoing.t | 331 |
1 files changed, 0 insertions, 331 deletions
diff --git a/rt/t/mail/charsets-outgoing.t b/rt/t/mail/charsets-outgoing.t deleted file mode 100644 index e8f78cc1a..000000000 --- a/rt/t/mail/charsets-outgoing.t +++ /dev/null @@ -1,331 +0,0 @@ -#!/usr/bin/perl -use strict; -use warnings; -use Encode; - -use RT::Test tests => 78; - -my %string = ( - ru => { - test => "\x{442}\x{435}\x{441}\x{442}", - autoreply => "\x{410}\x{432}\x{442}\x{43e}\x{43e}\x{442}\x{432}\x{435}\x{442}", - support => "\x{43f}\x{43e}\x{434}\x{434}\x{435}\x{440}\x{436}\x{43a}\x{430}", - }, - latin1 => { - test => Encode::decode('latin1', "t\xE9st"), - autoreply => Encode::decode('latin1', "a\xFCtoreply"), - support => Encode::decode('latin1', "supp\xF5rt"), - }, -); - -RT::Test->set_mail_catcher; - -my $queue = RT::Test->load_or_create_queue( - Name => 'Regression', - CorrespondAddress => 'rt-recipient@example.com', - CommentAddress => 'rt-recipient@example.com', -); -ok $queue && $queue->id, 'loaded or created queue'; - -diag "make sure queue has no subject tag" if $ENV{'TEST_VERBOSE'}; -{ - my ($status, $msg) = $queue->SetSubjectTag( undef ); - ok $status, "set subject tag for the queue" or diag "error: $msg"; -} - -diag "set intial simple autoreply template" if $ENV{'TEST_VERBOSE'}; -{ - my $template = RT::Template->new( $RT::SystemUser ); - $template->Load('Autoreply'); - ok $template->id, "loaded autoreply tempalte"; - - my ($status, $msg) = $template->SetContent( - "Subject: Autreply { \$Ticket->Subject }\n" - ."\n" - ."hi there it's an autoreply.\n" - ."\n" - ); - ok $status, "changed content of the template" - or diag "error: $msg"; -} - -diag "basic test of autoreply" if $ENV{'TEST_VERBOSE'}; -{ - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => 'test', - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; -} - -diag "non-ascii Subject with ascii prefix set in the template" - if $ENV{'TEST_VERBOSE'}; -foreach my $set ( 'ru', 'latin1' ) { - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => $string{$set}{test}, - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; - - my $status = 1; - foreach my $mail ( @mails ) { - my $entity = parse_mail( $mail ); - my $subject = Encode::decode_utf8( $entity->head->get('Subject') ); - $subject =~ /$string{$set}{test}/ - or do { $status = 0; diag "wrong subject: $subject" }; - } - ok $status, "all mails have correct data"; -} - -foreach my $tag_set ( 'ru', 'latin1' ) { - -diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'}; -{ - my ($status, $msg) = $queue->SetSubjectTag( $string{$tag_set}{support} ); - ok $status, "set subject tag for the queue" or diag "error: $msg"; -} - -diag "ascii subject with non-ascii subject tag" if $ENV{'TEST_VERBOSE'}; -{ - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => 'test', - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; - - my $status = 1; - foreach my $mail ( @mails ) { - my $entity = parse_mail( $mail ); - my $subject = Encode::decode_utf8( $entity->head->get('Subject') ); - $subject =~ /$string{$tag_set}{support}/ - or do { $status = 0; diag "wrong subject: $subject" }; - } - ok $status, "all mails have correct data"; -} - -diag "non-ascii subject with non-ascii subject tag" if $ENV{'TEST_VERBOSE'}; -foreach my $set ( 'ru', 'latin1' ) { - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => $string{$set}{test}, - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; - - my $status = 1; - foreach my $mail ( @mails ) { - my $entity = parse_mail( $mail ); - my $subject = Encode::decode_utf8( $entity->head->get('Subject') ); - $subject =~ /$string{$tag_set}{support}/ - or do { $status = 0; diag "wrong subject: $subject" }; - $subject =~ /$string{$set}{test}/ - or do { $status = 0; diag "wrong subject: $subject" }; - } - ok $status, "all mails have correct data"; -} - -} # subject tag - -diag "return back the empty subject tag" if $ENV{'TEST_VERBOSE'}; -{ - my ($status, $msg) = $queue->SetSubjectTag( undef ); - ok $status, "set subject tag for the queue" or diag "error: $msg"; -} - - -foreach my $prefix_set ( 'ru', 'latin1' ) { - -diag "add non-ascii subject prefix in the autoreply template" if $ENV{'TEST_VERBOSE'}; -{ - my $template = RT::Template->new( $RT::SystemUser ); - $template->Load('Autoreply'); - ok $template->id, "loaded autoreply tempalte"; - - my ($status, $msg) = $template->SetContent( - "Subject: $string{$prefix_set}{autoreply} { \$Ticket->Subject }\n" - ."\n" - ."hi there it's an autoreply.\n" - ."\n" - ); - ok $status, "changed content of the template" or diag "error: $msg"; -} - -diag "ascii subject with non-ascii subject prefix in template" if $ENV{'TEST_VERBOSE'}; -{ - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => 'test', - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; - - my $status = 1; - foreach my $mail ( @mails ) { - my $entity = parse_mail( $mail ); - my $subject = Encode::decode_utf8( $entity->head->get('Subject') ); - $subject =~ /$string{$prefix_set}{autoreply}/ - or do { $status = 0; diag "wrong subject: $subject" }; - } - ok $status, "all mails have correct data"; -} - -diag "non-ascii subject with non-ascii subject prefix in template" - if $ENV{'TEST_VERBOSE'}; -foreach my $set ( 'ru', 'latin1' ) { - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => $string{$set}{test}, - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; - - my $status = 1; - foreach my $mail ( @mails ) { - my $entity = parse_mail( $mail ); - my $subject = Encode::decode_utf8( $entity->head->get('Subject') ); - $subject =~ /$string{$prefix_set}{autoreply}/ - or do { $status = 0; diag "wrong subject: $subject" }; - $subject =~ /$string{$set}{test}/ - or do { $status = 0; diag "wrong subject: $subject" }; - } - ok $status, "all mails have correct data"; -} - -foreach my $tag_set ( 'ru', 'latin1' ) { -diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'}; -{ - my ($status, $msg) = $queue->SetSubjectTag( $string{$tag_set}{support} ); - ok $status, "set subject tag for the queue" or diag "error: $msg"; -} - -diag "non-ascii subject, non-ascii prefix in template and non-ascii tag" - if $ENV{'TEST_VERBOSE'}; -foreach my $set ( 'ru', 'latin1' ) { - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => $string{$set}{test}, - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; - - my $status = 1; - foreach my $mail ( @mails ) { - my $entity = parse_mail( $mail ); - my $subject = Encode::decode_utf8( $entity->head->get('Subject') ); - $subject =~ /$string{$prefix_set}{autoreply}/ - or do { $status = 0; diag "wrong subject: $subject" }; - $subject =~ /$string{$tag_set}{support}/ - or do { $status = 0; diag "wrong subject: $subject" }; - $subject =~ /$string{$set}{test}/ - or do { $status = 0; diag "wrong subject: $subject" }; - } - ok $status, "all mails have correct data"; -} - -} # subject tag - -diag "flush subject tag of the queue" if $ENV{'TEST_VERBOSE'}; -{ - my ($status, $msg) = $queue->SetSubjectTag( undef ); - ok $status, "set subject tag for the queue" or diag "error: $msg"; -} - -} # prefix set - - -diag "don't change subject via template" if $ENV{'TEST_VERBOSE'}; -# clean DB has autoreply that always changes subject in template, -# we should test situation when subject is not changed from template -{ - my $template = RT::Template->new( $RT::SystemUser ); - $template->Load('Autoreply'); - ok $template->id, "loaded autoreply tempalte"; - - my ($status, $msg) = $template->SetContent( - "\n" - ."\n" - ."hi there it's an autoreply.\n" - ."\n" - ); - ok $status, "changed content of the template" or diag "error: $msg"; -} - -diag "non-ascii Subject without changes in template" if $ENV{'TEST_VERBOSE'}; -foreach my $set ( 'ru', 'latin1' ) { - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => $string{$set}{test}, - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; - - my $status = 1; - foreach my $mail ( @mails ) { - my $entity = parse_mail( $mail ); - my $subject = Encode::decode_utf8( $entity->head->get('Subject') ); - $subject =~ /$string{$set}{test}/ - or do { $status = 0; diag "wrong subject: $subject" }; - } - ok $status, "all mails have correct data"; -} - -foreach my $tag_set ( 'ru', 'latin1' ) { -diag "set non-ascii subject tag for the queue" if $ENV{'TEST_VERBOSE'}; -{ - my ($status, $msg) = $queue->SetSubjectTag( $string{$tag_set}{support} ); - ok $status, "set subject tag for the queue" or diag "error: $msg"; -} - -diag "non-ascii Subject without changes in template and with non-ascii subject tag" - if $ENV{'TEST_VERBOSE'}; -foreach my $set ( 'ru', 'latin1' ) { - my $ticket = RT::Ticket->new( $RT::SystemUser ); - $ticket->Create( - Queue => $queue->id, - Subject => $string{$set}{test}, - Requestor => 'root@localhost', - ); - my @mails = RT::Test->fetch_caught_mails; - ok @mails, "got some outgoing emails"; - - my $status = 1; - foreach my $mail ( @mails ) { - my $entity = parse_mail( $mail ); - my $subject = Encode::decode_utf8( $entity->head->get('Subject') ); - $subject =~ /$string{$set}{test}/ - or do { $status = 0; diag "wrong subject: $subject" }; - $subject =~ /$string{$tag_set}{support}/ - or do { $status = 0; diag "wrong subject: $subject" }; - } - ok $status, "all mails have correct data"; -} - -} # subject tag set - -sub parse_mail { - my $mail = shift; - require RT::EmailParser; - my $parser = new RT::EmailParser; - $parser->ParseMIMEEntityFromScalar( $mail ); - return $parser->Entity; -} - |