Test cases according to: http://www.freeipa.org/page/V3/CA-less_install
https://fedorahosted.org/freeipa/ticket/3830 Note: tests will fail without my patch #442. -- Petr Vobornik
From d0e618d1c6893418cd07f1fe6dba741d3a85af27 Mon Sep 17 00:00:00 2001 From: Petr Vobornik <[email protected]> Date: Thu, 15 Aug 2013 15:49:27 +0200 Subject: [PATCH] Web UI integration tests: CA-less Test cases according to: http://www.freeipa.org/page/V3/CA-less_install https://fedorahosted.org/freeipa/ticket/3830 --- ipatests/test_webui/test_host.py | 23 +++++++++++++++++++++ ipatests/test_webui/test_navigation.py | 6 ++++++ ipatests/test_webui/test_service.py | 37 ++++++++++++++++++++++++++++++++++ ipatests/test_webui/ui_driver.py | 32 +++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+) diff --git a/ipatests/test_webui/test_host.py b/ipatests/test_webui/test_host.py index 962ffb170b0f7a5ad996f1192fa14be286458e13..806f2b10409c6b6e39b7ba17d2f7c3bd34306ecc 100644 --- a/ipatests/test_webui/test_host.py +++ b/ipatests/test_webui/test_host.py @@ -175,6 +175,29 @@ class test_host(host_tasks): self.navigate_to_entity(ENTITY, 'search') self.delete_record(self.pkey, self.data.get('del')) + def test_ca_less(self): + """ + Test host certificate actions in CA-less install + http://www.freeipa.org/page/V3/CA-less_install + """ + if self.has_ca(): + self.skip('CA is installed') + + self.init_app() + self.add_record(ENTITY, self.data) + self.navigate_to_record(self.pkey) + + panel = 'cert_actions' + self.assert_action_panel_action(panel, 'request_cert', visible=False) + self.assert_action_panel_action(panel, 'revoke_cert', visible=False) + self.assert_action_panel_action(panel, 'restore_cert', visible=False) + + self.assert_action_panel_action(panel, 'view_cert', enabled=False) + self.assert_action_panel_action(panel, 'get_cert', enabled=False) + + self.navigate_by_breadcrumb('Hosts') + self.delete_record(self.pkey, self.data.get('del')) + def test_associations(self): """ Host direct associations diff --git a/ipatests/test_webui/test_navigation.py b/ipatests/test_webui/test_navigation.py index 021495b44ada030b73202a0e143716bc4d5b383a..419be19db4815e54d366c95d4315d4bf35d9502a 100644 --- a/ipatests/test_webui/test_navigation.py +++ b/ipatests/test_webui/test_navigation.py @@ -106,8 +106,12 @@ class test_navigation(UI_driver): self.navigate_by_menu('identity/dns', False) self.navigate_by_menu('identity/dns/dnsconfig', False) self.navigate_by_menu('identity/dns/dnszone', False) + else: + self.assert_menu_item('identity/dns', False) if self.has_ca(): self.navigate_by_menu('identity/cert', False) + else: + self.assert_menu_item('identity/cert', False) self.navigate_by_menu('identity/realmdomains', False) self.navigate_by_menu('policy') self.navigate_by_menu('policy/hbac', False) @@ -138,6 +142,8 @@ class test_navigation(UI_driver): self.navigate_by_menu('ipaserver/trusts', False) self.navigate_by_menu('ipaserver/trusts/trust', False) self.navigate_by_menu('ipaserver/trusts/trustconfig', False) + else: + self.assert_menu_item('ipaserver/trusts', False) self.navigate_by_menu('ipaserver/config', False) def assert_e_url(self, url, e): diff --git a/ipatests/test_webui/test_service.py b/ipatests/test_webui/test_service.py index 81d638f1c60d581745d5b08d119d70c841f3a173..fc64c6db5d5b79e7e7c2e988fa0f0c4c61b911a9 100644 --- a/ipatests/test_webui/test_service.py +++ b/ipatests/test_webui/test_service.py @@ -128,3 +128,40 @@ class test_service(sevice_tasks): # cleanup self.navigate_to_entity(ENTITY, 'search') self.delete_record(pkey, data.get('del')) + + def test_ca_less(self): + """ + Test service certificate actions in CA-less install + http://www.freeipa.org/page/V3/CA-less_install + """ + if self.has_ca(): + self.skip('CA is installed') + + self.init_app() + + data = self.prep_data() + pkey = data.get('pkey') + + self.add_record(ENTITY, data) + self.navigate_to_record(pkey) + + panel = 'cert_actions' + self.assert_action_panel_action(panel, 'request_cert', visible=False) + self.assert_action_panel_action(panel, 'revoke_cert', visible=False) + self.assert_action_panel_action(panel, 'restore_cert', visible=False) + + self.assert_action_panel_action(panel, 'view_cert', enabled=False) + self.assert_action_panel_action(panel, 'get_cert', enabled=False) + + self.navigate_by_breadcrumb('Services') + self.delete_record(pkey, data.get('del')) + + # test HTTP, which should have cert set by default and so 'view' and 'get' + # actions visible and enabled + host = self.config.get('ipa_server') + realm = self.config.get('ipa_realm') + pkey = 'HTTP/%s@%s' % (host, realm) + + self.navigate_to_record(pkey) + self.assert_action_panel_action(panel, 'view_cert') + self.assert_action_panel_action(panel, 'get_cert') diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py index 12d7e2320729039c3ab29ef3ead9fcbe3c1e0d25..9653b613261305bac2a0044d25bf272e2a73e42a 100644 --- a/ipatests/test_webui/ui_driver.py +++ b/ipatests/test_webui/ui_driver.py @@ -1522,3 +1522,35 @@ class UI_driver(object): """ for table in tables: self.assert_table_button_enabled('add', table, enabled) + + def assert_menu_item(self, path, present=True): + """ + Assert that menu link is not rendered or visible + """ + s = ".navigation a[href='#%s']" % path + link = self.find(s, By.CSS_SELECTOR) + is_present = link is not None and link.is_displayed() + assert present == is_present, ('Invalid state of navigation item: %s. ' + 'Presence expected: %s') % (path, str(present)) + + def assert_action_panel_action(self, panel_name, action, visible=True, enabled=True): + """ + Assert that action panel action is visible/hidden, and enabled/disabled + + Enabled is checked only if action is visible. + """ + s = "div[data-name='%s'].action-panel" % panel_name + s += " a[data-name='%s']" % action + link = self.find(s, By.CSS_SELECTOR) + + is_visible = link is not None and link.is_displayed() + is_enabled = False + if is_visible: + is_enabled = 'disabled' not in link.get_attribute("class").split(' ') + + assert is_visible == visible, ('Invalid visibility of action button: %s. ' + 'Expected: %s') % (action, str(visible)) + + if is_visible: + assert is_enabled == enabled, ('Invalid enabled state of action button %s. ' + 'Expected: %s') % (action, str(visible)) -- 1.8.3.1
_______________________________________________ Freeipa-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/freeipa-devel
