The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest qw'GET POST';

# skip tests if we use a old version of LWP.
plan tests => 9, sub {  have_lwp() && $LWP::VERSION >= 5.76 };

require HTTP::Cookies;

my $cookie_jar = HTTP::Cookies->new;

Apache::TestRequest::user_agent(
                                 reset                 => 1,
                                 cookie_jar            => $cookie_jar,
                                 requests_redirectable => [qw/GET HEAD POST/]
);

 my  $r = POST '/login2',
    [
      login     => '_illegal_login_',
      passwd   => 'wrong_secret',
      pkit_done => '/index',
      pkit_login => 1
    ];

 ok t_cmp( 200, $r->code, '$r->code == 200 Found?' );
  ok t_cmp( $r->content, qr:\QYour login/password is invalid. Please try again.:, "Invalid Login?");

   $r = POST '/login2',
    [
      login     => 'charlie_00000000',
      passwd   => 'wrong_secret',
      pkit_done => '/index',
      pkit_login => 1
    ];
 ok t_cmp( 200, $r->code, '$r->code == 200 Found?' );
  ok t_cmp( $r->content, qr:\QYour login/password is invalid. Please try again.:, "Login Invalid?");
 
   $r = POST '/login2',
    [
      login     => 'charlie_00000000',
      passwd   => 'MySecret',
      pkit_done => '/index',
      pkit_login => 1
    ];
 ok t_cmp( 200, $r->code, '$r->code == 200 Found?' );
  ok t_cmp( $r->content, qr:\QYou have successfully logged in.:, "Login success?"); 


my $cookie_cnt = 0;
my $pkit_id_cnt = 0;
$cookie_jar->scan(
  sub {
    $cookie_cnt++;
    next unless ( $_[1] eq 'pkit_id' );
    $pkit_id_cnt++;
    # cookie has no expire field and or discard is set
    ok( !$_[8] or $_[9] );    # temp cookie
  }
);
ok $cookie_cnt  >= 1;
ok $pkit_id_cnt >= 1;