Merge pull request #202 from tcooper/cockpit-admin-login

Support admin user login in cockpit
This commit is contained in:
Alan Marshall 2023-12-09 14:42:23 +00:00 committed by GitHub
commit cae7a72eba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 86 additions and 11 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";
@ -25,11 +29,17 @@ sub start_cockpit {
# this happened on early Modular Server composes...
record_soft_failure "Unbranded Cockpit" if (match_has_tag "cockpit_login_unbranded");
wait_still_screen(stilltime => 5, similarity_level => 45);
if ($login) {
type_safely "root";
if ($args{login}) {
type_safely "test";
wait_screen_change { send_key "tab"; };
type_safely get_var("ROOT_PASSWORD", "weakpassword");
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

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 294,
"ypos": 242,
"width": 102,
"height": 16,
"type": "match"
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"cockpit_admin_enable"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"ypos": 242,
"width": 102,
"type": "match",
"xpos": 294,
"height": 16
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"cockpit_admin_enable"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 255,
"ypos": 394,
"width": 122,
"height": 18,
"type": "match"
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"cockpit_admin_password"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -0,0 +1,16 @@
{
"area": [
{
"xpos": 257,
"height": 40,
"ypos": 517,
"type": "match",
"width": 230
}
],
"properties": [],
"tags": [
"ENV-DISTRI-rocky",
"cockpit_main"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

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);
# we may have to scroll down before the button is visible
if (check_screen "cockpit_join_domain_button", 5) {
click_lastmatch;

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

@ -13,7 +13,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;
# we don't get back to a prompt instantly and keystrokes while X

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();
@ -74,13 +74,14 @@ 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;
sleep 5;
start_cockpit(1);
start_cockpit(login => 1, admin => 0);
select_cockpit_update();
last;