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:
Tatyana Kuterina 2016-02-08 18:54:54 +03:00
parent 03ca7c882a
commit 566a0d2be2
3 changed files with 95 additions and 0 deletions
openstack_dashboard/test/integration_tests
pages/project/compute
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))