RT 4.0.22
[freeside.git] / rt / t / mail / extractsubjecttag.t
index 5a25488..1aadaa7 100644 (file)
@@ -1,13 +1,7 @@
-#!/usr/bin/perl
 use strict;
 use warnings;
-use utf8;
 
-use RT::Test tests => 14;
-
-
-my ($baseurl, $m) = RT::Test->started_ok;
-RT::Test->set_mail_catcher;
+use RT::Test tests => 18;
 
 my $queue = RT::Test->load_or_create_queue(
     Name              => 'Regression',
@@ -17,7 +11,7 @@ my $queue = RT::Test->load_or_create_queue(
 my $subject_tag = 'Windows/Servers-Desktops';
 ok $queue && $queue->id, 'loaded or created queue';
 
-diag "Set Subject Tag" if $ENV{'TEST_VERBOSE'};
+diag "Set Subject Tag";
 {
     is(RT->System->SubjectTag($queue), undef, 'No Subject Tag yet');
     my ($status, $msg) = $queue->SetSubjectTag( $subject_tag );
@@ -25,8 +19,8 @@ diag "Set Subject Tag" if $ENV{'TEST_VERBOSE'};
     is(RT->System->SubjectTag($queue), $subject_tag, "Set Subject Tag to $subject_tag");
 }
 
-my $original_ticket = RT::Ticket->new( $RT::SystemUser );
-diag "Create a ticket and make sure it has the subject tag" if $ENV{'TEST_VERBOSE'};
+my $original_ticket = RT::Ticket->new( RT->SystemUser );
+diag "Create a ticket and make sure it has the subject tag";
 {
     $original_ticket->Create(
         Queue => $queue->id,
@@ -47,7 +41,7 @@ diag "Create a ticket and make sure it has the subject tag" if $ENV{'TEST_VERBOS
 }
 
 
-diag "Test that a reply with a Subject Tag doesn't change the subject" if $ENV{'TEST_VERBOSE'};
+diag "Test that a reply with a Subject Tag doesn't change the subject";
 {
     my $ticketid = $original_ticket->Id;
     my $text = <<EOF;
@@ -61,13 +55,13 @@ EOF
     is ($status >> 8, 0, "The mail gateway exited normally");
     is ($id, $ticketid, "Replied to ticket $id correctly");
 
-    my $freshticket = RT::Ticket->new( $RT::SystemUser );
+    my $freshticket = RT::Ticket->new( RT->SystemUser );
     $freshticket->LoadById($id);
     is($original_ticket->Subject,$freshticket->Subject,'Stripped Queue Subject Tag correctly');
 
 }
 
-diag "Test that a reply with another RT's subject tag changes the subject" if $ENV{'TEST_VERBOSE'};
+diag "Test that a reply with another RT's subject tag changes the subject";
 {
     my $ticketid = $original_ticket->Id;
     my $text = <<EOF;
@@ -77,22 +71,35 @@ Subject: [$subject_tag #$ticketid] [remote-rt-system #79] test
 
 reply with subject tag and remote rt subject tag
 EOF
-    diag($text);
     my ($status, $id) = RT::Test->send_via_mailgate($text, queue => $queue->Name);
     is ($status >> 8, 0, "The mail gateway exited normally");
     is ($id, $ticketid, "Replied to ticket $id correctly");
 
-    my $freshticket = RT::Ticket->new( $RT::SystemUser );
+    my $freshticket = RT::Ticket->new( RT->SystemUser );
     $freshticket->LoadById($id);
     like($freshticket->Subject,qr/\[remote-rt-system #79\]/,"Kept remote rt's subject tag");
     unlike($freshticket->Subject,qr/\[\Q$subject_tag\E #$ticketid\]/,'Stripped Queue Subject Tag correctly');
 
 }
 
-sub parse_mail {
-    my $mail = shift;
-    require RT::EmailParser;
-    my $parser = new RT::EmailParser;
-    $parser->ParseMIMEEntityFromScalar( $mail );
-    return $parser->Entity;
+diag "Test that extraction of another RT's subject tag grabs only tag";
+{
+    my $ticketid = $original_ticket->Id;
+    my $text = <<EOF;
+From: root\@localhost
+To: general\@$RT::rtname
+Subject: [$subject_tag #$ticketid] [comment] [remote-rt-system #79] test
+
+reply with subject tag and remote rt subject tag
+EOF
+    my ($status, $id) = RT::Test->send_via_mailgate($text, queue => $queue->Name);
+    is ($status >> 8, 0, "The mail gateway exited normally");
+    is ($id, $ticketid, "Replied to ticket $id correctly");
+
+    my $freshticket = RT::Ticket->new( RT->SystemUser );
+    $freshticket->LoadById($id);
+    like($freshticket->Subject,qr/\[remote-rt-system #79\]/,"Kept remote rt's subject tag");
+    unlike($freshticket->Subject,qr/comment/,"doesn't grab comment");
+    unlike($freshticket->Subject,qr/\[\Q$subject_tag\E #$ticketid\]/,'Stripped Queue Subject Tag correctly');
 }
+