Change TestImageAdmin to test proper pages

Previously the essence of TestImageAdmin was to do the same things on
same pages, but under a different (admin) user. We realized that it's
not very useful since admin user in Horizon under no circumstances has
less rights than a regular user. A saner approach under admin user
would be to test pages inaccessible to a regular user - that's done in
this patch.

Also is_*_link_available() functions were sligthly improved: they no
longer wait a default timeout for the link to appear, because by the
time these methods are invoked table links are already visible for
sure or are expected to be misssing.

Implements blueprint: horizon-integration-tests-coverage
Change-Id: Idd0c871706d2a8c2c61d6182bbd533bba141baa9
This commit is contained in:
Timur Sufiev 2016-02-10 16:40:32 +03:00
parent d1f08df329
commit 457935c3d3
2 changed files with 23 additions and 62 deletions

View File

@ -129,10 +129,18 @@ class TableRegion(baseregion.BaseRegion):
for elem in self._get_elements(*self._rows_locator)]
def is_next_link_available(self):
return self._is_element_visible(*self._next_locator)
try:
self._turn_off_implicit_wait()
return self._is_element_visible(*self._next_locator)
finally:
self._turn_on_implicit_wait()
def is_prev_link_available(self):
return self._is_element_visible(*self._prev_locator)
try:
self._turn_off_implicit_wait()
return self._is_element_visible(*self._prev_locator)
finally:
self._turn_on_implicit_wait()
def turn_next_page(self):
if self.is_next_link_available():

View File

@ -14,7 +14,13 @@ from openstack_dashboard.test.integration_tests import helpers
from openstack_dashboard.test.integration_tests.regions import messages
class ImagesTestMixin(object):
class TestImages(helpers.TestCase):
"""Login as demo user"""
IMAGE_NAME = helpers.gen_random_resource_name("image")
@property
def images_page(self):
return self.home_pg.go_to_compute_imagespage()
def test_image_create_delete(self):
"""tests the image creation and deletion functionalities:
@ -23,7 +29,7 @@ class ImagesTestMixin(object):
* deletes the newly created image
* verifies the image does not appear in the table after deletion
"""
images_page = self.home_pg.go_to_compute_imagespage()
images_page = self.images_page
images_page.create_image(self.IMAGE_NAME)
self.assertTrue(images_page.find_message_and_dismiss(messages.SUCCESS))
@ -36,11 +42,6 @@ class ImagesTestMixin(object):
self.assertFalse(images_page.find_message_and_dismiss(messages.ERROR))
self.assertFalse(images_page.is_image_present(self.IMAGE_NAME))
class TestImage(helpers.TestCase, ImagesTestMixin):
"""Login as demo user"""
IMAGE_NAME = helpers.gen_random_resource_name("image")
def test_images_pagination(self):
"""This test checks images pagination
Steps:
@ -74,7 +75,7 @@ class TestImage(helpers.TestCase, ImagesTestMixin):
settings_page.change_pagesize(items_per_page)
settings_page.find_message_and_dismiss(messages.SUCCESS)
images_page = self.home_pg.go_to_compute_imagespage()
images_page = self.images_page
images_page.images_table.assert_definition(first_page_definition)
images_page.images_table.turn_next_page()
@ -94,58 +95,10 @@ class TestImage(helpers.TestCase, ImagesTestMixin):
settings_page.find_message_and_dismiss(messages.SUCCESS)
class TestImageAdmin(helpers.AdminTestCase, ImagesTestMixin):
class TestImagesAdmin(helpers.AdminTestCase, TestImages):
"""Login as admin user"""
IMAGE_NAME = helpers.gen_random_resource_name("image")
def test_images_pagination_under_admin(self):
"""This test checks images pagination under admin user
Steps:
1) Login to Horizon Dashboard as admin user
2) Navigate to user settings page
3) Change 'Items Per Page' value to 1
4) Go to Admin -> System -> Images page
5) Check that only 'Next' link is available, only one image is
available (and it has correct name)
6) Click 'Next' and check that both 'Prev' and 'Next' links are
available, only one image is available (and it has correct name)
7) Click 'Next' and check that only 'Prev' link is available,
only one image is visible (and it has correct name)
8) Click 'Prev' and check results (should be the same as for step6)
9) Click 'Prev' and check results (should be the same as for step5)
10) Go to user settings page and restore 'Items Per Page'
"""
default_image_list = self.CONFIG.image.images_list
items_per_page = 1
first_page_definition = {'Next': True, 'Prev': False,
'Count': items_per_page,
'Names': [default_image_list[0]]}
second_page_definition = {'Next': True, 'Prev': True,
'Count': items_per_page,
'Names': [default_image_list[1]]}
third_page_definition = {'Next': False, 'Prev': True,
'Count': items_per_page,
'Names': [default_image_list[2]]}
settings_page = self.home_pg.go_to_settings_usersettingspage()
settings_page.change_pagesize(items_per_page)
settings_page.find_message_and_dismiss(messages.SUCCESS)
images_page = self.home_pg.go_to_system_imagespage()
images_page.images_table.assert_definition(first_page_definition)
images_page.images_table.turn_next_page()
images_page.images_table.assert_definition(second_page_definition)
images_page.images_table.turn_next_page()
images_page.images_table.assert_definition(third_page_definition)
images_page.images_table.turn_prev_page()
images_page.images_table.assert_definition(second_page_definition)
images_page.images_table.turn_prev_page()
images_page.images_table.assert_definition(first_page_definition)
settings_page = self.home_pg.go_to_settings_usersettingspage()
settings_page.change_pagesize()
settings_page.find_message_and_dismiss(messages.SUCCESS)
@property
def images_page(self):
return self.home_pg.go_to_system_imagespage()