diff options
Diffstat (limited to 'rt/t/mail/one-time-recipients.t')
-rw-r--r-- | rt/t/mail/one-time-recipients.t | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/rt/t/mail/one-time-recipients.t b/rt/t/mail/one-time-recipients.t new file mode 100644 index 0000000..985f955 --- /dev/null +++ b/rt/t/mail/one-time-recipients.t @@ -0,0 +1,209 @@ +#!/usr/bin/perl +use strict; +use warnings; +use utf8; + +use RT::Test tests => 38; + +my $queue = RT::Test->load_or_create_queue( + Name => 'General', + CorrespondAddress => 'rt-recipient@example.com', + CommentAddress => 'rt-recipient@example.com', +); +ok $queue && $queue->id, 'loaded or created queue'; + +my $user = RT::Test->load_or_create_user( + Name => 'root', + EmailAddress => 'root@localhost', +); +ok $user && $user->id, 'loaded or created user'; + +diag "Reply to ticket with actor as one time cc"; +{ + my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user ) ); + my ($status, undef, $msg) = $ticket->Create( + Queue => $queue->id, + Subject => 'test', + Requestor => 'root@localhost', + ); + ok $status, "created ticket"; + + my @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('To'); + $to =~ s/^\s+|\s+$//; + is $to, 'root@localhost', 'got mail' + } + + RT->Config->Set( NotifyActor => 1 ); + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('To'); + $to =~ s/^\s+|\s+$//; + is $to, 'root@localhost', 'got mail' + } + + RT->Config->Set( NotifyActor => 0 ); + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok !@mails, "no mail - don't notify actor"; + + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + CcMessageTo => 'root@localhost', + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('Cc'); + $to =~ s/^\s+|\s+$//; + is $to, 'root@localhost', 'got mail' + } +} + +diag "Reply to ticket with requestor squelched"; +{ + my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user ) ); + my ($status, undef, $msg) = $ticket->Create( + Queue => $queue->id, + Subject => 'test', + Requestor => 'test@localhost', + ); + ok $status, "created ticket"; + + my @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('To'); + $to =~ s/^\s+|\s+$//; + is $to, 'test@localhost', 'got mail' + } + + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('To'); + $to =~ s/^\s+|\s+$//; + is $to, 'test@localhost', 'got mail' + } + + $ticket->SquelchMailTo('test@localhost'); + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok !@mails, "no mail - squelched"; + + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + CcMessageTo => 'test@localhost', + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('Cc'); + $to =~ s/^\s+|\s+$//; + is $to, 'test@localhost', 'got mail' + } +} + +diag "Reply to ticket with requestor squelched"; +{ + my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user ) ); + my ($status, undef, $msg) = $ticket->Create( + Queue => $queue->id, + Subject => 'test', + Requestor => 'test@localhost', + ); + ok $status, "created ticket"; + + my @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('To'); + $to =~ s/^\s+|\s+$//; + is $to, 'test@localhost', 'got mail' + } + + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('To'); + $to =~ s/^\s+|\s+$//; + is $to, 'test@localhost', 'got mail' + } + + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + SquelchMailTo => ['test@localhost'], + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok !@mails, "no mail - squelched"; + + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('To'); + $to =~ s/^\s+|\s+$//; + is $to, 'test@localhost', 'got mail' + } + + ($status, $msg) = $ticket->Correspond( + Content => 'test mail', + CcMessageTo => 'test@localhost', + SquelchMailTo => ['test@localhost'], + ); + ok $status, "replied to a ticket"; + + @mails = RT::Test->fetch_caught_mails; + ok @mails, "got some outgoing emails"; + foreach my $mail ( @mails ) { + my $entity = parse_mail( $mail ); + my $to = $entity->head->get('Cc'); + $to =~ s/^\s+|\s+$//; + is $to, 'test@localhost', 'got mail' + } +} |