diff --git a/t/account-manager.cgi.t b/t/account-manager.cgi.t index 2e2f1a30cdfc2ff6080824490ae3f42242051ad5..adfa4fc33e61e96ee9fbad680c92d5354570435e 100755 --- a/t/account-manager.cgi.t +++ b/t/account-manager.cgi.t @@ -8,10 +8,17 @@ use File::Temp; use IPC::Run qw(run); use Test::More; -plan tests => 2; +plan tests => 4; $ENV{ACCOUNTMANAGER_CONFIG} = 't/manager.conf'; +my $has_database = + $ENV{TEST_DB_TYPE} && + $ENV{TEST_DB_HOST} && + $ENV{TEST_DB_NAME} && + $ENV{TEST_DB_USER} && + $ENV{TEST_DB_PASSWORD}; + subtest start_page => sub { plan tests => 4; @@ -44,7 +51,7 @@ subtest sp_selection_page => sub { plan tests => 4; local $ENV{REQUEST_METHOD} = 'GET'; - local $ENV{QUERY_STRING} = 'action=account_wizard'; + local $ENV{QUERY_STRING} = 'action=select_sp'; my ($out, $err, $rc) = run_executable('account-manager.cgi'); diag($out) if $ENV{TEST_DEBUG}; @@ -55,17 +62,73 @@ subtest sp_selection_page => sub { ); like( $out, - qr{<title>eduGAIN Access Check - Select your Service Provider</title>}, + qr{<title>eduGAIN Access Check</title>}, 'page title' ); like( $out, qr{<select id="entityid" name="entityid" class="required">}, - 'selection list' + 'page content contains SP list' ); is($err, '', 'empty stderr'); }; +subtest email_selection_page_missing_parameter => sub { + + plan tests => 4; + + local $ENV{REQUEST_METHOD} = 'GET'; + local $ENV{QUERY_STRING} = 'action=select_email'; + + my ($out, $err, $rc) = run_executable('account-manager.cgi'); + diag($out) if $ENV{TEST_DEBUG}; + like( + $out, + qr{^Content-Type: text/html\r\n\r\n}, + 'HTTP headers' + ); + like( + $out, + qr{<title>eduGAIN Access Check</title>}, + 'page title' + ); + like( + $out, + qr{Error:[\n\s]+missing parameter 'entityid'}, + 'page content contains expected error message' + ); + my $error = $has_database ? qr{^$} : qr{^DBI connect\(\S+\) failed:}; + like($err, $error, 'expected log message'); +}; + +subtest email_selection_page_wrong_parameter => sub { + + plan tests => 4; + + local $ENV{REQUEST_METHOD} = 'GET'; + local $ENV{QUERY_STRING} = 'action=select_email&entityid=foo'; + + my ($out, $err, $rc) = run_executable('account-manager.cgi'); + diag($out) if $ENV{TEST_DEBUG}; + like( + $out, + qr{^Content-Type: text/html\r\n\r\n}, + 'HTTP headers' + ); + like( + $out, + qr{<title>eduGAIN Access Check</title>}, + 'page title' + ); + like( + $out, + qr{Error:[\n\s]+format_entityid}, + 'page content contains expected error message' + ); + my $error = $has_database ? qr{^$} : qr{^DBI connect\(\S+\) failed:}; + like($err, $error, 'expected log message'); +}; + sub run_executable { my ($executable, $args) = @_;