Lemonldap-NG-Portal

 view release on metacpan or  search on metacpan

t/44-CertificateResetByMail-LDAP.t  view on Meta::CPAN

-----END CERTIFICATE-----";

    open my $FH2, '>', '/tmp/v296ZJQ_kG';
    print {$FH2} "$cert";
    close $FH2;

    $res = $client->app->( {
            'plack.request.query' => bless( {
                    'skin'       => $querytab{'skin'},
                    'mail_token' => $querytab{'mail_token'}
                },
                'Hash::MultiValue'
            ),
            'PATH_INFO'   => '/certificateReset',
            'HTTP_ACCEPT' =>
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
            'REQUEST_METHOD'       => 'POST',
            'HTTP_ORIGIN'          => 'http://auth.example.com',
            'HTTP_ACCEPT_LANGUAGE' => 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
            'REQUEST_SCHEME'       => 'http',
            'HTTP_CACHE_CONTROL'   => 'max-age=0',

            'plack.request.merged' => bless( {
                    'skin'       => $querytab{'skin'},
                    'mail_token' => $querytab{'mail_token'},
                    'url'        => '',
                    'token'      => $inputs{'token'}
                },
                'Hash::MultiValue'
            ),
            'REMOTE_PORT'                    => '36674',
            'QUERY_STRING'                   => $querymail,
            'SERVER_SIGNATURE'               => '',
            'psgix.input.buffered'           => 1,
            'HTTP_UPGRADE_INSECURE_REQUESTS' => '1',
            'CONTENT_TYPE'                   =>
'multipart/form-data; boundary=----WebKitFormBoundarybabRY9u6K9tERoLr',
            'plack.request.upload' => bless( {
                    'certif' => bless( {
                            'headers' => bless( {
                                    'content-disposition' =>
'form-data; name="certif"; filename="user.pem"',
                                    'content-type' =>
                                      'application/x-x509-ca-cert',
                                    '::std_case' => {
                                        'content-disposition' =>
                                          'Content-Disposition'
                                    }
                                },
                                'HTTP::Headers'
                            ),
                            'filename' => 'user.pem',
                            'tempname' => '/tmp/v296ZJQ_kG',
                            'size'     => 1261
                        },
                        'Plack::Request::Upload'
                    )
                },
                'Hash::MultiValue'
            ),
            'psgi.streaming'     => 1,
            'plack.request.body' => bless( {
                    'skin'  => 'bootstrap',
                    'url'   => '',
                    'token' => $inputs{'token'}
                },
                'Hash::MultiValue'
            ),
            'SCRIPT_URL'   => '/certificateReset',
            'SERVER_NAME'  => 'auth.example.com',
            'HTTP_REFERER' => 'http://auth.example.com/certificateReset?'
              . $querymail,
            'HTTP_CONNECTION'     => 'close',
            'CONTENT_LENGTH'      => '1759',
            'SCRIPT_URI'          => 'http://auth.example.com/certificateReset',
            'plack.cookie.parsed' => {
                'llnglanguage' => 'fr'
            },
            'SERVER_PORT'     => '80',
            'SERVER_NAME'     => 'auth.example.com',
            'SERVER_PROTOCOL' => 'HTTP/1.1',
            'SCRIPT_NAME'     => '',
            'HTTP_USER_AGENT' =>
              'Mozilla/5.0 (VAX-4000; rv:36.0) Gecko/20350101 Firefox',
            'HTTP_COOKIE'         => 'llnglanguage=fr',
            'REMOTE_ADDR'         => '127.0.0.1',
            'REQUEST_URI'         => '/certificateReset?' . $querymail,
            'plack.cookie.string' => 'llnglanguage=fr',
            'SERVER_ADDR'         => '127.0.0.1',
            'psgi.url_scheme'     => 'http',
            'psgix.harakiri'      => '',
            'HTTP_HOST'           => 'auth.example.com'
        }
    );

    ok( mail() =~ /Certificate successfully reset/,
        'Certificate has been reset' );

    # Test invalid certificate

    # Test form
    # ------------------------
    ok( $res = $client->_get( '/certificateReset', accept => 'text/html' ),
        'Reset form', );
    ( $host, $url, $query ) = expectForm( $res, '#', undef, 'mail' );

    $query = 'mail=dwho%40badwolf.org';

    # Post email
    ok(
        $res = $client->_post(
            '/certificateReset', IO::String->new($query),
            length => length($query),
            accept => 'text/html'
        ),
        'Post mail'
    );

    ok( mail() =~ m#a href="http://auth.example.com/certificateReset\?(.*?)"#,
        'Found link in mail' );
    $query     = $1;

t/44-CertificateResetByMail-LDAP.t  view on Meta::CPAN

    $cert = "INVALID CERTIFICATE";

    open $FH2, '>', '/tmp/v296ZJQ_kG';
    print {$FH2} "$cert";
    close $FH2;

    $res = $client->app->( {
            'plack.request.query' => bless( {
                    'skin'       => $querytab{'skin'},
                    'mail_token' => $querytab{'mail_token'}
                },
                'Hash::MultiValue'
            ),
            'PATH_INFO'   => '/certificateReset',
            'HTTP_ACCEPT' =>
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
            'REQUEST_METHOD'       => 'POST',
            'HTTP_ORIGIN'          => 'http://auth.example.com',
            'HTTP_ACCEPT_LANGUAGE' => 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
            'REQUEST_SCHEME'       => 'http',
            'HTTP_CACHE_CONTROL'   => 'max-age=0',

            'plack.request.merged' => bless( {
                    'skin'       => $querytab{'skin'},
                    'mail_token' => $querytab{'mail_token'},
                    'url'        => '',
                    'token'      => $inputs{'token'}
                },
                'Hash::MultiValue'
            ),
            'REMOTE_PORT'                    => '36674',
            'QUERY_STRING'                   => $querymail,
            'SERVER_SIGNATURE'               => '',
            'psgix.input.buffered'           => 1,
            'HTTP_UPGRADE_INSECURE_REQUESTS' => '1',
            'CONTENT_TYPE'                   =>
'multipart/form-data; boundary=----WebKitFormBoundarybabRY9u6K9tERoLr',
            'plack.request.upload' => bless( {
                    'certif' => bless( {
                            'headers' => bless( {
                                    'content-disposition' =>
'form-data; name="certif"; filename="user.pem"',
                                    'content-type' =>
                                      'application/x-x509-ca-cert',
                                    '::std_case' => {
                                        'content-disposition' =>
                                          'Content-Disposition'
                                    }
                                },
                                'HTTP::Headers'
                            ),
                            'filename' => 'user.pem',
                            'tempname' => '/tmp/v296ZJQ_kG',
                            'size'     => 1261
                        },
                        'Plack::Request::Upload'
                    )
                },
                'Hash::MultiValue'
            ),
            'psgi.streaming'     => 1,
            'plack.request.body' => bless( {
                    'skin'  => 'bootstrap',
                    'url'   => '',
                    'token' => $inputs{'token'}
                },
                'Hash::MultiValue'
            ),
            'SCRIPT_URL'   => '/certificateReset',
            'SERVER_NAME'  => 'auth.example.com',
            'HTTP_REFERER' => 'http://auth.example.com/certificateReset?'
              . $querymail,
            'HTTP_CONNECTION'     => 'close',
            'CONTENT_LENGTH'      => '1759',
            'SCRIPT_URI'          => 'http://auth.example.com/certificateReset',
            'plack.cookie.parsed' => {
                'llnglanguage' => 'fr'
            },
            'SERVER_PORT'     => '80',
            'SERVER_NAME'     => 'auth.example.com',
            'SERVER_PROTOCOL' => 'HTTP/1.1',
            'SCRIPT_NAME'     => '',
            'HTTP_USER_AGENT' =>
              'Mozilla/5.0 (VAX-4000; rv:36.0) Gecko/20350101 Firefox',
            'HTTP_COOKIE'         => 'llnglanguage=fr',
            'REMOTE_ADDR'         => '127.0.0.1',
            'REQUEST_URI'         => '/certificateReset?' . $querymail,
            'plack.cookie.string' => 'llnglanguage=fr',
            'SERVER_ADDR'         => '127.0.0.1',
            'psgi.url_scheme'     => 'http',
            'psgix.harakiri'      => '',
            'HTTP_HOST'           => 'auth.example.com'
        }
    );

    my $trmsg = $res->[2]->[0];               # get html response
    my @trmsg = split( /\n/, $trmsg );        # split into lines
    @trmsg = grep( /trmsg="/, @trmsg ); # only get line corresponding to message
    $trmsg = $trmsg[0];                 # get the first one only
    $trmsg =~ s/.*trmsg="([0-9]+)".*/$1/g;    # get error code number
    ok( $trmsg == PE_RESETCERTIFICATE_INVALID, 'Invalid certificate' );
}

clean_sessions();
count($maintests);
done_testing( count() );



( run in 3.223 seconds using v1.01-cache-2.11-cpan-364913b4093 )