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

Reply via email to