WebUI Hostgroups tests cases added

Added test for negative (invalid) names
Added test for add/add another/add and edit/cancel buttons
Added test for duplicate records

https://pagure.io/freeipa/issue/7458

Signed-off-by: Pavel Picka <ppicka@redhat.com>
Reviewed-By: Petr Vobornik <pvoborni@redhat.com>
This commit is contained in:
Pavel Picka 2018-03-22 07:53:40 +01:00 committed by Christian Heimes
parent 30ab8c4743
commit 1fe795b75b
3 changed files with 157 additions and 4 deletions

View File

@ -20,6 +20,15 @@
ENTITY = 'hostgroup'
DEFAULT_FACET = 'member_host'
LEADING_SPACE = ' leading-space'
TRAILING_SPACE = 'trailign-space '
NAME_SPACE = 'name space'
CHAR_WARNING_MSG = "may only include letters, numbers, _, -, and ."
EMPTY_WARNING_MSG = "Required field"
DUPLICATE_WARNING_MSG = 'already exists'
DESCRIPTION_ERROR_DIALOG = 'Leading and trailing spaces are not allowed'
PKEY = 'itest-hostgroup'
DATA = {
'pkey': PKEY,
@ -79,3 +88,31 @@ DATA5 = {
('textarea', 'description', 'test-hostgroup5 desc modified'),
],
}
PKEY6 = 'ITEST-HOSTGROUP6'
DATA6 = {
'pkey': PKEY6,
'add': [
('textbox', 'cn', PKEY6),
('textarea', 'description', 'TEST-HOSTGROUP6 DESC'),
],
}
PKEY7 = 'Itest-hostGROUP7'
DATA7 = {
'pkey': PKEY7,
'add': [
('textbox', 'cn', PKEY7),
('textarea', 'description', 'TesT-HosTGroUP7 DESC'),
],
}
PKEY8 = 16 * 'long-name-hostgroup8'
DKEY8 = 16 * 'long hostgroup description'
DATA8 = {
'pkey': PKEY8,
'add': [
('textbox', 'cn', PKEY8),
('textarea', 'description', DKEY8),
],
}

View File

@ -31,6 +31,15 @@ import ipatests.test_webui.data_sudo as sudo
import pytest
def check_invalid_names(self, names, error_link):
self.navigate_to_entity(hostgroup.ENTITY)
for name in names:
self.button_click(name='add')
self.fill_input('cn', name)
text_warning = self.get_text('.help-block', parent=self.get_dialog())
assert text_warning in error_link
self.dialog_button_click(name='cancel')
@pytest.mark.tier1
class test_hostgroup(UI_driver):
@ -142,7 +151,108 @@ class test_hostgroup(UI_driver):
## cleanup
## -------
self.delete(hostgroup.ENTITY, [hostgroup.DATA, hostgroup.DATA2,
hostgroup.DATA3, hostgroup.DATA4, hostgroup.DATA5])
hostgroup.DATA3, hostgroup.DATA4,
hostgroup.DATA5])
self.delete(HOST_ENTITY, [host.data2])
self.delete(hbac.RULE_ENTITY, [hbac.RULE_DATA])
self.delete(sudo.RULE_ENTITY, [sudo.RULE_DATA])
def test_names_and_button(self):
"""
Hostgroup names and buttons
"""
self.init_app()
host = host_tasks()
host.setup(self.driver, self.config)
self.add_record(hostgroup.ENTITY, hostgroup.DATA6)
self.add_record(hostgroup.ENTITY, hostgroup.DATA7, navigate=False)
self.add_record(hostgroup.ENTITY, hostgroup.DATA8, navigate=False)
# test invalid names
invalid_names = [hostgroup.LEADING_SPACE,
hostgroup.TRAILING_SPACE,
hostgroup.NAME_SPACE]
check_invalid_names(self, invalid_names, hostgroup.CHAR_WARNING_MSG)
invalid_names = [hostgroup.PKEY6]
check_invalid_names(self, invalid_names,
hostgroup.DUPLICATE_WARNING_MSG)
# test invalid description
self.button_click(name='add')
self.fill_input('cn', hostgroup.PKEY)
self.fill_textarea('description', hostgroup.LEADING_SPACE)
self.dialog_button_click('add')
assert hostgroup.DESCRIPTION_ERROR_DIALOG in \
self.get_last_error_dialog().text
self.dialog_button_click('cancel')
self.wait()
self.fill_textarea('description', hostgroup.TRAILING_SPACE)
self.dialog_button_click('add')
assert hostgroup.DESCRIPTION_ERROR_DIALOG in \
self.get_last_error_dialog().text
self.dialog_button_click('cancel')
self.dialog_button_click('cancel')
# duplicate
self.button_click(name='add')
self.fill_input('cn', hostgroup.PKEY6)
self.dialog_button_click('add')
assert hostgroup.DUPLICATE_WARNING_MSG in \
self.get_last_error_dialog().text
self.dialog_button_click('cancel')
self.dialog_button_click('cancel')
self.button_click(name='add')
self.fill_input('cn', "")
self.dialog_button_click('add')
text_warning = self.get_text('.help-block', parent=self.get_dialog())
assert text_warning in hostgroup.EMPTY_WARNING_MSG
self.dialog_button_click(name='cancel')
# test buttons
self.button_click('add')
self.fill_input('cn', hostgroup.DATA['pkey'])
self.dialog_button_click(name='add_and_add_another')
self.wait_for_request(n=3)
self.fill_input('cn', hostgroup.DATA2['pkey'])
self.dialog_button_click(name='add_and_edit')
self.wait_for_request(n=4)
self.navigate_to_entity(hostgroup.ENTITY)
self.button_click('add')
self.fill_input('cn', hostgroup.DATA['pkey'])
self.dialog_button_click('cancel')
self.select_record(hostgroup.PKEY)
self.button_click('remove')
self.dialog_button_click('cancel')
self.wait()
self.select_record(hostgroup.PKEY, unselect=True)
# test to rewrite invalid input_type
self.button_click('add')
self.fill_input('cn', hostgroup.LEADING_SPACE)
self.fill_input('cn', hostgroup.PKEY3)
self.dialog_button_click('add')
self.wait_for_request(n=3)
self.button_click('add')
self.fill_input('cn', hostgroup.TRAILING_SPACE)
self.fill_input('cn', hostgroup.PKEY4)
self.dialog_button_click('add')
self.wait_for_request(n=3)
# multiple delete clean up
self.select_record(hostgroup.PKEY6.lower())
self.select_record(hostgroup.PKEY7.lower())
self.button_click('remove')
self.dialog_button_click('ok')
# clean up
self.delete(hostgroup.ENTITY, [hostgroup.DATA, hostgroup.DATA2,
hostgroup.DATA3, hostgroup.DATA4,
hostgroup.DATA8])

View File

@ -1009,7 +1009,8 @@ class UI_driver(object):
s += '.table'
return s
def select_record(self, pkey, parent=None, table_name=None):
def select_record(self, pkey, parent=None,
table_name=None, unselect=False):
"""
Select record with given pkey in search table.
"""
@ -1025,8 +1026,13 @@ class UI_driver(object):
except WebDriverException as e:
assert False, 'Can\'t click on checkbox label: %s \n%s' % (s, e)
self.wait()
assert checkbox.is_selected(), 'Record was not checked: %s' % input_s
self.wait()
if unselect:
assert checkbox.is_selected() is not True
self.wait()
else:
assert checkbox.is_selected(), \
'Record was not checked: %s' % input_s
self.wait()
def get_record_value(self, pkey, column, parent=None, table_name=None):
"""