X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Ft%2Fweb%2Fgnupg-select-keys-on-create.t;h=cf27e48a724cc25a63b6e7bfbf50b942c6ad3097;hb=6587f6ba7d047ddc1686c080090afe7d53365bd4;hp=deee6b291c1645a77f102af31b6ffc5a4800cf8e;hpb=47153aae5c2fc00316654e7277fccd45f72ff611;p=freeside.git diff --git a/rt/t/web/gnupg-select-keys-on-create.t b/rt/t/web/gnupg-select-keys-on-create.t index deee6b291..cf27e48a7 100644 --- a/rt/t/web/gnupg-select-keys-on-create.t +++ b/rt/t/web/gnupg-select-keys-on-create.t @@ -2,34 +2,8 @@ use strict; use warnings; -use RT::Test tests => 60; - -plan skip_all => 'GnuPG required.' - unless eval 'use GnuPG::Interface; 1'; -plan skip_all => 'gpg executable is required.' - unless RT::Test->find_executable('gpg'); - - +use RT::Test::GnuPG tests => 79, gnupg_options => { passphrase => 'rt-test' }; use RT::Action::SendEmail; -use File::Temp qw(tempdir); - -RT::Test->set_mail_catcher; - -use_ok('RT::Crypt::GnuPG'); - -RT->Config->Set( GnuPG => - Enable => 1, - OutgoingMessagesFormat => 'RFC', -); - -RT->Config->Set( GnuPGOptions => - homedir => scalar tempdir( CLEANUP => 0 ), - passphrase => 'rt-test', - 'no-permission-warning' => undef, -); -diag "GnuPG --homedir ". RT->Config->Get('GnuPGOptions')->{'homedir'} if $ENV{TEST_VERBOSE}; - -RT->Config->Set( 'MailPlugins' => 'Auth::MailFrom', 'Auth::GnuPG' ); my $queue = RT::Test->load_or_create_queue( Name => 'Regression', @@ -38,28 +12,24 @@ my $queue = RT::Test->load_or_create_queue( ); ok $queue && $queue->id, 'loaded or created queue'; -RT::Test->set_rights( - Principal => 'Everyone', - Right => ['CreateTicket', 'ShowTicket', 'SeeQueue', 'ReplyToTicket', 'ModifyTicket'], -); - my ($baseurl, $m) = RT::Test->started_ok; ok $m->login, 'logged in'; -diag "check that signing doesn't work if there is no key" if $ENV{TEST_VERBOSE}; +diag "check that signing doesn't work if there is no key"; { RT::Test->clean_caught_mails; ok $m->goto_create_ticket( $queue ), "UI -> create ticket"; - $m->form_number(3); + $m->form_name('TicketCreate'); $m->tick( Sign => 1 ); $m->field( Requestors => 'rt-test@example.com' ); $m->field( Content => 'Some content' ); $m->submit; - $m->content_like( - qr/unable to sign outgoing email messages/i, + $m->content_contains( + 'unable to sign outgoing email messages', 'problems with passphrase' ); + $m->warning_like(qr/signing failed: secret key not available/); my @mail = RT::Test->fetch_caught_mails; ok !@mail, 'there are no outgoing emails'; @@ -72,33 +42,36 @@ diag "check that signing doesn't work if there is no key" if $ENV{TEST_VERBOSE}; is $res{'info'}[0]{'TrustTerse'}, 'ultimate', 'ultimately trusted key'; } -diag "check that things don't work if there is no key" if $ENV{TEST_VERBOSE}; +diag "check that things don't work if there is no key"; { RT::Test->clean_caught_mails; ok $m->goto_create_ticket( $queue ), "UI -> create ticket"; - $m->form_number(3); + $m->form_name('TicketCreate'); $m->tick( Encrypt => 1 ); $m->field( Requestors => 'rt-test@example.com' ); $m->field( Content => 'Some content' ); $m->submit; - $m->content_like( - qr/You are going to encrypt outgoing email messages/i, + $m->content_contains( + 'You are going to encrypt outgoing email messages', 'problems with keys' ); - $m->content_like( - qr/There is no key suitable for encryption/i, + $m->content_contains( + 'There is no key suitable for encryption', 'problems with keys' ); - my $form = $m->form_number(3); + my $form = $m->form_name('TicketCreate'); ok !$form->find_input( 'UseKey-rt-test@example.com' ), 'no key selector'; my @mail = RT::Test->fetch_caught_mails; ok !@mail, 'there are no outgoing emails'; + + $m->next_warning_like(qr/public key not found/) for 1 .. 4; + $m->no_leftover_warnings_ok; } -diag "import first key of rt-test\@example.com" if $ENV{TEST_VERBOSE}; +diag "import first key of rt-test\@example.com"; my $fpr1 = ''; { RT::Test->import_gnupg_key('rt-test@example.com', 'public'); @@ -107,45 +80,47 @@ my $fpr1 = ''; $fpr1 = $res{'info'}[0]{'Fingerprint'}; } -diag "check that things still doesn't work if key is not trusted" if $ENV{TEST_VERBOSE}; +diag "check that things still doesn't work if key is not trusted"; { RT::Test->clean_caught_mails; ok $m->goto_create_ticket( $queue ), "UI -> create ticket"; - $m->form_number(3); + $m->form_name('TicketCreate'); $m->tick( Encrypt => 1 ); $m->field( Requestors => 'rt-test@example.com' ); $m->field( Content => 'Some content' ); $m->submit; - $m->content_like( - qr/You are going to encrypt outgoing email messages/i, + $m->content_contains( + 'You are going to encrypt outgoing email messages', 'problems with keys' ); - $m->content_like( - qr/There is one suitable key, but trust level is not set/i, + $m->content_contains( + 'There is one suitable key, but trust level is not set', 'problems with keys' ); - my $form = $m->form_number(3); + my $form = $m->form_name('TicketCreate'); ok my $input = $form->find_input( 'UseKey-rt-test@example.com' ), 'found key selector'; is scalar $input->possible_values, 1, 'one option'; $m->select( 'UseKey-rt-test@example.com' => $fpr1 ); $m->submit; - $m->content_like( - qr/You are going to encrypt outgoing email messages/i, + $m->content_contains( + 'You are going to encrypt outgoing email messages', 'problems with keys' ); - $m->content_like( - qr/Selected key either is not trusted/i, + $m->content_contains( + 'Selected key either is not trusted', 'problems with keys' ); my @mail = RT::Test->fetch_caught_mails; ok !@mail, 'there are no outgoing emails'; + + $m->no_warnings_ok; } -diag "import a second key of rt-test\@example.com" if $ENV{TEST_VERBOSE}; +diag "import a second key of rt-test\@example.com"; my $fpr2 = ''; { RT::Test->import_gnupg_key('rt-test@example.com.2', 'public'); @@ -154,42 +129,44 @@ my $fpr2 = ''; $fpr2 = $res{'info'}[2]{'Fingerprint'}; } -diag "check that things still doesn't work if two keys are not trusted" if $ENV{TEST_VERBOSE}; +diag "check that things still doesn't work if two keys are not trusted"; { RT::Test->clean_caught_mails; ok $m->goto_create_ticket( $queue ), "UI -> create ticket"; - $m->form_number(3); + $m->form_name('TicketCreate'); $m->tick( Encrypt => 1 ); $m->field( Requestors => 'rt-test@example.com' ); $m->field( Content => 'Some content' ); $m->submit; - $m->content_like( - qr/You are going to encrypt outgoing email messages/i, + $m->content_contains( + 'You are going to encrypt outgoing email messages', 'problems with keys' ); - $m->content_like( - qr/There are several keys suitable for encryption/i, + $m->content_contains( + 'There are several keys suitable for encryption', 'problems with keys' ); - my $form = $m->form_number(3); + my $form = $m->form_name('TicketCreate'); ok my $input = $form->find_input( 'UseKey-rt-test@example.com' ), 'found key selector'; is scalar $input->possible_values, 2, 'two options'; $m->select( 'UseKey-rt-test@example.com' => $fpr1 ); $m->submit; - $m->content_like( - qr/You are going to encrypt outgoing email messages/i, + $m->content_contains( + 'You are going to encrypt outgoing email messages', 'problems with keys' ); - $m->content_like( - qr/Selected key either is not trusted/i, + $m->content_contains( + 'Selected key either is not trusted', 'problems with keys' ); my @mail = RT::Test->fetch_caught_mails; ok !@mail, 'there are no outgoing emails'; + + $m->no_warnings_ok; } { @@ -204,26 +181,28 @@ diag "check that we see key selector even if only one key is trusted but there a RT::Test->clean_caught_mails; ok $m->goto_create_ticket( $queue ), "UI -> create ticket"; - $m->form_number(3); + $m->form_name('TicketCreate'); $m->tick( Encrypt => 1 ); $m->field( Requestors => 'rt-test@example.com' ); $m->field( Content => 'Some content' ); $m->submit; - $m->content_like( - qr/You are going to encrypt outgoing email messages/i, + $m->content_contains( + 'You are going to encrypt outgoing email messages', 'problems with keys' ); - $m->content_like( - qr/There are several keys suitable for encryption/i, + $m->content_contains( + 'There are several keys suitable for encryption', 'problems with keys' ); - my $form = $m->form_number(3); + my $form = $m->form_name('TicketCreate'); ok my $input = $form->find_input( 'UseKey-rt-test@example.com' ), 'found key selector'; is scalar $input->possible_values, 2, 'two options'; my @mail = RT::Test->fetch_caught_mails; ok !@mail, 'there are no outgoing emails'; + + $m->no_warnings_ok; } diag "check that key selector works and we can select trusted key"; @@ -231,21 +210,21 @@ diag "check that key selector works and we can select trusted key"; RT::Test->clean_caught_mails; ok $m->goto_create_ticket( $queue ), "UI -> create ticket"; - $m->form_number(3); + $m->form_name('TicketCreate'); $m->tick( Encrypt => 1 ); $m->field( Requestors => 'rt-test@example.com' ); $m->field( Content => 'Some content' ); $m->submit; - $m->content_like( - qr/You are going to encrypt outgoing email messages/i, + $m->content_contains( + 'You are going to encrypt outgoing email messages', 'problems with keys' ); - $m->content_like( - qr/There are several keys suitable for encryption/i, + $m->content_contains( + 'There are several keys suitable for encryption', 'problems with keys' ); - my $form = $m->form_number(3); + my $form = $m->form_name('TicketCreate'); ok my $input = $form->find_input( 'UseKey-rt-test@example.com' ), 'found key selector'; is scalar $input->possible_values, 2, 'two options'; @@ -256,6 +235,8 @@ diag "check that key selector works and we can select trusted key"; my @mail = RT::Test->fetch_caught_mails; ok @mail, 'there are some emails'; check_text_emails( { Encrypt => 1 }, @mail ); + + $m->no_warnings_ok; } diag "check encrypting of attachments"; @@ -263,22 +244,22 @@ diag "check encrypting of attachments"; RT::Test->clean_caught_mails; ok $m->goto_create_ticket( $queue ), "UI -> create ticket"; - $m->form_number(3); + $m->form_name('TicketCreate'); $m->tick( Encrypt => 1 ); $m->field( Requestors => 'rt-test@example.com' ); $m->field( Content => 'Some content' ); $m->field( Attach => $0 ); $m->submit; - $m->content_like( - qr/You are going to encrypt outgoing email messages/i, + $m->content_contains( + 'You are going to encrypt outgoing email messages', 'problems with keys' ); - $m->content_like( - qr/There are several keys suitable for encryption/i, + $m->content_contains( + 'There are several keys suitable for encryption', 'problems with keys' ); - my $form = $m->form_number(3); + my $form = $m->form_name('TicketCreate'); ok my $input = $form->find_input( 'UseKey-rt-test@example.com' ), 'found key selector'; is scalar $input->possible_values, 2, 'two options'; @@ -289,37 +270,7 @@ diag "check encrypting of attachments"; my @mail = RT::Test->fetch_caught_mails; ok @mail, 'there are some emails'; check_text_emails( { Encrypt => 1, Attachment => 1 }, @mail ); -} -sub check_text_emails { - my %args = %{ shift @_ }; - my @mail = @_; - - ok scalar @mail, "got some mail"; - for my $mail (@mail) { - for my $type ('email', 'attachment') { - next if $type eq 'attachment' && !$args{'Attachment'}; - - my $content = $type eq 'email' - ? "Some content" - : "Attachment content"; - - if ( $args{'Encrypt'} ) { - unlike $mail, qr/$content/, "outgoing $type was encrypted"; - } else { - like $mail, qr/$content/, "outgoing $type was not encrypted"; - } - - next unless $type eq 'email'; - - if ( $args{'Sign'} && $args{'Encrypt'} ) { - like $mail, qr/BEGIN PGP MESSAGE/, 'outgoing email was signed'; - } elsif ( $args{'Sign'} ) { - like $mail, qr/SIGNATURE/, 'outgoing email was signed'; - } else { - unlike $mail, qr/SIGNATURE/, 'outgoing email was not signed'; - } - } - } + $m->no_warnings_ok; }