#
# COPYRIGHT:
#
-# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
# <sales@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
package RT::Test::GnuPG;
use strict;
+use warnings;
use Test::More;
use base qw(RT::Test);
use File::Temp qw(tempdir);
my %args = @_;
my $t = $class->builder;
- $t->plan( skip_all => 'GnuPG required.' )
- unless eval { require GnuPG::Interface; 1 };
- $t->plan( skip_all => 'gpg executable is required.' )
+ RT::Test::plan( skip_all => 'GnuPG required.' )
+ unless GnuPG::Interface->require;
+ RT::Test::plan( skip_all => 'gpg executable is required.' )
unless RT::Test->find_executable('gpg');
- require RT::Crypt::GnuPG;
$class->SUPER::import(%args);
+ return $class->export_to_level(1)
+ if $^C;
RT::Test::diag "GnuPG --homedir " . RT->Config->Get('GnuPGOptions')->{'homedir'};
OutgoingMessagesFormat => 'RFC',
));
Set(\%GnuPGOptions => \%{ $dumped_gnupg_options });
-Set(\@MailPlugins => qw(Auth::MailFrom Auth::GnuPG));
+Set(\@MailPlugins => qw(Auth::MailFrom Auth::Crypt));
};
}
$m->click('SubmitTicket');
is $m->status, 200, "request successful";
- $m->content_contains("Message recorded", 'Message recorded') or diag $m->content;
+ $m->content_contains("Correspondence added", 'Correspondence added') or diag $m->content;
my @mail = RT::Test->fetch_caught_mails;
my $content = $type eq 'email'
? "Some content"
- : "Attachment content";
+ : $args{Attachment};
if ( $args{'Encrypt'} ) {
- unlike $mail, qr/$content/, "outgoing $type was encrypted";
+ unlike $mail, qr/$content/, "outgoing $type is not in plaintext";
+ my $entity = RT::Test::parse_mail($mail);
+ my @res = RT::Crypt->VerifyDecrypt(Entity => $entity);
+ like $res[0]{'status'}, qr/DECRYPTION_OKAY/, "Decrypts OK";
+ like $entity->as_string, qr/$content/, "outgoing decrypts to contain $type content";
} else {
like $mail, qr/$content/, "outgoing $type was not encrypted";
- }
+ }
next unless $type eq 'email';
# strip id from subject to create new ticket
$mail =~ s/^(Subject:)\s*\[.*?\s+#\d+\]\s*/$1 /m;
# strip several headers
- foreach my $field ( qw(Message-ID X-RT-Original-Encoding RT-Originator RT-Ticket X-RT-Loop-Prevention) ) {
+ foreach my $field ( qw(Message-ID RT-Originator RT-Ticket X-RT-Loop-Prevention) ) {
$mail =~ s/^$field:.*?\n(?! |\t)//gmsi;
}
return $mail;
"RT's outgoing mail looks not signed";
}
elsif ( $type eq 'signed' ) {
- is $msg->GetHeader('X-RT-Privacy'), 'PGP',
+ is $msg->GetHeader('X-RT-Privacy'), 'GnuPG',
"RT's outgoing mail has crypto";
is $msg->GetHeader('X-RT-Incoming-Encryption'), 'Not encrypted',
"RT's outgoing mail looks not encrypted";
"RT's outgoing mail looks signed";
}
elsif ( $type eq 'encrypted' ) {
- is $msg->GetHeader('X-RT-Privacy'), 'PGP',
+ is $msg->GetHeader('X-RT-Privacy'), 'GnuPG',
"RT's outgoing mail has crypto";
is $msg->GetHeader('X-RT-Incoming-Encryption'), 'Success',
"RT's outgoing mail looks encrypted";
}
elsif ( $type eq 'signed_encrypted' ) {
- is $msg->GetHeader('X-RT-Privacy'), 'PGP',
+ is $msg->GetHeader('X-RT-Privacy'), 'GnuPG',
"RT's outgoing mail has crypto";
is $msg->GetHeader('X-RT-Incoming-Encryption'), 'Success',
"RT's outgoing mail looks encrypted";