diff options
Diffstat (limited to 'rt/t/maildigest/attributes.t')
-rw-r--r-- | rt/t/maildigest/attributes.t | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/rt/t/maildigest/attributes.t b/rt/t/maildigest/attributes.t deleted file mode 100644 index ba2a58566..000000000 --- a/rt/t/maildigest/attributes.t +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/perl -w - -use warnings; -use strict; -use RT; -use RT::Test tests => 31; -my @users = qw/ emailnormal@example.com emaildaily@example.com emailweekly@example.com emailsusp@example.com /; - -my( $ret, $msg ); -my $user_n = RT::User->new( $RT::SystemUser ); -( $ret, $msg ) = $user_n->LoadOrCreateByEmail( $users[0] ); -ok( $ret, "user with default email prefs created: $msg" ); -$user_n->SetPrivileged( 1 ); - -my $user_d = RT::User->new( $RT::SystemUser ); -( $ret, $msg ) = $user_d->LoadOrCreateByEmail( $users[1] ); -ok( $ret, "user with daily digest email prefs created: $msg" ); -# Set a username & password for testing the interface. -$user_d->SetPrivileged( 1 ); -$user_d->SetPreferences($RT::System => { %{ $user_d->Preferences( $RT::System ) || {}}, EmailFrequency => 'Daily digest'}); - - - -my $user_w = RT::User->new( $RT::SystemUser ); -( $ret, $msg ) = $user_w->LoadOrCreateByEmail( $users[2] ); -ok( $ret, "user with weekly digest email prefs created: $msg" ); -$user_w->SetPrivileged( 1 ); -$user_w->SetPreferences($RT::System => { %{ $user_w->Preferences( $RT::System ) || {}}, EmailFrequency => 'Weekly digest'}); - -my $user_s = RT::User->new( $RT::SystemUser ); -( $ret, $msg ) = $user_s->LoadOrCreateByEmail( $users[3] ); -ok( $ret, "user with suspended email prefs created: $msg" ); -$user_s->SetPreferences($RT::System => { %{ $user_s->Preferences( $RT::System ) || {}}, EmailFrequency => 'Suspended'}); -$user_s->SetPrivileged( 1 ); - - -is(RT::Config->Get('EmailFrequency' => $user_s), 'Suspended'); - -# Make a testing queue for ourselves. -my $testq = RT::Queue->new( $RT::SystemUser ); -if( $testq->ValidateName( 'EmailDigest-testqueue' ) ) { - ( $ret, $msg ) = $testq->Create( Name => 'EmailDigest-testqueue' ); - ok( $ret, "Our test queue is created: $msg" ); -} else { - $testq->Load( 'EmailDigest-testqueue' ); - ok( $testq->id, "Our test queue is loaded" ); -} - -# Allow anyone to open a ticket on the test queue. -my $everyone = RT::Group->new( $RT::SystemUser ); -( $ret, $msg ) = $everyone->LoadSystemInternalGroup( 'Everyone' ); -ok( $ret, "Loaded 'everyone' group: $msg" ); - -( $ret, $msg ) = $everyone->PrincipalObj->GrantRight( Right => 'CreateTicket', - Object => $testq ); -ok( $ret || $msg =~ /already has/, "Granted everyone CreateTicket on testq: $msg" ); - -# Make user_d an admincc for the queue. -( $ret, $msg ) = $user_d->PrincipalObj->GrantRight( Right => 'AdminQueue', - Object => $testq ); -ok( $ret || $msg =~ /already has/, "Granted dduser AdminQueue on testq: $msg" ); -( $ret, $msg ) = $testq->AddWatcher( Type => 'AdminCc', - PrincipalId => $user_d->PrincipalObj->id ); -ok( $ret || $msg =~ /already/, "dduser added as a queue watcher: $msg" ); - -# Give the others queue rights. -( $ret, $msg ) = $user_n->PrincipalObj->GrantRight( Right => 'AdminQueue', - Object => $testq ); -ok( $ret || $msg =~ /already has/, "Granted emailnormal right on testq: $msg" ); -( $ret, $msg ) = $user_w->PrincipalObj->GrantRight( Right => 'AdminQueue', - Object => $testq ); -ok( $ret || $msg =~ /already has/, "Granted emailweekly right on testq: $msg" ); -( $ret, $msg ) = $user_s->PrincipalObj->GrantRight( Right => 'AdminQueue', - Object => $testq ); -ok( $ret || $msg =~ /already has/, "Granted emailsusp right on testq: $msg" ); - -# Create a ticket with To: Cc: Bcc: fields using our four users. -my $id; -my $ticket = RT::Ticket->new( $RT::SystemUser ); -( $id, $ret, $msg ) = $ticket->Create( Queue => $testq->Name, - Requestor => [ $user_w->Name ], - Subject => 'Test ticket for RT::Extension::EmailDigest', - ); -ok( $ret, "Ticket $id created: $msg" ); - -# Make the other users ticket watchers. -( $ret, $msg ) = $ticket->AddWatcher( Type => 'Cc', - PrincipalId => $user_n->PrincipalObj->id ); -ok( $ret, "Added user_n as a ticket watcher: $msg" ); -( $ret, $msg ) = $ticket->AddWatcher( Type => 'Cc', - PrincipalId => $user_s->PrincipalObj->id ); -ok( $ret, "Added user_s as a ticket watcher: $msg" ); - -my $obj; -($id, $msg, $obj ) = $ticket->Correspond( - Content => "This is a ticket response for CC action" ); -ok( $ret, "Transaction created: $msg" ); - -# Get the deferred notifications that should result. Should be two for -# email daily, and one apiece for emailweekly and emailsusp. -my @notifications; - -my $txns = RT::Transactions->new( $RT::SystemUser ); -$txns->LimitToTicket( $ticket->id ); -my( $c_daily, $c_weekly, $c_susp ) = ( 0, 0, 0 ); -while( my $txn = $txns->Next ) { - my @daily_rcpt = $txn->DeferredRecipients( 'daily' ); - my @weekly_rcpt = $txn->DeferredRecipients('weekly' ); - my @susp_rcpt = $txn->DeferredRecipients( 'susp' ); - - $c_daily++ if @daily_rcpt; - $c_weekly++ if @weekly_rcpt; - $c_susp++ if @susp_rcpt; - - # If the transaction has content... - if( $txn->ContentObj ) { - # ...none of the deferred folk should be in the header. - my $headerstr = $txn->ContentObj->Headers; - foreach my $rcpt( @daily_rcpt, @weekly_rcpt, @susp_rcpt ) { - ok( $headerstr !~ /$rcpt/, "Deferred recipient $rcpt not found in header" ); - } - } -} - -# Finally, check to see that we got the correct number of each sort of -# deferred recipient. -is( $c_daily, 2, "correct number of daily-sent messages" ); -is( $c_weekly, 2, "correct number of weekly-sent messages" ); -is( $c_susp, 1, "correct number of suspended messages" ); - - - - - -# Now let's actually run the daily and weekly digest tool to make sure we generate those - -# the first time get the content -email_digest_like( '--mode daily --print', qr/in the last day/ ); -# The second time run it for real so we make sure that we get RT to mark the txn as sent -email_digest_like( '--mode daily', qr/maildaily\@/ ); -# now we should have nothing to do, so no content. -email_digest_like( '--mode daily --print', '' ); - -# the first time get the content -email_digest_like( '--mode weekly --print', qr/in the last seven days/ ); -# The second time run it for real so we make sure that we get RT to mark the txn as sent -email_digest_like( '--mode weekly', qr/mailweekly\@/ ); -# now we should have nothing to do, so no content. -email_digest_like( '--mode weekly --print', '' ); - -sub email_digest_like { - my $arg = shift; - my $pattern = shift; - - local $Test::Builder::Level = $Test::Builder::Level + 1; - - my $perl = $^X . ' ' . join ' ', map { "-I$_" } @INC; - open my $digester, "-|", "$perl $RT::SbinPath/rt-email-digest $arg"; - my @results = <$digester>; - my $content = join '', @results; - if ( ref $pattern && ref $pattern eq 'Regexp' ) { - like($content, $pattern); - } - else { - is( $content, $pattern ); - } - close $digester; -} |