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:
Serhii Tsymbaliuk
2018-09-27 14:42:44 +02:00
parent dde4d19f7b
commit 70f51c0db2
3 changed files with 82 additions and 2 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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)