102 lines
3.4 KiB
Python
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")
|