virt-manager/tests/uitests/test_connection.py

102 lines
3.4 KiB
Python

# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
from . import lib
###################################################
# UI tests for various connection.py related bits #
###################################################
def testConnectionBlacklist(app):
app.open(
extra_opts=["--test-options=object-denylist=test-many-devices"])
manager = app.topwin
def _delete_vm(vmname):
app.manager_vm_action(vmname, delete=True)
delete = app.find_window("Delete")
delete.find("Delete associated", "check box").click()
delete.find("Delete", "push button").click()
lib.utils.check(lambda: manager.active)
lib.utils.check(
lambda: "test-many-devices" not in app.topwin.fmt_nodes())
_delete_vm("test-arm-kernel")
_delete_vm("test-clone-full")
_delete_vm("test-clone-simple")
app.sleep(.5) # Give events time to register to hit full denylist path
lib.utils.check(
lambda: "test-many-devices" not in app.topwin.fmt_nodes())
def testConnectionConnCrash(app):
app.open(
extra_opts=["--test-options=conn-crash",
"--test-options=short-poll"])
manager = app.topwin
manager.find(r"^test testdriver.xml - Not Connected", "table cell")
lib.utils.check(lambda: manager.active)
def testConnectionFakeEvents(app):
app.open(
extra_opts=["--test-options=fake-nodedev-event=computer",
"--test-options=fake-agent-event=test-many-devices",
"--test-options=short-poll"])
manager = app.topwin
app.sleep(1.2) # needs a second to hit both nodedev/agent event paths
lib.utils.check(lambda: manager.active)
def testConnectionOpenauth(app):
app.open(
extra_opts=["--test-options=fake-openauth"],
window_name="Authentication required")
dialog = app.root.find("Authentication required")
def _run():
username = dialog.find("Username:.*entry")
password = dialog.find("Password:.*entry")
username.click()
username.text = "foo"
app.rawinput.pressKey("Enter")
lib.utils.check(lambda: password.focused)
password.typeText("bar")
_run()
dialog.find("OK", "push button").click()
lib.utils.check(lambda: not dialog.showing)
manager = app.find_window("Virtual Machine Manager")
manager.find("^test testdriver.xml$", "table cell")
# Disconnect and reconnect to trigger it again
def _retrigger_connection():
manager.click()
app.manager_conn_disconnect("test testdriver.xml")
manager.click()
app.manager_conn_connect("test testdriver.xml")
_retrigger_connection()
dialog = app.root.find("Authentication required")
_run()
app.rawinput.pressKey("Enter")
lib.utils.check(lambda: not dialog.showing)
manager = app.find_window("Virtual Machine Manager")
manager.find("^test testdriver.xml$", "table cell")
_retrigger_connection()
dialog = app.root.find("Authentication required")
dialog.find("Cancel", "push button").click()
lib.utils.check(lambda: not dialog.showing)
app.click_alert_button("Unable to connect", "Close")
manager.find("test testdriver.xml - Not Connected", "table cell")
def testConnectionSessionError(app):
app.open(
extra_opts=["--test-options=fake-session-error"])
app.click_alert_button("Could not detect a local session", "Close")