1bc172d71981c2e891dd422847e906f6275c6849
[freeside.git] / rt / t / mail / one-time-recipients.t
1 use strict;
2 use warnings;
3
4 use RT::Test tests => undef;
5 use RT::Test::Email;
6 use Test::Warn;
7
8 my $queue = RT::Test->load_or_create_queue(
9     Name              => 'General',
10     CorrespondAddress => 'rt-recipient@example.com',
11     CommentAddress    => 'rt-recipient@example.com',
12 );
13 ok $queue && $queue->id, 'loaded or created queue';
14
15 my $user = RT::Test->load_or_create_user(
16     Name         => 'root',
17     EmailAddress => 'root@localhost',
18 );
19 ok $user && $user->id, 'loaded or created user';
20
21 diag "Reply to ticket with actor as one time cc";
22 warnings_are {
23     my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user ) );
24     mail_ok {
25         my ($status, undef, $msg) = $ticket->Create(
26             Queue => $queue->id,
27             Subject => 'test',
28             Requestor => 'root@localhost',
29         );
30         ok $status, "created ticket";
31     } { To => 'root@localhost' };
32
33     RT->Config->Set( NotifyActor => 1 );
34     mail_ok {
35         my ($status, $msg) = $ticket->Correspond(
36             Content => 'test mail',
37         );
38         ok $status, "replied to a ticket";
39     } { To => 'root@localhost' };
40
41     RT->Config->Set( NotifyActor => 0 );
42     mail_ok {
43         my ($status, $msg) = $ticket->Correspond(
44             Content => 'test mail',
45         );
46         ok $status, "replied to a ticket";
47     };
48
49     mail_ok {
50         my ($status, $msg) = $ticket->Correspond(
51             Content => 'test mail',
52             CcMessageTo => 'root@localhost',
53         );
54         ok $status, "replied to a ticket";
55     } { Cc => 'root@localhost' };
56 } [];
57
58 diag "Reply to ticket with requestor squelched";
59 warnings_are {
60     my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user ) );
61     mail_ok {
62         my ($status, undef, $msg) = $ticket->Create(
63             Queue => $queue->id,
64             Subject => 'test',
65             Requestor => 'test@localhost',
66         );
67         ok $status, "created ticket";
68     } { To => 'test@localhost' };
69
70     mail_ok {
71         my ($status, $msg) = $ticket->Correspond(
72             Content => 'test mail',
73         );
74         ok $status, "replied to a ticket";
75     } { To => 'test@localhost' };
76
77     $ticket->SquelchMailTo('test@localhost');
78     mail_ok {
79         my ($status, $msg) = $ticket->Correspond(
80             Content => 'test mail',
81         );
82         ok $status, "replied to a ticket";
83     };
84
85     mail_ok {
86         my ($status, $msg) = $ticket->Correspond(
87             Content => 'test mail',
88             CcMessageTo => 'test@localhost',
89         );
90         ok $status, "replied to a ticket";
91     } { Cc => 'test@localhost' };
92 } [];
93
94 diag "Reply to ticket with requestor squelched";
95 warnings_are {
96     my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user ) );
97     mail_ok {
98         my ($status, undef, $msg) = $ticket->Create(
99             Queue => $queue->id,
100             Subject => 'test',
101             Requestor => 'test@localhost',
102         );
103         ok $status, "created ticket";
104     } { To => 'test@localhost' };
105
106     mail_ok {
107         my ($status, $msg) = $ticket->Correspond(
108             Content => 'test mail',
109         );
110         ok $status, "replied to a ticket";
111     } { To => 'test@localhost' };
112
113     mail_ok {
114         my ($status, $msg) = $ticket->Correspond(
115             Content => 'test mail',
116             SquelchMailTo => ['test@localhost'],
117         );
118         ok $status, "replied to a ticket";
119     };
120
121     mail_ok {
122         my ($status, $msg) = $ticket->Correspond(
123             Content => 'test mail',
124         );
125         ok $status, "replied to a ticket";
126     } { To => 'test@localhost' };
127
128     mail_ok {
129         my ($status, $msg) = $ticket->Correspond(
130             Content => 'test mail',
131             CcMessageTo => 'test@localhost',
132             SquelchMailTo => ['test@localhost'],
133         );
134         ok $status, "replied to a ticket";
135     }  { Cc => 'test@localhost' };
136 } [];
137
138 diag "Requestor is an RT address";
139 warnings_are {
140     my $ticket = RT::Ticket->new( RT::CurrentUser->new( $user ) );
141     mail_ok {
142         my ($status, undef, $msg) = $ticket->Create(
143             Queue => $queue->id,
144             Subject => 'test',
145             Requestor => 'rt-address@example.com',
146         );
147         ok $status, "created ticket";
148     } { To => 'rt-address@example.com' };
149
150     RT->Config->Set( RTAddressRegexp => qr/^rt-address\@example\.com$/i );
151     mail_ok {
152         my ($status, $msg) = $ticket->Correspond(
153             Content => 'test mail',
154         );
155         ok $status, "replied to a ticket";
156     };
157
158     mail_ok {
159         my ($status, $msg) = $ticket->Correspond(
160             Content => 'test mail',
161             CcMessageTo => 'rt-address@example.com',
162         );
163         ok $status, "replied to a ticket";
164     };
165 } [];
166
167 done_testing;