Added test for check associate/disassociate actions for floating ip
Test check that associate/disassociate actions are executed without errors and floating ip is associated/disassociated with corresponding instance Change-Id: I6666339eac26207a80ae2a16189a3c4da85a5760
This commit is contained in:
parent
03ca7c882a
commit
566a0d2be2
openstack_dashboard/test/integration_tests
@ -24,6 +24,8 @@ from openstack_dashboard.test.integration_tests.regions import tables
|
||||
|
||||
class FloatingIPTable(tables.TableRegion):
|
||||
name = 'floating_ips'
|
||||
FLOATING_IP_ASSOCIATIONS = (
|
||||
("ip_id", "instance_id"))
|
||||
|
||||
@tables.bind_table_action('allocate')
|
||||
def allocate_ip(self, allocate_button):
|
||||
@ -35,9 +37,21 @@ class FloatingIPTable(tables.TableRegion):
|
||||
release_button.click()
|
||||
return forms.BaseFormRegion(self.driver, self.conf)
|
||||
|
||||
@tables.bind_row_action('associate', primary=True)
|
||||
def associate_ip(self, associate_button, row):
|
||||
associate_button.click()
|
||||
return forms.FormRegion(self.driver, self.conf,
|
||||
field_mappings=self.FLOATING_IP_ASSOCIATIONS)
|
||||
|
||||
@tables.bind_row_action('disassociate', primary=True)
|
||||
def disassociate_ip(self, disassociate_button, row):
|
||||
disassociate_button.click()
|
||||
return forms.BaseFormRegion(self.driver, self.conf)
|
||||
|
||||
|
||||
class FloatingipsPage(basepage.BaseNavigationPage):
|
||||
FLOATING_IPS_TABLE_IP_COLUMN = 'ip'
|
||||
FLOATING_IPS_TABLE_FIXED_IP_COLUMN = 'fixed_ip'
|
||||
|
||||
_floatingips_fadein_popup_locator = (
|
||||
by.By.CSS_SELECTOR, '.alert.alert-success.alert-dismissable.fade.in>p')
|
||||
@ -73,3 +87,20 @@ class FloatingipsPage(basepage.BaseNavigationPage):
|
||||
|
||||
def is_floatingip_present(self, floatingip):
|
||||
return bool(self._get_row_with_floatingip(floatingip))
|
||||
|
||||
def associate_floatingip(self, floatingip, instance_name=None,
|
||||
instance_ip=None):
|
||||
row = self._get_row_with_floatingip(floatingip)
|
||||
floatingip_form = self.floatingips_table.associate_ip(row)
|
||||
floatingip_form.instance_id.text = "{}: {}".format(instance_name,
|
||||
instance_ip)
|
||||
floatingip_form.submit()
|
||||
|
||||
def disassociate_floatingip(self, floatingip):
|
||||
row = self._get_row_with_floatingip(floatingip)
|
||||
floatingip_form = self.floatingips_table.disassociate_ip(row)
|
||||
floatingip_form.submit()
|
||||
|
||||
def get_fixed_ip(self, floatingip):
|
||||
row = self._get_row_with_floatingip(floatingip)
|
||||
return row.cells[self.FLOATING_IPS_TABLE_FIXED_IP_COLUMN].text
|
||||
|
@ -54,6 +54,7 @@ class InstancesPage(basepage.BaseNavigationPage):
|
||||
|
||||
INSTANCES_TABLE_NAME_COLUMN = 'name'
|
||||
INSTANCES_TABLE_STATUS_COLUMN = 'status'
|
||||
INSTANCES_TABLE_IP_COLUMN = 'ip'
|
||||
INSTANCES_TABLE_IMAGE_NAME_COLUMN = 'image_name'
|
||||
|
||||
def __init__(self, driver, conf):
|
||||
@ -140,3 +141,8 @@ class InstancesPage(basepage.BaseNavigationPage):
|
||||
def get_image_name(self, instance_name):
|
||||
row = self._get_row_with_instance_name(instance_name)
|
||||
return row.cells[self.INSTANCES_TABLE_IMAGE_NAME_COLUMN].text
|
||||
|
||||
def get_fixed_ipv4(self, name):
|
||||
row = self._get_row_with_instance_name(name)
|
||||
ips = row.cells[self.INSTANCES_TABLE_IP_COLUMN].text
|
||||
return ips.split()[0]
|
||||
|
@ -36,3 +36,61 @@ class TestFloatingip(helpers.TestCase):
|
||||
self.assertFalse(
|
||||
floatingip_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertFalse(floatingip_page.is_floatingip_present(floating_ip))
|
||||
|
||||
|
||||
class TestFloatingipAssociateDisassociate(helpers.TestCase):
|
||||
"""Checks that the user is able to Associate/Disassociate floatingip."""
|
||||
|
||||
def test_floatingip_associate_disassociate(self):
|
||||
instance_name = helpers.gen_random_resource_name('instance',
|
||||
timestamp=False)
|
||||
instances_page = self.home_pg.go_to_compute_instancespage()
|
||||
instances_page.create_instance(instance_name)
|
||||
self.assertTrue(
|
||||
instances_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(
|
||||
instances_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertTrue(instances_page.is_instance_active(instance_name))
|
||||
instance_ipv4 = instances_page.get_fixed_ipv4(instance_name)
|
||||
instance_info = "{} {}".format(instance_name, instance_ipv4)
|
||||
|
||||
floatingip_page = \
|
||||
self.home_pg.go_to_compute_accessandsecurity_floatingipspage()
|
||||
floating_ip = floatingip_page.allocate_floatingip()
|
||||
self.assertTrue(
|
||||
floatingip_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(
|
||||
floatingip_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertTrue(floatingip_page.is_floatingip_present(floating_ip))
|
||||
|
||||
self.assertEqual(floatingip_page.get_fixed_ip(floating_ip), '-')
|
||||
floatingip_page.associate_floatingip(floating_ip, instance_name,
|
||||
instance_ipv4)
|
||||
self.assertTrue(
|
||||
floatingip_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(
|
||||
floatingip_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertEqual(floatingip_page.get_fixed_ip(floating_ip),
|
||||
instance_info)
|
||||
|
||||
floatingip_page.disassociate_floatingip(floating_ip)
|
||||
self.assertTrue(
|
||||
floatingip_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(
|
||||
floatingip_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertEqual(floatingip_page.get_fixed_ip(floating_ip), '-')
|
||||
|
||||
floatingip_page.release_floatingip(floating_ip)
|
||||
self.assertTrue(
|
||||
floatingip_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(
|
||||
floatingip_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertFalse(floatingip_page.is_floatingip_present(floating_ip))
|
||||
|
||||
instances_page = self.home_pg.go_to_compute_instancespage()
|
||||
instances_page.delete_instance(instance_name)
|
||||
self.assertTrue(
|
||||
instances_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertFalse(
|
||||
instances_page.find_message_and_dismiss(messages.ERROR))
|
||||
self.assertTrue(instances_page.is_instance_deleted(instance_name))
|
||||
|
Loading…
x
Reference in New Issue
Block a user