pytest-based tests individual timeout for message check
Until now we have used implicit timeout for message checking. It is enough for the majority of the cases. But in cases of overloaded deployment and more consuming actions (like manage volume attachments) this timeout is enough for all the actions except for messages so individual message timeout (adjustable through horizon.conf) seems to be the best solution. Change-Id: I6e43cdfa9fc02c1346b5a8228caacaf154e20ba3 Signed-off-by: Jan Jasek <jjasek@redhat.com>
This commit is contained in:
@@ -108,9 +108,9 @@ AvailableServiceGroup = [
|
||||
]
|
||||
|
||||
SeleniumGroup = [
|
||||
cfg.FloatOpt(
|
||||
'message_implicit_wait',
|
||||
default=0.1,
|
||||
cfg.IntOpt(
|
||||
'message_wait',
|
||||
default=60,
|
||||
help='Timeout in seconds to wait for message confirmation modal'),
|
||||
cfg.IntOpt(
|
||||
'implicit_wait',
|
||||
|
@@ -14,8 +14,8 @@ help_url=https://docs.openstack.org/
|
||||
|
||||
[selenium]
|
||||
# Timeout in seconds to wait for message confirmation modal
|
||||
# (float value)
|
||||
message_implicit_wait=3
|
||||
# (integer value)
|
||||
message_wait=60
|
||||
|
||||
# Timeout in seconds to wait for a page to become available
|
||||
# (integer value)
|
||||
|
@@ -34,6 +34,7 @@ class Session:
|
||||
self.current_user = None
|
||||
self.current_project = None
|
||||
self.driver = driver
|
||||
self.config = config
|
||||
self.credentials = {
|
||||
'user': (
|
||||
config.identity.username,
|
||||
@@ -82,7 +83,7 @@ class Session:
|
||||
selection = project_element.find_element_by_xpath(
|
||||
f'.//*[normalize-space()="{project}"]')
|
||||
selection.click()
|
||||
widgets.get_and_dismiss_messages(self.driver)
|
||||
widgets.get_and_dismiss_messages(self.driver, self.config)
|
||||
self.current_project = self.driver.find_element_by_xpath(
|
||||
self.project_name_xpath).text
|
||||
|
||||
|
@@ -64,7 +64,7 @@ def test_update_compute_defaults(login, driver, openstack_admin, config,
|
||||
defaults_form.find_element_by_id("id_cores").clear()
|
||||
defaults_form.find_element_by_id("id_cores").send_keys(number_of_cores)
|
||||
defaults_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert 'Success: Default quotas updated.' in messages
|
||||
new_quotas = openstack_admin.compute.get(
|
||||
"/os-quota-class-sets/default").json()
|
||||
@@ -93,7 +93,7 @@ def test_update_volume_defaults(login, driver, openstack_admin, config,
|
||||
defaults_form.find_element_by_id("id_snapshots").send_keys(
|
||||
number_of_snapshots)
|
||||
defaults_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert 'Success: Default quotas updated.' in messages
|
||||
new_quotas = openstack_admin.block_storage.get(
|
||||
"/os-quota-class-sets/default").json()
|
||||
|
@@ -60,7 +60,7 @@ def test_create_flavor(login, driver, flavor_name, openstack_admin,
|
||||
flavors_form.find_element_by_id("id_disk_gb").send_keys(flavor_disk)
|
||||
flavors_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Flavor']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: Created new flavor "{flavor_name}".' in messages
|
||||
flavor_sdk = openstack_admin.compute.find_flavor(flavor_name)
|
||||
assert flavor_sdk is not None
|
||||
@@ -84,6 +84,6 @@ def test_delete_flavor(login, driver, flavor_name, new_flavor, config,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Flavor")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Flavor: {flavor_name}" in messages
|
||||
assert openstack_admin.compute.find_flavor(flavor_name) is None
|
||||
|
@@ -70,7 +70,7 @@ def test_allocate_floatingip(login, driver, config, openstack_demo,
|
||||
floatingip_form.find_element_by_id("id_description").send_keys(
|
||||
floatingip_description)
|
||||
floatingip_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
if len(messages) > 1:
|
||||
message = [msg for msg in messages if
|
||||
"Success: Allocated Floating IP" in msg][0]
|
||||
@@ -99,7 +99,7 @@ def test_release_floatingip(login, driver, openstack_demo, config,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Release Floating IP")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Released Floating IP: "
|
||||
f"{new_floating_ip.floating_ip_address}" in messages)
|
||||
assert openstack_demo.network.find_ip(
|
||||
@@ -128,7 +128,7 @@ def test_associate_floatingip(login, driver, openstack_demo, new_floating_ip,
|
||||
associateip_form, "id_port_id",
|
||||
f"{instance_name}: {new_instance_demo.private_v4}")
|
||||
associateip_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: IP address {new_floating_ip.floating_ip_address}"
|
||||
f" associated." in messages)
|
||||
assert (new_instance_demo.id == openstack_demo.network.find_ip(
|
||||
@@ -156,7 +156,7 @@ def test_disassociate_floatingip(login, driver, openstack_demo, config,
|
||||
assert len(rows) == 1
|
||||
rows[0].find_element_by_css_selector(".data-table-action").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Successfully disassociated Floating IP: "
|
||||
f"{instance_auto_ip}" in messages)
|
||||
instance_sdk = openstack_demo.compute.find_server(new_instance_demo.id)
|
||||
|
@@ -51,7 +51,7 @@ def test_create_group(login, driver, group_name, openstack_admin, config,
|
||||
group_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||
group_form.find_element_by_id("id_name").send_keys(group_name)
|
||||
group_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Group "{group_name}" was successfully created.'
|
||||
in messages)
|
||||
assert openstack_admin.identity.find_group(group_name) is not None
|
||||
@@ -72,7 +72,7 @@ def test_delete_group(login, driver, group_name, openstack_admin, config,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Group")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Group: {group_name}" in messages
|
||||
assert openstack_admin.identity.find_group(group_name) is None
|
||||
|
||||
@@ -98,7 +98,7 @@ def test_edit_group_name_and_description(login, driver, group_name,
|
||||
group_form.find_element_by_id("id_description").send_keys(
|
||||
f"EDITED_Description for: {group_name}")
|
||||
group_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert "Success: Group has been updated successfully." in messages
|
||||
assert (openstack_admin.identity.find_group(
|
||||
f"EDITED_{group_name}") is not None)
|
||||
|
@@ -51,7 +51,7 @@ def test_create_grouptype(login, driver, grouptype_name, openstack_admin,
|
||||
grouptype_form = driver.find_element_by_css_selector(".modal-content form")
|
||||
grouptype_form.find_element_by_id("id_name").send_keys(grouptype_name)
|
||||
grouptype_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Successfully created group type: {grouptype_name}'
|
||||
in messages)
|
||||
assert (openstack_admin.block_storage.find_group_type(grouptype_name)
|
||||
@@ -73,6 +73,6 @@ def test_delete_grouptype(login, driver, grouptype_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Group Type")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Group Type: {grouptype_name}" in messages
|
||||
assert openstack_admin.block_storage.find_group_type(grouptype_name) is None
|
||||
|
@@ -65,7 +65,7 @@ def test_create_host_aggregate(login, driver, openstack_admin, config,
|
||||
host_aggregate_name)
|
||||
host_aggregate_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Host Aggregate']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Created new host aggregate "{host_aggregate_name}".'
|
||||
in messages)
|
||||
is_host_aggregate_created_sdk = False
|
||||
@@ -93,7 +93,7 @@ def test_delete_host_aggregate(login, driver, openstack_admin, config,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Host Aggregate")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Deleted Host Aggregate: "
|
||||
f"{new_host_aggregate['aggregate']['name']}" in messages)
|
||||
is_host_aggregate_deleted_sdk = True
|
||||
|
@@ -163,7 +163,7 @@ def test_image_create_from_local_file_demo(login, driver, image_names,
|
||||
wizard.find_element_by_css_selector(
|
||||
"[label='QCOW2 - QEMU Emulator']").click()
|
||||
wizard.find_element_by_css_selector("button.btn-primary.finish").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Image {image_name} was successfully"
|
||||
f" created." in messages)
|
||||
assert openstack_demo.compute.find_image(image_name) is not None
|
||||
@@ -185,7 +185,7 @@ def test_image_delete_demo(login, driver, image_names, openstack_demo,
|
||||
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Image")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Image: {image_name}." in messages
|
||||
assert openstack_demo.compute.find_image(image_name) is None
|
||||
|
||||
@@ -262,7 +262,7 @@ def test_image_create_from_local_file_admin(login, driver, image_names,
|
||||
wizard.find_element_by_css_selector(
|
||||
"[label='QCOW2 - QEMU Emulator']").click()
|
||||
wizard.find_element_by_css_selector("button.btn-primary.finish").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Image {image_name} was successfully"
|
||||
f" created." in messages)
|
||||
assert openstack_admin.compute.find_image(image_name) is not None
|
||||
@@ -284,7 +284,7 @@ def test_image_delete_admin(login, driver, image_names, openstack_admin,
|
||||
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Image")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Image: {image_name}." in messages
|
||||
assert openstack_admin.compute.find_image(image_name) is None
|
||||
|
||||
@@ -393,7 +393,7 @@ def test_remove_protected_image_admin(login, driver, image_names,
|
||||
image_form.find_element_by_xpath(".//label[text()='No']").click()
|
||||
image_form.find_element_by_xpath(
|
||||
".//button[@class='btn btn-primary finish']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Image {image_name} was successfully updated." in messages
|
||||
wait_for_steady_state_of_unprotected_image(openstack_admin, image_name)
|
||||
WebDriverWait(driver, config.selenium.page_timeout).until(
|
||||
@@ -405,7 +405,7 @@ def test_remove_protected_image_admin(login, driver, image_names,
|
||||
".//ancestor::tr/td[contains(@class,'actions_column')]")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Image")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Image: {image_name}." in messages
|
||||
assert openstack_admin.compute.find_image(image_name) is None
|
||||
|
||||
@@ -436,7 +436,7 @@ def test_edit_image_description_admin(login, driver, image_names,
|
||||
desc_field.send_keys(new_description)
|
||||
image_form.find_element_by_xpath(
|
||||
".//button[@class='btn btn-primary finish']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Image {image_name} " \
|
||||
f"was successfully updated." in messages
|
||||
image_id = new_image_admin.id
|
||||
@@ -474,7 +474,7 @@ def test_update_image_metadata_admin(login, driver,
|
||||
f"//span[@title='{name}']/parent::div/input").send_keys(value) # noqa: E231,E501
|
||||
image_form.find_element_by_xpath(
|
||||
"//button[@ng-click='modal.save()']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert "Success: Metadata was successfully updated." in messages
|
||||
image_id = new_image_admin.id
|
||||
for name, value in new_metadata.items():
|
||||
@@ -521,7 +521,7 @@ def test_launch_instance_from_image_admin(complete_default_test_network, login,
|
||||
test_instances.delete_volume_on_instance_delete(source_table, "Yes")
|
||||
wizard.find_element_by_css_selector(
|
||||
"button.btn-primary.finish").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert "Info: Scheduled creation of 1 instance." in messages
|
||||
assert openstack_admin.compute.find_server(instance_name) is not None
|
||||
|
||||
@@ -550,6 +550,6 @@ def test_create_volume_from_image_admin(login, driver, volume_name,
|
||||
EC.element_to_be_clickable(
|
||||
(By.XPATH, "//button[@class='btn btn-primary finish']")))
|
||||
create_vol_btn.click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Info: Creating volume {volume_name}" in messages
|
||||
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
||||
|
@@ -246,7 +246,7 @@ def test_delete_instance_demo(login, driver, instance_name, openstack_demo,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Instance")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Info: Scheduled deletion of Instance: {instance_name}" in messages
|
||||
wait_for_instance_is_deleted(openstack_demo, instance_name)
|
||||
assert openstack_demo.compute.find_server(instance_name) is None
|
||||
@@ -496,7 +496,7 @@ def test_delete_instance_admin(login, driver, instance_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Instance")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Info: Scheduled deletion of Instance: {instance_name}" in messages
|
||||
wait_for_instance_is_deleted(openstack_admin, instance_name)
|
||||
assert openstack_admin.compute.find_server(instance_name) is None
|
||||
|
@@ -57,7 +57,7 @@ def test_create_keypair_demo(login, driver, openstack_demo, clear_keypair_demo,
|
||||
type_options.click()
|
||||
type_options.find_element_by_css_selector('option[label="SSH Key"]').click()
|
||||
keypair_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Key pair {keypair_name} was successfully created.'
|
||||
in messages)
|
||||
assert openstack_demo.compute.find_keypair(keypair_name) is not None
|
||||
@@ -78,6 +78,6 @@ def test_delete_keypair_demo(login, driver, openstack_demo, config,
|
||||
rows[0].find_element_by_xpath(
|
||||
".//ancestor::tr/td[contains(@class,'actions_column')]").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Key Pair: {new_keypair_demo.name}." in messages
|
||||
assert openstack_demo.compute.find_keypair(new_keypair_demo.name) is None
|
||||
|
@@ -77,7 +77,7 @@ def test_create_metadata_namespace(login, driver, metadata_namespace_name,
|
||||
widgets.select_from_dropdown(namespace_form, "Direct Input")
|
||||
namespace_form.find_element_by_id("id_direct_input").send_keys(namespace)
|
||||
namespace_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Namespace {metadata_namespace_name} "
|
||||
f"has been created." in messages)
|
||||
try:
|
||||
@@ -104,7 +104,7 @@ def test_delete_metadata_namespace(login, driver, new_metadata_namespace,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Namespace")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Deleted Namespace: "
|
||||
f"{new_metadata_namespace.namespace}" in messages)
|
||||
try:
|
||||
|
@@ -97,7 +97,7 @@ def test_create_network_without_subnet_demo(login, openstack_demo, driver,
|
||||
ensure_checkbox(False, checkbox_element)
|
||||
network_form.find_element_by_css_selector(
|
||||
".btn-primary.button-final").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: Created network "{network_name}".' in messages
|
||||
assert openstack_demo.network.find_network(network_name) is not None
|
||||
|
||||
@@ -124,7 +124,7 @@ def test_create_network_with_subnet_demo(login, driver, openstack_demo,
|
||||
".btn-primary.button-next").click()
|
||||
network_form.find_element_by_css_selector(
|
||||
".btn-primary.button-final").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: Created network "{network_name}".' in messages
|
||||
specified_network_sdk = openstack_demo.network.find_network(network_name)
|
||||
assert specified_network_sdk is not None
|
||||
@@ -147,7 +147,7 @@ def test_delete_network_demo(login, driver, network_name, openstack_demo,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Network")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Network: {network_name}" in messages
|
||||
assert openstack_demo.network.find_network(network_name) is None
|
||||
|
||||
@@ -171,7 +171,7 @@ def test_create_network_without_subnet_admin(login, openstack_admin, driver,
|
||||
network_form, 'id_tenant_id', 'admin')
|
||||
network_form.find_element_by_css_selector(
|
||||
".btn-primary.button-final").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: Created network "{network_name}".' in messages
|
||||
assert openstack_admin.network.find_network(network_name) is not None
|
||||
|
||||
@@ -200,7 +200,7 @@ def test_create_network_with_subnet_admin(login, driver, openstack_admin,
|
||||
".btn-primary.button-next").click()
|
||||
network_form.find_element_by_css_selector(
|
||||
".btn-primary.button-final").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: Created network "{network_name}".' in messages
|
||||
specified_network_sdk = openstack_admin.network.find_network(network_name)
|
||||
assert specified_network_sdk is not None
|
||||
@@ -223,6 +223,6 @@ def test_delete_network_admin(login, driver, network_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Network")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Network: {network_name}" in messages
|
||||
assert openstack_admin.network.find_network(network_name) is None
|
||||
|
@@ -79,7 +79,7 @@ def test_create_project(login, driver, project_name, openstack_admin,
|
||||
project_form.find_element_by_id("id_name").send_keys(project_name)
|
||||
project_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Project']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: Created new project "{project_name}".' in messages
|
||||
assert openstack_admin.identity.find_project(project_name) is not None
|
||||
|
||||
@@ -98,7 +98,7 @@ def test_delete_project(login, driver, project_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Project")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Project: {project_name}" in messages
|
||||
assert openstack_admin.identity.find_project(project_name) is None
|
||||
|
||||
@@ -124,7 +124,7 @@ def test_add_member_to_project(login, driver, project_name, openstack_admin,
|
||||
f"/following-sibling::li/a[@href='#add_remove']").click() # noqa: E231
|
||||
project_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Save']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: Modified project "{project_name}".' in messages
|
||||
assert (openstack_admin.identity.validate_user_has_project_role(
|
||||
project=new_project,
|
||||
@@ -156,7 +156,7 @@ def test_add_role_to_project_member(login, driver, openstack_admin, config,
|
||||
widgets.select_from_dropdown(select_roles_dropdown, admin_role_name)
|
||||
project_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Save']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Modified project '
|
||||
f'"{new_project_with_admin.name}".' in messages)
|
||||
assert (openstack_admin.identity.validate_user_has_project_role(
|
||||
@@ -192,7 +192,7 @@ def test_add_group_to_project(login, driver, openstack_admin,
|
||||
f"/following-sibling::li/a[@href='#add_remove']").click() # noqa: E231
|
||||
project_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Save']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: Modified project "{new_project.name}".' in messages
|
||||
assert (openstack_admin.identity.validate_group_has_project_role(
|
||||
project=new_project,
|
||||
@@ -225,7 +225,7 @@ def test_add_role_to_project_group(login, driver, openstack_admin, config,
|
||||
widgets.select_from_dropdown(select_roles_dropdown, admin_role_name)
|
||||
project_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Save']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Modified project '
|
||||
f'"{new_project_with_group.name}".' in messages)
|
||||
assert (openstack_admin.identity.validate_group_has_project_role(
|
||||
|
@@ -109,7 +109,7 @@ def test_create_router_demo(login, driver, router_name, openstack_demo,
|
||||
config.network.external_network)
|
||||
router_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Router']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Router {router_name} was successfully created.'
|
||||
in messages)
|
||||
assert openstack_demo.network.find_router(router_name) is not None
|
||||
@@ -131,7 +131,7 @@ def test_delete_router_demo(login, driver, router_name, openstack_demo,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Router")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Router: {router_name}" in messages
|
||||
assert openstack_demo.network.find_router(router_name) is None
|
||||
|
||||
@@ -164,7 +164,7 @@ def test_router_add_interface_demo(login, driver, router_name, openstack_demo,
|
||||
add_interface_form.find_element_by_id(
|
||||
"id_ip_address").send_keys(fixed_ip_test)
|
||||
add_interface_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Interface added {fixed_ip_test}" in messages
|
||||
|
||||
is_interface_added_sdk = False
|
||||
@@ -200,7 +200,7 @@ def test_router_delete_interface_demo(login, driver, router_name,
|
||||
assert len(rows) == 1
|
||||
rows[0].find_element_by_css_selector("td.actions_column").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Interface: {extracted_port_name}" in messages
|
||||
assert (openstack_demo.network.find_port(
|
||||
new_interface['port_id']) is None)
|
||||
@@ -229,7 +229,7 @@ def test_router_set_gateway_demo(login, driver, new_router_demo,
|
||||
widgets.select_from_specific_dropdown_in_form(
|
||||
gateway_form, 'id_network_id', config.network.external_network)
|
||||
gateway_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert "Success: Gateway interface is added" in messages
|
||||
router_sdk = openstack_demo.network.get(
|
||||
f"/routers/{new_router_demo.id}"
|
||||
@@ -262,7 +262,7 @@ def test_router_clear_gateway_demo(login, driver, new_router_with_gateway,
|
||||
config.network.external_network).id)
|
||||
rows[0].find_element_by_css_selector(".data-table-action").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Cleared Gateway: {new_router_with_gateway.name}" in
|
||||
messages)
|
||||
router_sdk = openstack_demo.network.get(
|
||||
@@ -290,7 +290,7 @@ def test_create_router_admin(login, driver, router_name, openstack_admin,
|
||||
router_form, "id_external_network", config.network.external_network)
|
||||
router_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Router']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Router {router_name} was successfully created.'
|
||||
in messages)
|
||||
assert openstack_admin.network.find_router(router_name) is not None
|
||||
@@ -312,6 +312,6 @@ def test_delete_router_admin(login, driver, router_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Router")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Router: {router_name}" in messages
|
||||
assert openstack_admin.network.find_router(router_name) is None
|
||||
|
@@ -66,7 +66,7 @@ def test_create_sec_group_demo(login, driver, config, sec_group_name,
|
||||
sec_group_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||
sec_group_form.find_element_by_id("id_name").send_keys(sec_group_name)
|
||||
sec_group_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Successfully created security group: {sec_group_name}'
|
||||
in messages)
|
||||
assert (openstack_demo.network.find_security_group(sec_group_name)
|
||||
@@ -88,7 +88,7 @@ def test_delete_sec_group_demo(login, driver, sec_group_name, openstack_demo,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Security Group")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Security Group: {sec_group_name}" in messages
|
||||
assert openstack_demo.network.find_security_group(sec_group_name) is None
|
||||
|
||||
@@ -108,7 +108,7 @@ def test_add_rule_sec_group_demo(login, driver, sec_group_name, openstack_demo,
|
||||
rule_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||
rule_form.find_element_by_id("id_port").send_keys(rule_port)
|
||||
rule_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Successfully added rule: ALLOW IPv4 {rule_port}"
|
||||
f"/tcp from 0.0.0.0/0" in messages)
|
||||
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
||||
@@ -138,7 +138,7 @@ def test_delete_rule_sec_group_demo(login, driver, sec_group_name,
|
||||
assert len(rows) == 1
|
||||
rows[0].find_element_by_css_selector("td.actions_column").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Deleted Rule: ALLOW IPv4 {rule_port}/tcp from 0.0.0.0/0"
|
||||
in messages)
|
||||
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
||||
|
@@ -58,7 +58,7 @@ def test_create_user_credential_totp(login, driver, openstack_admin, config,
|
||||
widgets.select_from_specific_dropdown_in_form(
|
||||
user_credential_form, 'id_cred_type', 'TOTP')
|
||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert 'Success: User credential created successfully.' in messages
|
||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||
assert (len(credentials_sdk_after) == 1 and
|
||||
@@ -87,7 +87,7 @@ def test_create_user_credential_ec2(login, driver, openstack_admin, config,
|
||||
widgets.select_from_specific_dropdown_in_form(
|
||||
user_credential_form, 'id_project', 'admin')
|
||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert 'Success: User credential created successfully.' in messages
|
||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||
assert (len(credentials_sdk_after) == 1 and
|
||||
@@ -113,7 +113,7 @@ def test_delete_user_credential(login, driver, openstack_admin, config,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete User Credential")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Deleted User Credential: {user_credential_blob}" in
|
||||
messages)
|
||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||
@@ -139,7 +139,7 @@ def test_edit_user_credential(login, driver, openstack_admin, config,
|
||||
user_credential_form.find_element_by_id("id_data").send_keys(
|
||||
f"EDITED_{user_credential_blob}")
|
||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert ("Success: User credential updated successfully." in messages)
|
||||
credentials_sdk = list(openstack_admin.identity.credentials())
|
||||
assert (len(credentials_sdk) == 1 and
|
||||
|
@@ -57,7 +57,7 @@ def test_create_user(login, driver, user_name, openstack_admin,
|
||||
user_form.find_element_by_id(
|
||||
"id_confirm_password").send_keys(default_password)
|
||||
user_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Success: User "{user_name}" was successfully created.' in messages
|
||||
assert openstack_admin.identity.find_user(user_name) is not None
|
||||
|
||||
@@ -77,7 +77,7 @@ def test_delete_user(login, driver, user_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete User")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted User: {user_name}" in messages
|
||||
assert openstack_admin.identity.find_user(user_name) is None
|
||||
|
||||
@@ -101,5 +101,5 @@ def test_change_user_password(login, driver, user_name, new_user, config):
|
||||
password_form.find_element_by_id(
|
||||
"id_confirm_password").send_keys(new_password)
|
||||
password_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert "Success: User password has been updated successfully." in messages
|
||||
|
@@ -163,7 +163,7 @@ def test_create_volume_snapshot_demo(login, driver, volume_name,
|
||||
create_snap_form.find_element_by_id("id_name").send_keys(
|
||||
volume_snapshot_name)
|
||||
create_snap_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
||||
in messages)
|
||||
assert (openstack_demo.block_storage.find_snapshot(volume_snapshot_name)
|
||||
@@ -187,7 +187,7 @@ def test_delete_volume_snapshot_demo(login, driver, volume_snapshot_names,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume Snapshot")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{volume_snapshot_name}" in messages)
|
||||
wait_for_volume_snapshot_is_deleted(openstack_demo, volume_snapshot_name)
|
||||
@@ -216,7 +216,7 @@ def test_edit_volume_snapshot_description_demo(login, driver, openstack_demo,
|
||||
snapshot_form.find_element_by_id("id_description").send_keys(
|
||||
f"EDITED_Description for: {new_volume_snapshot_demo.name}")
|
||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Info: Updating volume snapshot '
|
||||
f'"{new_volume_snapshot_demo.name}"' in messages)
|
||||
assert (openstack_demo.block_storage.find_snapshot(
|
||||
@@ -246,7 +246,7 @@ def test_create_volume_from_volume_snapshot_demo(login, driver, openstack_demo,
|
||||
volume_form.find_element_by_id("id_name").send_keys(
|
||||
volume_from_snapshot_name)
|
||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Info: Creating volume "{volume_from_snapshot_name}"' in messages)
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
volume_from_snapshot_name) is not None)
|
||||
@@ -269,7 +269,7 @@ def test_delete_volume_from_volume_snapshot_demo(login, driver, openstack_demo,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Info: Scheduled deletion of Volume: "
|
||||
f"{new_volume_from_snapshot_demo.name}" in messages)
|
||||
test_volumes.wait_for_volume_is_deleted(
|
||||
@@ -302,7 +302,7 @@ def test_delete_snapshot_before_volume_demo(login, driver, openstack_demo,
|
||||
widgets.select_from_dropdown(actions_column_snapshot,
|
||||
"Delete Volume Snapshot")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{volume_snapshot_name}" in messages)
|
||||
wait_for_volume_snapshot_is_deleted(openstack_demo, volume_snapshot_name)
|
||||
@@ -322,7 +322,7 @@ def test_delete_snapshot_before_volume_demo(login, driver, openstack_demo,
|
||||
"td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column_volume, "Delete Volume")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Info: Scheduled deletion of Volume: "
|
||||
f"{new_volume_from_snapshot_demo.name}" in messages)
|
||||
test_volumes.wait_for_volume_is_deleted(
|
||||
@@ -425,7 +425,7 @@ def test_create_volume_snapshot_admin(login, driver, new_volume_admin,
|
||||
snapshot_form.find_element_by_id("id_name").send_keys(
|
||||
volume_snapshot_name)
|
||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
||||
in messages)
|
||||
assert (openstack_admin.block_storage.find_snapshot(volume_snapshot_name)
|
||||
@@ -448,7 +448,7 @@ def test_delete_volume_snapshot_admin(login, driver, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume Snapshot")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{new_volume_snapshot_admin.name}" in messages)
|
||||
wait_for_volume_snapshot_is_deleted(openstack_admin,
|
||||
@@ -478,7 +478,7 @@ def test_edit_volume_snapshot_description_admin(login, driver, openstack_admin,
|
||||
snapshot_form.find_element_by_id("id_description").send_keys(
|
||||
f"EDITED_Description for: {new_volume_snapshot_admin.name}")
|
||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Info: Updating volume snapshot '
|
||||
f'"{new_volume_snapshot_admin.name}"' in messages)
|
||||
assert (openstack_admin.block_storage.find_snapshot(
|
||||
|
@@ -67,7 +67,7 @@ def test_create_empty_volume_demo(login, driver, volume_name, openstack_demo,
|
||||
volume_form.find_element_by_id("id_name").send_keys(volume_name)
|
||||
volume_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Info: Creating volume "{volume_name}"' in messages
|
||||
assert openstack_demo.block_storage.find_volume(volume_name) is not None
|
||||
|
||||
@@ -94,7 +94,7 @@ def test_create_volume_via_vol_source_image_demo(login, driver,
|
||||
volume_form, 'id_image_source', image_source_name)
|
||||
volume_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Info: Creating volume "{volume_name}"' in messages
|
||||
assert openstack_demo.block_storage.find_volume(volume_name) is not None
|
||||
|
||||
@@ -116,7 +116,7 @@ def test_delete_volume_demo(login, driver, volume_name, openstack_demo,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Info: Scheduled deletion of Volume: {volume_name}" in messages
|
||||
wait_for_volume_is_deleted(openstack_demo, volume_name)
|
||||
assert (openstack_demo.block_storage.find_volume(volume_name) is None)
|
||||
@@ -142,7 +142,7 @@ def test_edit_volume_description_demo(login, driver, volume_name, config,
|
||||
volume_form.find_element_by_id("id_description").send_keys(
|
||||
f"EDITED_Description for: {volume_name}")
|
||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Info: Updating volume "{volume_name}"' in messages
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
volume_name).description == f"EDITED_Description for: {volume_name}")
|
||||
@@ -169,7 +169,7 @@ def test_extend_volume_demo(login, driver, openstack_demo, new_volume_demo,
|
||||
volume_form.find_element_by_id("id_new_size").send_keys(2)
|
||||
volume_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Extend Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Info: Extending volume: "{new_volume_demo.name}"' in messages
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
@@ -244,7 +244,7 @@ def test_volume_upload_to_image_demo(login, driver, openstack_demo,
|
||||
volume_form.find_element_by_id("id_image_name").send_keys(image_names[0])
|
||||
volume_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Upload']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert ('Info: Successfully sent the request to upload volume to image for '
|
||||
f'volume: "{new_volume_demo.name}"' in messages)
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
@@ -345,7 +345,7 @@ def test_manage_volume_attachments(login, driver, openstack_demo,
|
||||
f"{new_instance_demo.name} ({new_instance_demo.id})")
|
||||
attach_to_instance_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Attach Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Info: Attaching volume {new_volume_demo.name} to instance "
|
||||
f"{new_instance_demo.name} on /dev/vdb." in messages)
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
@@ -368,7 +368,7 @@ def test_manage_volume_attachments(login, driver, openstack_demo,
|
||||
"td.actions_column").click()
|
||||
driver.find_element_by_xpath(
|
||||
".//a[normalize-space()='Detach Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Detaching Volume: Volume {new_volume_demo.name} "
|
||||
f"on instance {new_instance_demo.name}" in messages)
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
@@ -394,7 +394,7 @@ def test_create_empty_volume_admin(login, driver, volume_name, openstack_admin,
|
||||
volume_form.find_element_by_id("id_name").send_keys(volume_name)
|
||||
volume_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Info: Creating volume "{volume_name}"' in messages
|
||||
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
||||
|
||||
@@ -420,7 +420,7 @@ def test_create_volume_via_vol_source_image_admin(login, driver, volume_name,
|
||||
volume_form, 'id_image_source', image_source_name)
|
||||
volume_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Info: Creating volume "{volume_name}"' in messages
|
||||
assert openstack_admin.block_storage.find_volume(volume_name) is not None
|
||||
|
||||
@@ -442,7 +442,7 @@ def test_delete_volume_admin(login, driver, volume_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Info: Scheduled deletion of Volume: {volume_name}" in messages
|
||||
wait_for_volume_is_deleted(openstack_admin, volume_name)
|
||||
assert (openstack_admin.block_storage.find_volume(volume_name) is None)
|
||||
@@ -468,7 +468,7 @@ def test_edit_volume_description_admin(login, driver, volume_name, config,
|
||||
volume_form.find_element_by_id("id_description").send_keys(
|
||||
f"EDITED_Description for: {volume_name}")
|
||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f'Info: Updating volume "{volume_name}"' in messages
|
||||
assert (openstack_admin.block_storage.find_volume(
|
||||
volume_name).description == f"EDITED_Description for: {volume_name}")
|
||||
|
@@ -107,7 +107,7 @@ def test_create_volume_type(login, driver, volume_type_name, openstack_admin,
|
||||
volume_type_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||
volume_type_form.find_element_by_id("id_name").send_keys(volume_type_name)
|
||||
volume_type_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Successfully created volume '
|
||||
f'type: {volume_type_name}' in messages)
|
||||
assert openstack_admin.block_storage.find_type(volume_type_name) is not None
|
||||
@@ -128,7 +128,7 @@ def test_delete_volume_type(login, driver, volume_type_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume Type")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted Volume Type: {volume_type_name}" in messages
|
||||
assert openstack_admin.block_storage.find_type(volume_type_name) is None
|
||||
|
||||
@@ -150,7 +150,7 @@ def test_volume_type_create_encryption(login, driver, openstack_admin, config,
|
||||
volume_type_form.find_element_by_id("id_provider").send_keys("plain")
|
||||
volume_type_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Volume Type Encryption']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Successfully created encryption for "
|
||||
f"volume type: {new_volume_type.name}" in messages)
|
||||
assert (openstack_admin.block_storage.get_type_encryption(
|
||||
@@ -176,7 +176,7 @@ def test_volume_type_delete_encryption(login, driver, openstack_admin, config,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Encryption")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Deleted Encryption: "
|
||||
f"{new_volume_type_with_encryption.name}" in messages)
|
||||
assert (openstack_admin.block_storage.get_type_encryption(
|
||||
@@ -196,7 +196,7 @@ def test_create_qos_spec(login, driver, qos_spec_name, openstack_admin,
|
||||
volume_qos_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||
volume_qos_form.find_element_by_id("id_name").send_keys(qos_spec_name)
|
||||
volume_qos_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f'Success: Successfully created QoS '
|
||||
f'Spec: {qos_spec_name}' in messages)
|
||||
qos_specs = openstack_admin.block_storage.get(
|
||||
@@ -220,7 +220,7 @@ def test_delete_qos_spec(login, driver, qos_spec_name, openstack_admin,
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete QoS Spec")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert f"Success: Deleted QoS Spec: {qos_spec_name}" in messages
|
||||
qos_specs = openstack_admin.block_storage.get(
|
||||
"/qos-specs").json()['qos_specs']
|
||||
@@ -248,7 +248,7 @@ def test_edit_qos_spec_consumer(login, driver, openstack_admin, config,
|
||||
volume_qos_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||
widgets.select_from_dropdown(volume_qos_form, 'front-end')
|
||||
volume_qos_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert "Success: Successfully modified QoS Spec consumer." in messages
|
||||
assert (openstack_admin.block_storage.get(
|
||||
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['consumer'] ==
|
||||
@@ -274,7 +274,7 @@ def test_qos_spec_create_extra_specs(login, driver, openstack_admin, config,
|
||||
extra_specs_form.find_element_by_id("id_key").send_keys('minIOPS')
|
||||
extra_specs_form.find_element_by_id("id_value").send_keys(20)
|
||||
extra_specs_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert 'Success: Created spec "minIOPS".' in messages
|
||||
assert (openstack_admin.block_storage.get(
|
||||
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['specs'] ==
|
||||
@@ -307,7 +307,7 @@ def test_qos_spec_delete_extra_specs(login, driver, openstack_admin, config,
|
||||
widgets.select_from_dropdown(actions_column, "Delete Spec")
|
||||
driver.find_element_by_css_selector(
|
||||
".modal-dialog .modal-footer .btn-danger").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert "Success: Deleted Spec: maxIOPS" in messages
|
||||
assert (openstack_admin.block_storage.get(
|
||||
f"/qos-specs/{new_qos_spec_with_extra_specs['id']}").json()
|
||||
|
@@ -17,7 +17,7 @@ from openstack_dashboard.test.selenium import widgets
|
||||
|
||||
|
||||
def test_delete_multiple_instance_rows(live_server, driver, dashboard_data,
|
||||
user):
|
||||
config, user):
|
||||
with mock.patch.object(
|
||||
api.glance, 'image_list_detailed') as mocked_i_l_d, \
|
||||
mock.patch.object(
|
||||
@@ -52,14 +52,14 @@ def test_delete_multiple_instance_rows(live_server, driver, dashboard_data,
|
||||
server_names.append(str(server)[1:-1].split("Server: ")[1])
|
||||
string_server_names = ", ".join(server_names)
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Info: Scheduled deletion of Instances: {string_server_names}"
|
||||
in messages)
|
||||
|
||||
|
||||
# Test for cover delete multiple rows also for Angular based table
|
||||
def test_delete_multiple_images_rows(live_server, driver, dashboard_data,
|
||||
user):
|
||||
config, user):
|
||||
with mock.patch.object(
|
||||
api.glance, 'image_list_detailed') as mocked_i_l_d, \
|
||||
mock.patch.object(
|
||||
@@ -91,6 +91,6 @@ def test_delete_multiple_images_rows(live_server, driver, dashboard_data,
|
||||
driver.find_element_by_xpath(
|
||||
"//button[normalize-space()='Delete Images']").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert (f"Success: Deleted Images: {string_image_names}."
|
||||
in messages)
|
||||
|
@@ -94,14 +94,14 @@ def test_message_after_password_change(live_server, driver, user,
|
||||
'Password changed. Please log in again to continue.')
|
||||
|
||||
|
||||
def test_languages(live_server, driver, user):
|
||||
def test_languages(live_server, driver, user, config):
|
||||
driver.get(live_server.url + '/settings')
|
||||
user_settings = driver.find_element_by_id('user_settings_modal')
|
||||
language_options = user_settings.find_element_by_id('id_language')
|
||||
language_options.click()
|
||||
language_options.find_element_by_xpath("//option[@value='de']").click()
|
||||
user_settings.find_element_by_xpath('//*[@class="btn btn-primary"]').click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver, config)
|
||||
assert ("Success: Settings saved." in messages or
|
||||
"Erfolg:Einstellungen gespeichert." in messages)
|
||||
assert "Error" not in messages
|
||||
|
@@ -27,8 +27,10 @@ class TableDefinition:
|
||||
names: list
|
||||
|
||||
|
||||
def get_and_dismiss_messages(element):
|
||||
messages = element.find_elements_by_css_selector("div.messages div.alert")
|
||||
def get_and_dismiss_messages(driver, config):
|
||||
messages = WebDriverWait(driver, config.selenium.message_wait).until(
|
||||
EC.presence_of_all_elements_located(
|
||||
(By.CSS_SELECTOR, 'div.messages div.alert')))
|
||||
collect = []
|
||||
for message in messages:
|
||||
text = message.find_element_by_css_selector("p, div").text
|
||||
|
Reference in New Issue
Block a user