mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
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:
parent
30ab8c4743
commit
1fe795b75b
@ -20,6 +20,15 @@
|
|||||||
ENTITY = 'hostgroup'
|
ENTITY = 'hostgroup'
|
||||||
DEFAULT_FACET = 'member_host'
|
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'
|
PKEY = 'itest-hostgroup'
|
||||||
DATA = {
|
DATA = {
|
||||||
'pkey': PKEY,
|
'pkey': PKEY,
|
||||||
@ -79,3 +88,31 @@ DATA5 = {
|
|||||||
('textarea', 'description', 'test-hostgroup5 desc modified'),
|
('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),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
@ -31,6 +31,15 @@ import ipatests.test_webui.data_sudo as sudo
|
|||||||
import pytest
|
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
|
@pytest.mark.tier1
|
||||||
class test_hostgroup(UI_driver):
|
class test_hostgroup(UI_driver):
|
||||||
|
|
||||||
@ -142,7 +151,108 @@ class test_hostgroup(UI_driver):
|
|||||||
## cleanup
|
## cleanup
|
||||||
## -------
|
## -------
|
||||||
self.delete(hostgroup.ENTITY, [hostgroup.DATA, hostgroup.DATA2,
|
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(HOST_ENTITY, [host.data2])
|
||||||
self.delete(hbac.RULE_ENTITY, [hbac.RULE_DATA])
|
self.delete(hbac.RULE_ENTITY, [hbac.RULE_DATA])
|
||||||
self.delete(sudo.RULE_ENTITY, [sudo.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])
|
||||||
|
@ -1009,7 +1009,8 @@ class UI_driver(object):
|
|||||||
s += '.table'
|
s += '.table'
|
||||||
return s
|
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.
|
Select record with given pkey in search table.
|
||||||
"""
|
"""
|
||||||
@ -1025,7 +1026,12 @@ class UI_driver(object):
|
|||||||
except WebDriverException as e:
|
except WebDriverException as e:
|
||||||
assert False, 'Can\'t click on checkbox label: %s \n%s' % (s, e)
|
assert False, 'Can\'t click on checkbox label: %s \n%s' % (s, e)
|
||||||
self.wait()
|
self.wait()
|
||||||
assert checkbox.is_selected(), 'Record was not checked: %s' % input_s
|
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()
|
self.wait()
|
||||||
|
|
||||||
def get_record_value(self, pkey, column, parent=None, table_name=None):
|
def get_record_value(self, pkey, column, parent=None, table_name=None):
|
||||||
|
Loading…
Reference in New Issue
Block a user