Create tests for remote desktop connections.
@ -6,8 +6,12 @@ use base 'Exporter';
|
|||||||
use Exporter;
|
use Exporter;
|
||||||
|
|
||||||
use testapi;
|
use testapi;
|
||||||
|
use utils;
|
||||||
|
|
||||||
our @EXPORT = qw/clone_host_file setup_tap_static get_host_dns/;
|
our @EXPORT = qw/clone_host_file setup_tap_static get_host_dns/;
|
||||||
|
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
sub clone_host_file {
|
sub clone_host_file {
|
||||||
# copy a given file from the host into the guest. Mainly used
|
# copy a given file from the host into the guest. Mainly used
|
||||||
# for networking config on tap tests. this is pretty crazy, but
|
# for networking config on tap tests. this is pretty crazy, but
|
||||||
@ -29,6 +33,17 @@ sub setup_tap_static {
|
|||||||
# this is a common thing for tap tests, where we set up networking
|
# this is a common thing for tap tests, where we set up networking
|
||||||
# for the system with a static IP address and possibly a specific
|
# for the system with a static IP address and possibly a specific
|
||||||
# hostname
|
# hostname
|
||||||
|
|
||||||
|
# It is possible on certain tests that this will be running while
|
||||||
|
# we are inside a graphical session. In this case we need to switch
|
||||||
|
# to the console before we proceed with the network settings.
|
||||||
|
my $console = 0;
|
||||||
|
unless (check_screen("root_console")) {
|
||||||
|
$console = 1;
|
||||||
|
send_key("ctrl-alt-f3");
|
||||||
|
wait_still_screen(5);
|
||||||
|
console_login(user => "root");
|
||||||
|
}
|
||||||
my $ip = shift;
|
my $ip = shift;
|
||||||
my $hostname = shift || "";
|
my $hostname = shift || "";
|
||||||
if ($hostname) {
|
if ($hostname) {
|
||||||
@ -53,6 +68,11 @@ sub setup_tap_static {
|
|||||||
assert_script_run "nmcli con up '$connection'";
|
assert_script_run "nmcli con up '$connection'";
|
||||||
# for debugging
|
# for debugging
|
||||||
assert_script_run "nmcli -t con show '$connection'";
|
assert_script_run "nmcli -t con show '$connection'";
|
||||||
|
# If we have switched to console from a graphical
|
||||||
|
# environment, here we come back to it.
|
||||||
|
if ($console) {
|
||||||
|
desktop_vt();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_host_dns {
|
sub get_host_dns {
|
||||||
|
15
needles/gnome/apps/settings/settings_remote_desktop.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"properties": [],
|
||||||
|
"tags": [
|
||||||
|
"settings_remote_desktop"
|
||||||
|
],
|
||||||
|
"area": [
|
||||||
|
{
|
||||||
|
"xpos": 395,
|
||||||
|
"ypos": 303,
|
||||||
|
"width": 113,
|
||||||
|
"height": 21,
|
||||||
|
"type": "match"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
needles/gnome/apps/settings/settings_remote_desktop.png
Normal file
After Width: | Height: | Size: 182 KiB |
15
needles/gnome/apps/settings/settings_remote_login.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"properties": [],
|
||||||
|
"tags": [
|
||||||
|
"settings_remote_login"
|
||||||
|
],
|
||||||
|
"area": [
|
||||||
|
{
|
||||||
|
"xpos": 654,
|
||||||
|
"ypos": 71,
|
||||||
|
"width": 121,
|
||||||
|
"height": 23,
|
||||||
|
"type": "match"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
needles/gnome/apps/settings/settings_remote_login.png
Normal file
After Width: | Height: | Size: 194 KiB |
15
needles/gnome/apps/settings/settings_remote_password.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"properties": [],
|
||||||
|
"tags": [
|
||||||
|
"settings_remote_password"
|
||||||
|
],
|
||||||
|
"area": [
|
||||||
|
{
|
||||||
|
"xpos": 366,
|
||||||
|
"ypos": 590,
|
||||||
|
"width": 69,
|
||||||
|
"height": 20,
|
||||||
|
"type": "match"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
needles/gnome/apps/settings/settings_remote_password.png
Normal file
After Width: | Height: | Size: 194 KiB |
15
needles/gnome/apps/settings/settings_remote_username.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"properties": [],
|
||||||
|
"tags": [
|
||||||
|
"settings_remote_username"
|
||||||
|
],
|
||||||
|
"area": [
|
||||||
|
{
|
||||||
|
"xpos": 366,
|
||||||
|
"ypos": 535,
|
||||||
|
"width": 72,
|
||||||
|
"height": 20,
|
||||||
|
"type": "match"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
needles/gnome/apps/settings/settings_remote_username.png
Normal file
After Width: | Height: | Size: 194 KiB |
15
needles/gnome/apps/settings/settings_switch_remote.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"properties": [],
|
||||||
|
"tags": [
|
||||||
|
"settings_switch_remote"
|
||||||
|
],
|
||||||
|
"area": [
|
||||||
|
{
|
||||||
|
"xpos": 366,
|
||||||
|
"ypos": 208,
|
||||||
|
"width": 165,
|
||||||
|
"height": 22,
|
||||||
|
"type": "match"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
needles/gnome/apps/settings/settings_switch_remote.png
Normal file
After Width: | Height: | Size: 192 KiB |
15
needles/gnome/apps/settings/settings_system.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"properties": [],
|
||||||
|
"tags": [
|
||||||
|
"settings_system"
|
||||||
|
],
|
||||||
|
"area": [
|
||||||
|
{
|
||||||
|
"xpos": 67,
|
||||||
|
"ypos": 164,
|
||||||
|
"width": 55,
|
||||||
|
"height": 20,
|
||||||
|
"type": "match"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
needles/gnome/apps/settings/settings_system.png
Normal file
After Width: | Height: | Size: 164 KiB |
15
needles/gnome/gnome_button_unlock.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"properties": [],
|
||||||
|
"tags": [
|
||||||
|
"gnome_button_unlock"
|
||||||
|
],
|
||||||
|
"area": [
|
||||||
|
{
|
||||||
|
"xpos": 914,
|
||||||
|
"ypos": 119,
|
||||||
|
"width": 67,
|
||||||
|
"height": 19,
|
||||||
|
"type": "match"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
needles/gnome/gnome_button_unlock.png
Normal file
After Width: | Height: | Size: 192 KiB |
15
needles/gnome/gnome_reveil_password.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"properties": [],
|
||||||
|
"tags": [
|
||||||
|
"gnome_reveil_password"
|
||||||
|
],
|
||||||
|
"area": [
|
||||||
|
{
|
||||||
|
"xpos": 833,
|
||||||
|
"ypos": 591,
|
||||||
|
"width": 20,
|
||||||
|
"height": 20,
|
||||||
|
"type": "match"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
needles/gnome/gnome_reveil_password.png
Normal file
After Width: | Height: | Size: 194 KiB |
@ -2515,6 +2515,53 @@
|
|||||||
"USER_LOGIN": "false"
|
"USER_LOGIN": "false"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"remote_desktop_server": {
|
||||||
|
"profiles": {
|
||||||
|
"fedora-Workstation-live-iso-x86_64-*-64bit": 35
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"BOOTFROM": "c",
|
||||||
|
"HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2",
|
||||||
|
"NICTYPE": "tap",
|
||||||
|
"POSTINSTALL": "remote_desktop_server",
|
||||||
|
"POST_STATIC": "172.16.2.177 kaermorhen.test.openqa.fedoraproject.org",
|
||||||
|
"ROOT_PASSWORD": "weakpassword",
|
||||||
|
"START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%",
|
||||||
|
"WORKER_CLASS": "tap"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"remote_desktop_client": {
|
||||||
|
"profiles": {
|
||||||
|
"fedora-Workstation-live-iso-x86_64-*-64bit": 40
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"BOOTFROM": "c",
|
||||||
|
"HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2",
|
||||||
|
"NICTYPE": "tap",
|
||||||
|
"POSTINSTALL": "remote_desktop_client",
|
||||||
|
"PARALLEL_WITH": "remote_desktop_server",
|
||||||
|
"POST_STATIC": "172.16.2.179 visimir.test.openqa.fedoraproject.org",
|
||||||
|
"ROOT_PASSWORD": "weakpassword",
|
||||||
|
"START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%",
|
||||||
|
"WORKER_CLASS": "tap"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"remote_desktop_freerdp": {
|
||||||
|
"profiles": {
|
||||||
|
"fedora-Workstation-live-iso-x86_64-*-64bit": 40
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"BOOTFROM": "c",
|
||||||
|
"HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2",
|
||||||
|
"NICTYPE": "tap",
|
||||||
|
"POSTINSTALL": "remote_desktop_freerdp",
|
||||||
|
"PARALLEL_WITH": "remote_desktop_server",
|
||||||
|
"POST_STATIC": "172.16.2.178 witcher.test.openqa.fedoraproject.org",
|
||||||
|
"ROOT_PASSWORD": "weakpassword",
|
||||||
|
"START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%",
|
||||||
|
"WORKER_CLASS": "tap"
|
||||||
|
}
|
||||||
|
},
|
||||||
"rpmostree_overlay": {
|
"rpmostree_overlay": {
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"fedora-CoreOS-colive-iso-x86_64-*-64bit": 20,
|
"fedora-CoreOS-colive-iso-x86_64-*-64bit": 20,
|
||||||
|
57
tests/remote_desktop_client.pm
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
use base "installedtest";
|
||||||
|
use strict;
|
||||||
|
use testapi;
|
||||||
|
use utils;
|
||||||
|
|
||||||
|
# This test uses a Connections application to establish an
|
||||||
|
# RDP connection to a remote computer running Gnome Workstation.
|
||||||
|
|
||||||
|
sub run {
|
||||||
|
my $self = shift;
|
||||||
|
my $password = get_var("USER_PASSWORD", "weakpassword");
|
||||||
|
my $rdpuser = "geralt";
|
||||||
|
my $rdppass = "ciriofcintra";
|
||||||
|
my $ip = "172.16.2.177";
|
||||||
|
|
||||||
|
# Wait until the RDP server is ready
|
||||||
|
# and lock parallel connection.
|
||||||
|
mutex_lock("kaermorhen_opened");
|
||||||
|
|
||||||
|
# Open the Connections and start the connection.
|
||||||
|
menu_launch_type("connections");
|
||||||
|
wait_still_screen(3);
|
||||||
|
assert_screen("connections_runs");
|
||||||
|
assert_and_click("connections_add_connection");
|
||||||
|
type_very_safely($ip);
|
||||||
|
assert_and_click("gnome_button_connect");
|
||||||
|
|
||||||
|
# Log onto the system.
|
||||||
|
assert_screen("connection_authorization");
|
||||||
|
assert_and_click("connection_namefield");
|
||||||
|
type_very_safely($user);
|
||||||
|
send_key("tab");
|
||||||
|
send_key("tab");
|
||||||
|
type_very_safely($password);
|
||||||
|
assert_and_click("connection_authenticate");
|
||||||
|
wait_still_screen(3);
|
||||||
|
send_key("ret");
|
||||||
|
type_very_safely("$syspw\n");
|
||||||
|
wait_still_screen(2);
|
||||||
|
|
||||||
|
# Start the terminal
|
||||||
|
type_very_safely("terminal\n");
|
||||||
|
wait_still_screen(3);
|
||||||
|
|
||||||
|
# Check that we are on the correct computer.
|
||||||
|
# We can tell from the terminal prompt.
|
||||||
|
assert_screen("freerdp_desktop_connected");
|
||||||
|
|
||||||
|
# Unlock the parallel connection
|
||||||
|
mutex_unlock("karemorhen_opened");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub test_flags {
|
||||||
|
return {fatal => 1, milestone => 1};
|
||||||
|
}
|
||||||
|
1;
|
||||||
|
# vim: set sw=4 et:
|
59
tests/remote_desktop_freerdp.pm
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
use base "installedtest";
|
||||||
|
use strict;
|
||||||
|
use testapi;
|
||||||
|
use utils;
|
||||||
|
use lockapi;
|
||||||
|
use mmapi;
|
||||||
|
|
||||||
|
# This test uses a freerdp connection to a remote computer
|
||||||
|
# running Gnome Workstation.
|
||||||
|
|
||||||
|
sub run {
|
||||||
|
my $self = shift;
|
||||||
|
my $rdpuser = "geralt";
|
||||||
|
my $rdppass = "ciriofcintra";
|
||||||
|
my $ip = "172.16.2.177";
|
||||||
|
my $password = get_var("USER_PASSWORD", "weakpassword");
|
||||||
|
|
||||||
|
# Switch to console and install the necessary packages.
|
||||||
|
$self->root_console(tty => 3);
|
||||||
|
assert_script_run("dnf install -y freerdp", timeout => 60);
|
||||||
|
|
||||||
|
# Return to the desktop
|
||||||
|
desktop_vt();
|
||||||
|
|
||||||
|
# Wait until the RDP server is ready and lock parallel connection.
|
||||||
|
mutex_lock("kaermorhen_opened");
|
||||||
|
|
||||||
|
# Open terminal and make a connection to the remote server.
|
||||||
|
menu_launch_type("terminal");
|
||||||
|
wait_still_screen(3);
|
||||||
|
enter_cmd("xfreerdp /u:$rdpuser /p:$rdppass /v:$ip");
|
||||||
|
|
||||||
|
# Check that a connection window has appeared.
|
||||||
|
assert_screen("connection_window");
|
||||||
|
|
||||||
|
# Log onto the system.
|
||||||
|
assert_and_check("connection_login_screen");
|
||||||
|
send_key("ret");
|
||||||
|
sleep(2);
|
||||||
|
type_very_safely("$password\n");
|
||||||
|
wait_still_screen(2);
|
||||||
|
|
||||||
|
# Start the terminal
|
||||||
|
type_very_safely("terminal\n");
|
||||||
|
wait_still_screen(3);
|
||||||
|
|
||||||
|
# Check that we are on the correct computer.
|
||||||
|
# We can tell from the terminal prompt.
|
||||||
|
assert_screen("freerdp_desktop_connected");
|
||||||
|
|
||||||
|
# Unlock parallel connection.
|
||||||
|
mutex_unlock("kaermorhen_opened");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub test_flags {
|
||||||
|
return {fatal => 1, milestone => 1};
|
||||||
|
}
|
||||||
|
1;
|
||||||
|
# vim: set sw=4 et:
|
79
tests/remote_desktop_server.pm
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
use base "installedtest";
|
||||||
|
use strict;
|
||||||
|
use testapi;
|
||||||
|
use utils;
|
||||||
|
use lockapi;
|
||||||
|
use mmapi;
|
||||||
|
|
||||||
|
sub run {
|
||||||
|
my $self = shift;
|
||||||
|
my $user = get_var("USER_LOGIN", "test");
|
||||||
|
my $password = get_var("USER_PASSWORD", "weakpassword");
|
||||||
|
my $rdpuser = "geralt";
|
||||||
|
my $rdppass = "ciriofcintra";
|
||||||
|
|
||||||
|
$self->root_console(tty => 3);
|
||||||
|
# Make necessary settings for the RDP server.
|
||||||
|
# Set SElinux to permissive to workaround a Fedora issue
|
||||||
|
assert_script_run("setenforce 0");
|
||||||
|
# Check that SElinux is in permissive mode
|
||||||
|
validate_script_output("getenforce", sub { m/Permissive/ });
|
||||||
|
|
||||||
|
# In Workstation, the RDP port should be opened per se,
|
||||||
|
# but let's open it explicitely, to make sure it is open.
|
||||||
|
assert_script_run("firewall-cmd --add-port=3389/tcp");
|
||||||
|
|
||||||
|
# Change to Desktop
|
||||||
|
desktop_vt();
|
||||||
|
|
||||||
|
# Open Settings and navigate to Remote Login
|
||||||
|
menu_launch_type("Settings");
|
||||||
|
send_key("ctrl-f");
|
||||||
|
sleep(2);
|
||||||
|
type_very_safely("system");
|
||||||
|
assert_and_click("settings_system");
|
||||||
|
assert_and_click("settings_remote_desktop");
|
||||||
|
assert_and_click("settings_remote_login");
|
||||||
|
assert_and_click("gnome_button_unlock");
|
||||||
|
if (check_screen("auth_required_password", timeout => 60)) {
|
||||||
|
type_very_safely("$password\n");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
die("Authentication dialogue is not visible but was expected.");
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set up remote login in Gnome Settings.
|
||||||
|
assert_and_click("settings_switch_remote");
|
||||||
|
wait_still_screen(3);
|
||||||
|
assert_and_click("settings_remote_username");
|
||||||
|
type_very_safely($rdpuser);
|
||||||
|
assert_and_click("settings_remote_password");
|
||||||
|
type_very_safely($rdppass);
|
||||||
|
assert_and_click("gnome_reveil_password");
|
||||||
|
wait_still_screen(3);
|
||||||
|
send_key("alt-f4");
|
||||||
|
|
||||||
|
# RDP does not allow connections when the user is still logged in
|
||||||
|
# locally, therefore we need to log the user out first.
|
||||||
|
assert_and_click("system_menu_button");
|
||||||
|
assert_and_click("leave_button");
|
||||||
|
assert_and_click("log_out_entry");
|
||||||
|
assert_and_click("log_out_confirm");
|
||||||
|
sleep(10);
|
||||||
|
|
||||||
|
|
||||||
|
# Check that the service is running.
|
||||||
|
$self->root_console(tty => 3);
|
||||||
|
assert_script_run("ps aux | grep rdp", timeout => 10);
|
||||||
|
|
||||||
|
# Create mutex to synchronise with the children.
|
||||||
|
mutex_create("kaermorhen_opened");
|
||||||
|
wait_for_children();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub test_flags {
|
||||||
|
return {fatal => 1};
|
||||||
|
}
|
||||||
|
1;
|
||||||
|
# vim: set sw=4 et:
|