diff options
author | Lenka Doudova <ldoudova@redhat.com> | 2016-02-19 14:59:19 +0100 |
---|---|---|
committer | Martin Basti <mbasti@redhat.com> | 2016-03-11 11:52:25 +0100 |
commit | 904db149e9f99b9a318441bc50972a8336a5b4c0 (patch) | |
tree | 826159e41d64c5362f3a103ef9afeb54c87d8ac1 /ipatests/test_webui | |
parent | 67b806e5d99bd6f1071bb6269a1efe07cc14d432 (diff) | |
download | freeipa-904db149e9f99b9a318441bc50972a8336a5b4c0.tar.gz freeipa-904db149e9f99b9a318441bc50972a8336a5b4c0.tar.xz freeipa-904db149e9f99b9a318441bc50972a8336a5b4c0.zip |
WebUI test: ID views
Provides missing test coverage for ID views web UI.
Reviewed-By: Pavel Vomacka <pvomacka@redhat.com>
Diffstat (limited to 'ipatests/test_webui')
-rw-r--r-- | ipatests/test_webui/data_idviews.py | 20 | ||||
-rw-r--r-- | ipatests/test_webui/test_idviews.py | 127 | ||||
-rw-r--r-- | ipatests/test_webui/ui_driver.py | 44 |
3 files changed, 184 insertions, 7 deletions
diff --git a/ipatests/test_webui/data_idviews.py b/ipatests/test_webui/data_idviews.py new file mode 100644 index 000000000..9d62f33fe --- /dev/null +++ b/ipatests/test_webui/data_idviews.py @@ -0,0 +1,20 @@ +# +# Copyright (C) 2015 FreeIPA Contributors see COPYING for license +# + +ENTITY = 'idview' +USER_FACET = 'idoverrideuser' +GROUP_FACET = 'idoverridegroup' +HOST_FACET = 'appliedtohosts' + +PKEY = 'itest-view' +DATA = { + 'pkey': PKEY, + 'add': [ + ('textbox', 'cn', PKEY), + ('textarea', 'description', 'Description of ID view'), + ], + 'mod': [ + ('textarea', 'description', 'Different description'), + ], +} diff --git a/ipatests/test_webui/test_idviews.py b/ipatests/test_webui/test_idviews.py new file mode 100644 index 000000000..b7f5c312e --- /dev/null +++ b/ipatests/test_webui/test_idviews.py @@ -0,0 +1,127 @@ +# +# Copyright (C) 2015 FreeIPA Contributors see COPYING for license +# + +from ipatests.test_webui.ui_driver import UI_driver +from ipatests.test_webui.ui_driver import screenshot +import ipatests.test_webui.data_idviews as idview +import ipatests.test_webui.data_user as user +import ipatests.test_webui.data_group as group +import ipatests.test_webui.data_hostgroup as hostgroup +from ipatests.test_webui.test_host import host_tasks, ENTITY as HOST_ENTITY +import pytest + +DATA_USER = { + 'pkey': user.PKEY, + 'add': [ + ('combobox', 'ipaanchoruuid', user.PKEY), + ('textbox', 'uid', 'iduser'), + ('textbox', 'gecos', 'id user'), + ('textbox', 'uidnumber', 1), + ('textbox', 'gidnumber', 1), + ('textbox', 'loginshell', 'shell'), + ('textbox', 'homedirectory', 'home'), + ('textarea', 'description', 'desc'), + ], + 'mod': [ + ('textbox', 'uid', 'moduser'), + ('textbox', 'uidnumber', 3), + ], +} + +DATA_GROUP = { + 'pkey': group.PKEY, + 'add': [ + ('combobox', 'ipaanchoruuid', group.PKEY), + ('textbox', 'cn', 'idgroup'), + ('textbox', 'gidnumber', 2), + ('textarea', 'description', 'desc'), + ], + 'mod': [ + ('textbox', 'cn', 'modgroup'), + ('textbox', 'gidnumber', 3), + ], +} + + +@pytest.mark.tier1 +class test_idviews(UI_driver): + + @screenshot + def test_crud(self): + """ + Basic CRUD: ID view + """ + self.init_app() + self.basic_crud( + idview.ENTITY, idview.DATA, default_facet=idview.USER_FACET) + + @screenshot + def test_overrides(self): + """ + User and group overrides + """ + self.init_app() + + self.add_record(user.ENTITY, user.DATA, navigate=False) + self.add_record(group.ENTITY, group.DATA) + self.add_record(idview.ENTITY, idview.DATA) + + self.navigate_to_record(idview.PKEY) + parent_entity = 'idview' + + # user override + self.add_record(parent_entity, DATA_USER, facet=idview.USER_FACET) + self.navigate_to_record(user.PKEY) + self.mod_record(idview.USER_FACET, DATA_USER) + self.delete_action(idview.ENTITY, user.PKEY) + + # group override + self.navigate_to_record(idview.PKEY) + self.switch_to_facet(idview.GROUP_FACET) + self.add_record(parent_entity, DATA_GROUP, facet=idview.GROUP_FACET) + self.navigate_to_record(group.PKEY) + self.mod_record(idview.GROUP_FACET, DATA_GROUP) + self.delete_action(idview.ENTITY, group.PKEY) + + # cleanup + self.delete(idview.ENTITY, [idview.DATA]) + self.delete(user.ENTITY, [user.DATA]) + self.delete(group.ENTITY, [group.DATA]) + + @screenshot + def test_hosts(self): + """ + Apply to hosts and host groups + """ + self.init_app() + host = host_tasks() + host.setup(self.driver, self.config) + + self.add_record(HOST_ENTITY, host.data) + self.add_record(hostgroup.ENTITY, hostgroup.DATA) + self.navigate_to_record(hostgroup.PKEY) + self.add_associations([host.pkey]) + self.add_record(idview.ENTITY, idview.DATA) + + self.navigate_to_record(idview.PKEY) + self.switch_to_facet(idview.HOST_FACET) + parent_entity = 'idview' + + # apply to host + self.add_associations( + [host.pkey], facet='appliedtohosts', facet_btn='idview_apply') + self.delete_record([host.pkey], facet_btn='idview_unapply') + + # apply to hostgroup + self.add_associations( + [hostgroup.PKEY], facet_btn='idview_apply_hostgroups', + member_pkeys=[host.pkey]) + self.delete_associations( + [hostgroup.PKEY], facet_btn='idview_unapply_hostgroups', + member_pkeys=[host.pkey]) + + # cleanup + self.delete(idview.ENTITY, [idview.DATA]) + self.delete(hostgroup.ENTITY, [hostgroup.DATA]) + self.delete(HOST_ENTITY, [host.data]) diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py index ad3a9100f..8611ad3ca 100644 --- a/ipatests/test_webui/ui_driver.py +++ b/ipatests/test_webui/ui_driver.py @@ -983,7 +983,9 @@ class UI_driver(object): link.click() self.wait_for_request() - def delete_record(self, pkeys, fields=None, parent=None, table_name=None): + def delete_record( + self, pkeys, fields=None, parent=None, table_name=None, + facet_btn='remove'): """ Delete records with given pkeys in currently opened search table. """ @@ -1003,9 +1005,9 @@ class UI_driver(object): if table_name and parent: s = self.get_table_selector(table_name) table = self.find(s, By.CSS_SELECTOR, parent, strict=True) - self.button_click('remove', table) + self.button_click(facet_btn, table) else: - self.facet_button_click('remove') + self.facet_button_click(facet_btn) if fields: self.fill_fields(fields) self.dialog_button_click('ok') @@ -1323,14 +1325,15 @@ class UI_driver(object): self.dialog_button_click('add') self.wait_for_request() - def add_associations(self, pkeys, facet=None, delete=False): + def prepare_associations( + self, pkeys, facet=None, facet_btn='add', member_pkeys=None): """ - Add associations + Helper function for add_associations and delete_associations """ if facet: self.switch_to_facet(facet) - self.facet_button_click('add') + self.facet_button_click(facet_btn) self.wait() self.wait_for_request() @@ -1341,12 +1344,39 @@ class UI_driver(object): self.dialog_button_click('add') self.wait_for_request() - for key in pkeys: + if member_pkeys: + check_pkeys = member_pkeys + else: + check_pkeys = pkeys + + return check_pkeys + + def add_associations( + self, pkeys, facet=None, delete=False, facet_btn='add', + member_pkeys=None): + """ + Add associations + """ + check_pkeys = self.prepare_associations( + pkeys, facet, facet_btn, member_pkeys) + + for key in check_pkeys: self.assert_record(key) if delete: self.delete_record(key) self.assert_record(key, negative=True) + def delete_associations( + self, pkeys, facet=None, facet_btn='remove', member_pkeys=None): + """ + Remove associations + """ + check_pkeys = self.prepare_associations( + pkeys, facet, facet_btn, member_pkeys) + + for key in check_pkeys: + self.assert_record(key, negative=True) + def add_table_associations(self, table_name, pkeys, parent=False, delete=False): """ Add value to table (association|rule|...) |