# Copyright (c) 2005 bivio Software, Inc. All Rights Reserved. # $Id: password.btest,v 1.18 2011/01/28 20:03:24 nagler Exp $ test_setup('PetShop'); home_page(); # Deviance cases can't use this inline or they'll fail to die on next call my($dp) = default_password(); my($e) = generate_local_email(test_name()); test_deviance(); login_as('', 'bad password'); test_conformance(); verify_no_text('bad password'); test_deviance(); login_as($e, 'bad password'); test_conformance(); verify_no_text('bad password'); if (text_exists('not found')) { follow_menu_link('new_user'); submit_form(submit => { 'Email:' => $e, 'Password:' => $dp, 'First Name:' => 'Password', 'Last Name:' => 'Test', }); do_logout(); # need to clear cookies or the deviance Reset Password will fail clear_cookies(); } follow_link(qw(Sign-in forgot_password)); test_deviance('must supply'); submit_form('Reset Password'); test_conformance(); submit_form('Reset Password' => { 'Email:' => $e, }); verify_text(qr{An email has been sent to.*\Q$e}); # Verify ack gets cleared follow_menu_link('home'); go_back(); my($uri) = extract_uri_from_local_mail($e, 'password'); (my $bad = $uri) =~ s/(?<=\=)\S//; visit_uri($bad); verify_text('no longer valid'); visit_uri($uri); my($p) = random_string(); verify_no_text('Current Password'); submit_form('Cancel'); verify_text('Birds'); visit_uri($uri); verify_text(qr{type="password".*type="password"}s); submit_form(Change => { 'New Password:' => $p, 'Re-enter New Password:' => $p, }); follow_link(qw(myaccount password)); test_deviance('must supply a value'); submit_form(Change => { 'Current Password:' => '', 'New Password:' => $dp, 'Re-enter New Password:' => $dp, }); test_deviance('does not match'); submit_form(Change => { 'Current Password:' => 'wrong password', 'New Password:' => $dp, 'Re-enter New Password:' => $dp, }); test_deviance('password and confirm password'); submit_form(Change => { 'Current Password:' => $p, 'New Password:' => "x$dp", 'Re-enter New Password:' => $dp, }); test_conformance(); submit_form(Change => { 'Current Password:' => $p, 'New Password:' => $dp, 'Re-enter New Password:' => $dp, }); do_logout(); follow_link(qw(Sign-in forgot_password)); verify_form({ 'Email:' => $e, }); test_deviance('You are not allowed'); submit_form('Reset Password' => { 'Email:' => ShellUtil_SQL()->ROOT_EMAIL, }); test_conformance(); login_as('root'); visit_uri('/adm/su'); submit_form({ email => $e, }); follow_menu_link(qw(groupware wiki)); verify_text('Acting as User'); do_test_backdoor(RealmAdmin => "-force -u $e -r $e reset_password x$dp"); go_back(); follow_menu_link('wiki'); verify_no_text('Acting as User'); do_test_backdoor(RealmAdmin => "-force -u $e -r $e reset_password $dp");