mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
UI tests for "ID Range": check modifying ID range with invalid or missing values
https://pagure.io/freeipa/issue/7709 Reviewed-By: Mohammad Rizwan Yusuf <myusuf@redhat.com> Reviewed-By: Petr Vobornik <pvoborni@redhat.com>
This commit is contained in:
@@ -133,6 +133,9 @@ class range_tasks(UI_driver):
|
||||
callback=self.check_range_type_mod
|
||||
)
|
||||
|
||||
def get_mod_form_data(self, **kwargs):
|
||||
return RangeModifyFormData(**kwargs)
|
||||
|
||||
def check_range_type_mod(self, range_type):
|
||||
if range_type == LOCAL_ID_RANGE:
|
||||
self.assert_disabled("[name=ipanttrusteddomainname]")
|
||||
@@ -145,7 +148,7 @@ class range_tasks(UI_driver):
|
||||
|
||||
class RangeAddFormData(object):
|
||||
"""
|
||||
Class for ID Range form data storing and serializing.
|
||||
Class for storing and serializing of new ID Range form data.
|
||||
|
||||
Warning: Only for data transformation.
|
||||
Do not put any additional logic here!
|
||||
@@ -184,3 +187,32 @@ class RangeAddFormData(object):
|
||||
str(self.secondary_base_rid)))
|
||||
|
||||
return serialized
|
||||
|
||||
|
||||
class RangeModifyFormData(object):
|
||||
"""
|
||||
Class for storing and serializing of modified ID Range form data.
|
||||
"""
|
||||
|
||||
def __init__(self, base_id=None, base_rid=None, secondary_base_rid=None,
|
||||
size=None):
|
||||
self.base_id = base_id
|
||||
self.base_rid = base_rid
|
||||
self.secondary_base_rid = secondary_base_rid
|
||||
self.size = size
|
||||
|
||||
def serialize(self):
|
||||
serialized = []
|
||||
|
||||
if self.base_id is not None:
|
||||
serialized.append(('textbox', 'ipabaseid', str(self.base_id)))
|
||||
if self.size is not None:
|
||||
serialized.append(('textbox', 'ipaidrangesize', str(self.size)))
|
||||
if self.base_rid is not None:
|
||||
serialized.append(('textbox', 'ipabaserid', str(self.base_rid)))
|
||||
if self.secondary_base_rid is not None:
|
||||
serialized.append(('textbox',
|
||||
'ipasecondarybaserid',
|
||||
str(self.secondary_base_rid)))
|
||||
|
||||
return serialized
|
||||
|
||||
@@ -264,3 +264,50 @@ class test_range(range_tasks):
|
||||
data = self.get_data(pkey, base_rid='', secondary_base_rid='')
|
||||
self.add_record(ENTITY, data, navigate=False)
|
||||
self.delete_record(pkey)
|
||||
|
||||
@screenshot
|
||||
def test_modify_range_with_invalid_or_missing_values(self):
|
||||
"""
|
||||
Test modification ID range with empty values of options
|
||||
"""
|
||||
cases = [
|
||||
# Empty values
|
||||
{
|
||||
'base_id': '',
|
||||
'base_rid': '',
|
||||
'secondary_base_rid': '',
|
||||
'size': '',
|
||||
},
|
||||
# Out of range
|
||||
{'base_id': 2 ** 32},
|
||||
{'size': 2 ** 32},
|
||||
{'base_rid': 2 ** 32},
|
||||
{'secondary_base_rid': 2 ** 32},
|
||||
# Invalid value
|
||||
{'base_id': 1.1},
|
||||
{'size': 1.1},
|
||||
{'base_rid': 1.1},
|
||||
{'secondary_base_rid': 1.1},
|
||||
]
|
||||
|
||||
self.navigate_to_entity(ENTITY)
|
||||
|
||||
data = self.get_data(PKEY)
|
||||
self.add_record(ENTITY, data, navigate=False)
|
||||
self.navigate_to_record(PKEY)
|
||||
|
||||
for values in cases:
|
||||
form_data = self.get_mod_form_data(**values)
|
||||
|
||||
self.fill_fields(form_data.serialize(), undo=True)
|
||||
self.assert_facet_button_enabled('save')
|
||||
self.facet_button_click('save')
|
||||
|
||||
self.assert_notification(
|
||||
type='danger',
|
||||
assert_text='Input form contains invalid or missing values.'
|
||||
)
|
||||
self.close_notifications()
|
||||
self.facet_button_click('revert')
|
||||
|
||||
self.delete_record(PKEY)
|
||||
|
||||
@@ -768,7 +768,8 @@ class UI_driver:
|
||||
parent = self.get_form()
|
||||
tb = self.find(selector, By.CSS_SELECTOR, parent, strict=True)
|
||||
try:
|
||||
tb.clear()
|
||||
tb.send_keys(Keys.CONTROL + 'a')
|
||||
tb.send_keys(Keys.DELETE)
|
||||
tb.send_keys(value)
|
||||
except InvalidElementStateException as e:
|
||||
msg = "Invalid Element State, el: %s, value: %s, error: %s" % (selector, value, e)
|
||||
|
||||
Reference in New Issue
Block a user