%PDF- %PDF-
Direktori : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Authen-SCRAM-0.011/t/ |
Current File : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Authen-SCRAM-0.011/t/round_trip.t |
use 5.008001; use strict; use warnings; use Test::More 0.96; use Test::FailWarnings -allow_deps => 1; use Test::Fatal; binmode( Test::More->builder->$_, ":utf8" ) for qw/output failure_output todo_output/; use lib 't/lib'; use TestSCRAM qw/get_client get_server/; subtest "RFC 5802 example" => sub { my $client = get_client( _nonce_generator => sub { "fyko+d2lbbFgONRv9qkxdawL" } ); my $server = get_server; my ( $c1, $c2, $s1, $s2 ); is( exception { $c1 = $client->first_msg() }, undef, "client first message" ); is( exception { $s1 = $server->first_msg($c1) }, undef, "server first message" ); is( exception { $c2 = $client->final_msg($s1) }, undef, "client final message" ); is( exception { $s2 = $server->final_msg($c2) }, undef, "server final message" ); is( exception { $client->validate($s2) }, undef, "client validation" ); is( $server->authorization_id, 'user', "server authz" ); }; subtest "generated example" => sub { my $client = get_client( username => 'johndoe', password => 'passPASSpass' ); my $server = get_server; my ( $c1, $c2, $s1, $s2 ); is( exception { $c1 = $client->first_msg() }, undef, "client first message" ); is( exception { $s1 = $server->first_msg($c1) }, undef, "server first message" ); is( exception { $c2 = $client->final_msg($s1) }, undef, "client final message" ); is( exception { $s2 = $server->final_msg($c2) }, undef, "server final message" ); is( exception { $client->validate($s2) }, undef, "client validation" ); is( $server->authorization_id, 'johndoe', "server authz" ); }; subtest "generated example with authz" => sub { my $client = get_client( username => 'johndoe', password => 'passPASSpass', authorization_id => 'admin' ); my $server = get_server; my ( $c1, $c2, $s1, $s2 ); is( exception { $c1 = $client->first_msg() }, undef, "client first message" ); is( exception { $s1 = $server->first_msg($c1) }, undef, "server first message" ); is( exception { $c2 = $client->final_msg($s1) }, undef, "client final message" ); is( exception { $s2 = $server->final_msg($c2) }, undef, "server final message" ); is( exception { $client->validate($s2) }, undef, "client validation" ); is( $server->authorization_id, 'admin', "server authz" ); }; subtest "generated example with Unicode user/pass/authz" => sub { my $client = get_client( username => "johnd\N{U+110B}oe", password => "pass\N{U+110B}PASSpass", authorization_id => "admi\N{U+110B}n" ); my $server = get_server; my ( $c1, $c2, $s1, $s2 ); is( exception { $c1 = $client->first_msg() }, undef, "client first message" ); is( exception { $s1 = $server->first_msg($c1) }, undef, "server first message" ); is( exception { $c2 = $client->final_msg($s1) }, undef, "client final message" ); is( exception { $s2 = $server->final_msg($c2) }, undef, "server final message" ); is( exception { $client->validate($s2) }, undef, "client validation" ); is( $server->authorization_id, "admi\N{U+110B}n", "server authz" ); }; subtest "generated example with bad user" => sub { my $client = get_client( username => 'janedoe', password => 'password', ); my $server = get_server; my ( $c1, $c2, $s1, $s2 ); is( exception { $c1 = $client->first_msg() }, undef, "client first message" ); like( exception { $s1 = $server->first_msg($c1) }, qr/unknown user 'janedoe'/, "auth fails for unknown user" ); is( $server->authorization_id, '', "server authz empty after error" ); }; subtest "generated example with bad password" => sub { my $client = get_client( username => 'johndoe', password => 'not the right one', ); my $server = get_server; my ( $c1, $c2, $s1, $s2 ); is( exception { $c1 = $client->first_msg() }, undef, "client first message" ); is( exception { $s1 = $server->first_msg($c1) }, undef, "server first message" ); is( exception { $c2 = $client->final_msg($s1) }, undef, "client final message" ); like( exception { $s2 = $server->final_msg($c2) }, qr/authentication for user 'johndoe' failed/, "auth fails for bad password" ); is( $server->authorization_id, '', "server authz empty after error" ); }; subtest "generated example with failed authz" => sub { my $client = get_client( username => 'johndoe', password => 'passPASSpass', authorization_id => 'johnmac' ); my $server = get_server; my ( $c1, $c2, $s1, $s2 ); is( exception { $c1 = $client->first_msg() }, undef, "client first message" ); is( exception { $s1 = $server->first_msg($c1) }, undef, "server first message" ); is( exception { $c2 = $client->final_msg($s1) }, undef, "client final message" ); like( exception { $s2 = $server->final_msg($c2) }, qr/not authorized to act as/, "proxy auth not allowed" ); is( $server->authorization_id, '', "server authz empty after error" ); }; done_testing; # # This file is part of Authen-SCRAM # # This software is Copyright (c) 2014 by David Golden. # # This is free software, licensed under: # # The Apache License, Version 2.0, January 2004 # # vim: ts=4 sts=4 sw=4 et: