diff --git a/lib/cockpit.pm b/lib/cockpit.pm index af560218..124d14f1 100644 --- a/lib/cockpit.pm +++ b/lib/cockpit.pm @@ -13,8 +13,12 @@ our @EXPORT = qw(start_cockpit select_cockpit_update check_updates); sub start_cockpit { # Starting from a console, get to a browser with Cockpit (running - # on localhost) shown. If $login is truth-y, also log in. Assumes + # on localhost) shown. If login is truth-y, also log in. If login + # and admin are both truthy, also gain admin privileges. Assumes # X and Firefox are installed. + my %args = @_; + $args{login} //= 0; + $args{admin} //= 1; my $login = shift || 0; # https://bugzilla.redhat.com/show_bug.cgi?id=1439429 assert_script_run "sed -i -e 's,enable_xauth=1,enable_xauth=0,g' /usr/bin/startx"; @@ -24,15 +28,17 @@ sub start_cockpit { type_string "startx /usr/bin/firefox -width 1024 -height 768 http://localhost:9090\n"; assert_screen "cockpit_login", 60; wait_still_screen(stilltime => 5, similarity_level => 45); - if ($login) { + if ($args{login}) { type_safely "test"; wait_screen_change { send_key "tab"; }; type_safely get_var("USER_PASSWORD", "weakpassword"); send_key "ret"; - assert_and_click "cockpit_admin_enable"; - assert_screen "cockpit_admin_password"; - type_safely get_var("USER_PASSWORD", "weakpassword"); - send_key "ret"; + if ($args{admin}) { + assert_and_click "cockpit_admin_enable"; + assert_screen "cockpit_admin_password"; + type_safely get_var("USER_PASSWORD", "weakpassword"); + send_key "ret"; + } assert_screen "cockpit_main"; # wait for any animation or other weirdness # can't use wait_still_screen because of that damn graph diff --git a/tests/realmd_join_cockpit.pm b/tests/realmd_join_cockpit.pm index 81b15f04..a49e6829 100644 --- a/tests/realmd_join_cockpit.pm +++ b/tests/realmd_join_cockpit.pm @@ -31,7 +31,7 @@ sub run { # note: we can't use wait_screen_change, wait_still_screen or # check_type_string in cockpit because of that fucking constantly # scrolling graph - start_cockpit(1); + start_cockpit(login => 1); # to activate the right pane assert_and_click "cockpit_main"; send_key "pgdn"; diff --git a/tests/server_cockpit_autoupdate.pm b/tests/server_cockpit_autoupdate.pm index 3a066163..465600e4 100644 --- a/tests/server_cockpit_autoupdate.pm +++ b/tests/server_cockpit_autoupdate.pm @@ -9,7 +9,7 @@ sub run { my $self = shift; # Start Cockpit - start_cockpit(1); + start_cockpit(login => 1); # Navigate to the Update screen select_cockpit_update(); diff --git a/tests/server_cockpit_basic.pm b/tests/server_cockpit_basic.pm index 3773a9f7..f9764954 100644 --- a/tests/server_cockpit_basic.pm +++ b/tests/server_cockpit_basic.pm @@ -7,7 +7,7 @@ use cockpit; sub run { my $self = shift; # run firefox and login to cockpit - start_cockpit(1); + start_cockpit(login => 1); # go to the logs screen assert_and_click "cockpit_logs"; # the date dropdown changes and messes with the button locations, so wait diff --git a/tests/server_cockpit_default.pm b/tests/server_cockpit_default.pm index 1785df14..13d4665b 100644 --- a/tests/server_cockpit_default.pm +++ b/tests/server_cockpit_default.pm @@ -11,7 +11,7 @@ sub run { assert_script_run 'systemctl is-active cockpit.socket'; assert_script_run 'firewall-cmd --query-service cockpit'; # test cockpit web UI start - start_cockpit(0); + start_cockpit(login => 0); # quit firefox (return to console) quit_firefox; } diff --git a/tests/server_cockpit_updates.pm b/tests/server_cockpit_updates.pm index 4613e4ae..d29cf7b4 100644 --- a/tests/server_cockpit_updates.pm +++ b/tests/server_cockpit_updates.pm @@ -16,7 +16,7 @@ sub run { verify_installed_packages; # Start Cockpit - start_cockpit(1); + start_cockpit(login => 1); # Navigate to update screen select_cockpit_update(); @@ -43,12 +43,13 @@ sub run { # When Cockpit packages are also included in the updates # the user is forced to reconnect, i.e. to restart the Web Application # and relog for further interaction. We will check if reconnection is - # needed and if so, we will restart Firefox and login again. + # needed and if so, we will restart Firefox and login again. We do + # *not* need to gain admin privs again, trying to do so will fail. # last if (check_screen("cockpit_updates_updated")); if (check_screen("cockpit_updates_reconnect", 1)) { quit_firefox; - start_cockpit(1); + start_cockpit(login => 1, admin => 0); select_cockpit_update(); last;