cockpit: don't try and get admin privs when re-logging in

There's one point in the tests where we may log into cockpit for
the second time in one run (it depends how a package update
process goes). When this happens, we don't get prompted again
for admin access, so we need to *not* expect that.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
This commit is contained in:
Adam Williamson 2022-11-25 11:24:52 -08:00
parent 2c6e1ec76b
commit 9d8a35ed39
6 changed files with 20 additions and 13 deletions

View File

@ -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

View File

@ -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";

View File

@ -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();

View File

@ -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

View File

@ -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;
}

View File

@ -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;