On 3.7.2014 08:13, Fraser Tweedale wrote:
On Wed, Jul 02, 2014 at 04:14:13PM +0200, Petr Vobornik wrote:
https://fedorahosted.org/freeipa/ticket/4418

according to latest
proposal:http://www.redhat.com/archives/freeipa-devel/2014-June/msg00839.html
--
Petr Vobornik

Haven't run the webui tests but lines up with the proposal and looks
very nice!

ACK if webui tests pass.

I've run the complete test suite and discovered that I forgot to modify 2 other tests. Also there was an existing fail in test_navigation in DNS-less installation.

All fixed, updated patch attached.


 From 97cc94163e8ae57058b07741c7d70e44697c113f Mon Sep 17 00:00:00 2001
From: Petr Vobornik <pvobo...@redhat.com>
Date: Wed, 2 Jul 2014 15:09:22 +0200
Subject: [PATCH] webui: new navigation structure

https://fedorahosted.org/freeipa/ticket/4418
---
  install/ui/src/freeipa/certificate.js          |   2 +-
  install/ui/src/freeipa/dns.js                  |   2 +-
  install/ui/src/freeipa/navigation/menu_spec.js | 195 +++++++++++++++----------
  install/ui/test/data/ipa_init.json             |   2 +
  ipalib/plugins/internal.py                     |   2 +
  ipatests/test_webui/test_navigation.py         |  62 +++++---
  ipatests/test_webui/ui_driver.py               |   2 +-
  7 files changed, 160 insertions(+), 107 deletions(-)

diff --git a/install/ui/src/freeipa/certificate.js 
b/install/ui/src/freeipa/certificate.js
index 
01dfee2b64c14f487b66b91d449f63b6415dea69..6a11d959398517db6f720a36ff2a323e1d0c74a7
 100755
--- a/install/ui/src/freeipa/certificate.js
+++ b/install/ui/src/freeipa/certificate.js
@@ -1293,7 +1293,7 @@ IPA.cert.cert_update_policy = function(spec) {

  exp.remove_menu_item = function() {
      if (!IPA.cert.is_enabled()) {
-        menu.remove_item('identity/cert');
+        menu.remove_item('authentication/cert');
      }
  };

diff --git a/install/ui/src/freeipa/dns.js b/install/ui/src/freeipa/dns.js
index 
c7143ca91fef9bbc372654080fe899be1ae8367f..a566ccf61adcf4f688ac803bf5e3658b4f3a0253
 100644
--- a/install/ui/src/freeipa/dns.js
+++ b/install/ui/src/freeipa/dns.js
@@ -2543,7 +2543,7 @@ IPA.network_validator = function(spec) {

  exp.remove_menu_item = function() {
      if (!IPA.dns_enabled) {
-        menu.remove_item('identity/dns');
+        menu.remove_item('network_services/dns');
      }
  };

diff --git a/install/ui/src/freeipa/navigation/menu_spec.js 
b/install/ui/src/freeipa/navigation/menu_spec.js
index 
01738cbe60b10bc0f1671093fc1616980780bac1..9182d11bf56c73e1fce724d438fe2211105b75ad
 100644
--- a/install/ui/src/freeipa/navigation/menu_spec.js
+++ b/install/ui/src/freeipa/navigation/menu_spec.js
@@ -43,101 +43,134 @@ var nav = {};
                  { entity: 'netgroup' },
                  { entity: 'service' },
                  {
+                    name: 'automember',
+                    label: '@i18n:tabs.automember',
+                    children: [
+                        {
+                            name: 'amgroup',
+                            entity: 'automember',
+                            facet: 'searchgroup',
+                            label: '@i18n:objects.automember.usergrouprules',
+                            children: [
+                                {
+                                    entity: 'automember',
+                                    facet: 'usergrouprule',
+                                    hidden: true
+                                }
+                            ]
+                        },
+                        {
+                            name: 'amhostgroup',
+                            entity: 'automember',
+                            facet: 'searchhostgroup',
+                            label: '@i18n:objects.automember.hostgrouprules',
+                            children: [
+                                {
+                                    entity: 'automember',
+                                    facet: 'hostgrouprule',
+                                    hidden: true
+                                }
+                            ]
+                        }
+                    ]
+                }
+            ]
+        },
+        {
+            name: 'policy',
+            label: '@i18n:tabs.policy',
+            children: [
+                {
+                    name: 'hbac',
+                    label: '@i18n:tabs.hbac',
+                    children: [
+                        { entity: 'hbacrule' },
+                        { entity: 'hbacsvc' },
+                        { entity: 'hbacsvcgroup' },
+                        { entity: 'hbactest' }
+                    ]
+                },
+                {
+                    name: 'sudo',
+                    label: '@i18n:tabs.sudo',
+                    children: [
+                        { entity: 'sudorule' },
+                        { entity: 'sudocmd' },
+                        { entity: 'sudocmdgroup' }
+                    ]
+                },
+                { entity: 'selinuxusermap' },
+                { entity: 'pwpolicy' },
+                { entity: 'krbtpolicy' }
+            ]
+        },
+        {
+            name: 'authentication',
+            label: '@i18n:tabs.authentication',
+            children: [
+                { entity: 'cert', label: '@i18n:tabs.cert' },
+                { entity: 'otptoken' },
+                { entity: 'radiusproxy' }
+            ]
+        },
+        {
+            name: 'network_services',
+            label: '@i18n:tabs.network_services',
+            children: [
+                {
+                    name:'automount',
+                    label: '@i18n:tabs.automount',
+                    entity: 'automountlocation',
+                    children: [
+                        { entity: 'automountlocation', hidden: true },
+                        { entity: 'automountmap', hidden: true },
+                        { entity: 'automountkey', hidden: true }
+                    ]
+                },
+                {
                      name:'dns',
                      label: '@i18n:tabs.dns',
                      children: [
                          {
                              entity: 'dnszone',
                              children: [
-                                { entity: 'dnsrecord', hidden:true }
+                                { entity: 'dnsrecord', hidden: true }
                              ]
                          },
                          { entity: 'dnsforwardzone' },
                          { entity: 'dnsconfig' }
                      ]
+                }
+            ]
+        },
+        {
+            name: 'ipaserver',
+            label: '@i18n:tabs.ipaserver',
+            children: [
+                {
+                    name: 'rbac',
+                    label: '@i18n:tabs.role',
+                    children: [
+                        { entity: 'role' },
+                        { entity: 'privilege' },
+                        { entity: 'permission' },
+                        { entity: 'selfservice' },
+                        { entity: 'delegation' }
+                    ]
                  },
-                { entity: 'cert', label: '@i18n:tabs.cert' },
+                { entity: 'idrange' },
                  { entity: 'realmdomains' },
-                { entity: 'otptoken' }
+                {
+                    name: 'trusts',
+                    label: '@i18n:tabs.trust',
+                    children: [
+                        { entity: 'trust' },
+                        { entity: 'trustconfig' }
+                    ]
+                },
+                { entity: 'config' }
              ]
-        },
-        {name: 'policy', label: '@i18n:tabs.policy', children: [
-            {name: 'hbac', label: '@i18n:tabs.hbac', children: [
-                {entity: 'hbacrule'},
-                {entity: 'hbacsvc'},
-                {entity: 'hbacsvcgroup'},
-                {entity: 'hbactest'}
-            ]},
-            {name: 'sudo', label: '@i18n:tabs.sudo', children: [
-                {entity: 'sudorule'},
-                {entity: 'sudocmd'},
-                {entity: 'sudocmdgroup'}
-            ]},
-            {
-                name:'automount',
-                label: '@i18n:tabs.automount',
-                entity: 'automountlocation',
-                children:[
-                 {entity: 'automountlocation', hidden:true},
-                 {entity: 'automountmap', hidden: true},
-                 {entity: 'automountkey', hidden: true}]
-            },
-            {entity: 'pwpolicy'},
-            {entity: 'krbtpolicy'},
-            {entity: 'selinuxusermap'},
-            {
-                name: 'automember',
-                label: '@i18n:tabs.automember',
-                children: [
-                    {
-                        name: 'amgroup',
-                        entity: 'automember',
-                        facet: 'searchgroup',
-                        label: '@i18n:objects.automember.usergrouprules',
-                        children: [
-                            {
-                                entity: 'automember',
-                                facet: 'usergrouprule',
-                                hidden: true
-                            }
-                        ]
-                    },
-                    {
-                        name: 'amhostgroup',
-                        entity: 'automember',
-                        facet: 'searchhostgroup',
-                        label: '@i18n:objects.automember.hostgrouprules',
-                        children: [
-                            {
-                                entity: 'automember',
-                                facet: 'hostgrouprule',
-                                hidden: true
-                            }
-                        ]
-                    }
-                ]
-            }
-        ]},
-        {name: 'ipaserver', label: '@i18n:tabs.ipaserver', children: [
-            {name: 'rolebased', label: '@i18n:tabs.role', children: [
-                {entity: 'role'},
-                {entity: 'privilege'},
-                {entity: 'permission'}
-            ]},
-            {entity: 'selfservice'},
-            {entity: 'delegation'},
-            {entity: 'idrange'},
-            {
-                name: 'trusts',
-                label: '@i18n:tabs.trust',
-                children:[
-                    {entity: 'trust'},
-                    {entity: 'trustconfig'}
-                ]
-            },
-            {entity: 'radiusproxy'},
-            {entity: 'config'}
-        ]}
+        }
      ]
  };

diff --git a/install/ui/test/data/ipa_init.json 
b/install/ui/test/data/ipa_init.json
index 
6c387690aac0f85dce7f32f9cec84d55d200f40c..284c0a643391a23f8702ed99078acd1f0250cdf6
 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -553,6 +553,7 @@
                      },
                      "tabs": {
                          "audit": "Audit",
+                        "authentication": "Authentication",
                          "automember": "Automember",
                          "automount": "Automount",
                          "cert": "Certificates",
@@ -560,6 +561,7 @@
                          "hbac": "Host Based Access Control",
                          "identity": "Identity",
                          "ipaserver": "IPA Server",
+                        "network_services": "Network Services",
                          "policy": "Policy",
                          "role": "Role Based Access Control",
                          "sudo": "Sudo",
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 
d95794cc6806dc44fd533f277d02b330c938f99f..4d9448ab065d5b261d74ef4f126fed07eced4d5e
 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -698,6 +698,7 @@ class i18n_messages(Command):
          },
          "tabs": {
              "audit": _("Audit"),
+            "authentication": _("Authentication"),
              "automember": _("Automember"),
              "automount": _("Automount"),
              "cert": _("Certificates"),
@@ -705,6 +706,7 @@ class i18n_messages(Command):
              "hbac": _("Host Based Access Control"),
              "identity": _("Identity"),
              "ipaserver": _("IPA Server"),
+            "network_services": _("Network Services"),
              "policy": _("Policy"),
              "role": _("Role Based Access Control"),
              "sudo": _("Sudo"),
diff --git a/ipatests/test_webui/test_navigation.py 
b/ipatests/test_webui/test_navigation.py
index 
caf291a908ec2fc9c4e1a6ee8b2f73f48924f23e..a9adb2327d5e195e3505b9657c5a6e62a2fce44b
 100644
--- a/ipatests/test_webui/test_navigation.py
+++ b/ipatests/test_webui/test_navigation.py
@@ -37,6 +37,8 @@ ENTITIES = [
      # TODO: dnsrecord
      'dnsconfig',
      'cert',
+    'otptoken',
+    'radiusproxy',
      'realmdomains',
      'hbacrule',
      'hbacsvc',
@@ -99,6 +101,7 @@ class test_navigation(UI_driver):

          self.init_app()

+        # Identity
          # don't start by users (default)
          self.navigate_by_menu('identity/group', False)
          self.navigate_by_menu('identity/user', False)
@@ -106,18 +109,11 @@ class test_navigation(UI_driver):
          self.navigate_by_menu('identity/hostgroup', False)
          self.navigate_by_menu('identity/netgroup', False)
          self.navigate_by_menu('identity/service', False)
-        if self.has_dns():
-            self.navigate_by_menu('identity/dns/dnsconfig', True)
-            self.navigate_by_menu('identity/dns', False)
-            self.navigate_by_menu('identity/dns/dnszone', False)
-            self.navigate_by_menu('identity/dns/dnsforwardzone')
-        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('identity/automember', False)
+        self.navigate_by_menu('identity/automember/amhostgroup')
+        self.navigate_by_menu('identity/automember/amgroup')
+
+        # Policy
          self.navigate_by_menu('policy')
          self.navigate_by_menu('policy/hbac', False)
          self.navigate_by_menu('policy/hbac/hbacsvc', False)
@@ -128,21 +124,40 @@ class test_navigation(UI_driver):
          self.navigate_by_menu('policy/sudo/sudorule', False)
          self.navigate_by_menu('policy/sudo/sudocmd')
          self.navigate_by_menu('policy/sudo/sudocmdgroup')
-        self.navigate_by_menu('policy/automount', False)
+        self.navigate_by_menu('policy/selinuxusermap', False)
          self.navigate_by_menu('policy/pwpolicy', False)
          self.navigate_by_menu('policy/krbtpolicy', False)
-        self.navigate_by_menu('policy/selinuxusermap', False)
-        self.navigate_by_menu('policy/automember', False)
-        self.navigate_by_menu('policy/automember/amhostgroup')
-        self.navigate_by_menu('policy/automember/amgroup')
+
+        # Authentication
+        self.navigate_by_menu('authentication')
+        self.navigate_by_menu('authentication/radiusproxy', False)
+        self.navigate_by_menu('authentication/otptoken', False)
+        if self.has_ca():
+            self.navigate_by_menu('authentication/cert', False)
+        else:
+            self.assert_menu_item('authentication/cert', False)
+
+        # Network Services
+        self.navigate_by_menu('network_services')
+        self.navigate_by_menu('network_services/automount')
+        if self.has_dns():
+            self.navigate_by_menu('network_services/dns/dnsconfig', True)
+            self.navigate_by_menu('network_services/dns', False)
+            self.navigate_by_menu('network_services/dns/dnszone', False)
+            self.navigate_by_menu('network_services/dns/dnsforwardzone')
+        else:
+            self.assert_menu_item('network_services/dns', False)
+
+        # IPA Server
          self.navigate_by_menu('ipaserver')
-        self.navigate_by_menu('ipaserver/rolebased', False)
-        self.navigate_by_menu('ipaserver/rolebased/privilege', False)
-        self.navigate_by_menu('ipaserver/rolebased/role')
-        self.navigate_by_menu('ipaserver/rolebased/permission')
-        self.navigate_by_menu('ipaserver/selfservice', False)
-        self.navigate_by_menu('ipaserver/delegation', False)
+        self.navigate_by_menu('ipaserver/rbac', False)
+        self.navigate_by_menu('ipaserver/rbac/privilege', False)
+        self.navigate_by_menu('ipaserver/rbac/role')
+        self.navigate_by_menu('ipaserver/rbac/permission')
+        self.navigate_by_menu('ipaserver/rbac/selfservice')
+        self.navigate_by_menu('ipaserver/rbac/delegation')
          self.navigate_by_menu('ipaserver/idrange', False)
+        self.navigate_by_menu('ipaserver/realmdomains', False)
          if self.has_trusts():
              self.navigate_by_menu('ipaserver/trusts', False)
              self.navigate_by_menu('ipaserver/trusts/trust', False)
@@ -151,6 +166,7 @@ class test_navigation(UI_driver):
              self.assert_menu_item('ipaserver/trusts', False)
          self.navigate_by_menu('ipaserver/config', False)

+
      def assert_e_url(self, url, e):
          """
          Assert correct url for entity
diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py
index 
047009a295838d0053c9c0e378e97b480db6a0e7..a1371806c2f11a42534cfcac330683e2a35853d8
 100644
--- a/ipatests/test_webui/ui_driver.py
+++ b/ipatests/test_webui/ui_driver.py
@@ -427,7 +427,7 @@ class UI_driver(object):

          s = ".navbar a[href='#%s']" % item
          link = self.find(s, By.CSS_SELECTOR, strict=True)
-        assert link.is_displayed(), 'Navigation link is not displayed'
+        assert link.is_displayed(), 'Navigation link is not displayed: %s' % 
item
          link.click()
          self.wait_for_request()
          self.wait_for_request(0.4)
--
1.9.0



--
Petr Vobornik
From 8ee67b897f68a4120e1f25a628eff4b03c185166 Mon Sep 17 00:00:00 2001
From: Petr Vobornik <pvobo...@redhat.com>
Date: Wed, 2 Jul 2014 15:09:22 +0200
Subject: [PATCH] webui: new navigation structure

https://fedorahosted.org/freeipa/ticket/4418
---
 install/ui/src/freeipa/certificate.js          |   2 +-
 install/ui/src/freeipa/dns.js                  |   2 +-
 install/ui/src/freeipa/navigation/menu_spec.js | 195 +++++++++++++++----------
 install/ui/test/data/ipa_init.json             |   2 +
 ipalib/plugins/internal.py                     |   2 +
 ipatests/test_webui/test_automember.py         |   2 +-
 ipatests/test_webui/test_dns.py                |   2 +-
 ipatests/test_webui/test_navigation.py         |  63 +++++---
 ipatests/test_webui/ui_driver.py               |   2 +-
 9 files changed, 163 insertions(+), 109 deletions(-)

diff --git a/install/ui/src/freeipa/certificate.js b/install/ui/src/freeipa/certificate.js
index 01dfee2b64c14f487b66b91d449f63b6415dea69..6a11d959398517db6f720a36ff2a323e1d0c74a7 100755
--- a/install/ui/src/freeipa/certificate.js
+++ b/install/ui/src/freeipa/certificate.js
@@ -1293,7 +1293,7 @@ IPA.cert.cert_update_policy = function(spec) {
 
 exp.remove_menu_item = function() {
     if (!IPA.cert.is_enabled()) {
-        menu.remove_item('identity/cert');
+        menu.remove_item('authentication/cert');
     }
 };
 
diff --git a/install/ui/src/freeipa/dns.js b/install/ui/src/freeipa/dns.js
index 11285a9f095bba35e16c1340fc272e824d699a15..7806617407188456efecc606138bcff1f6b0a92f 100644
--- a/install/ui/src/freeipa/dns.js
+++ b/install/ui/src/freeipa/dns.js
@@ -2530,7 +2530,7 @@ IPA.network_validator = function(spec) {
 
 exp.remove_menu_item = function() {
     if (!IPA.dns_enabled) {
-        menu.remove_item('identity/dns');
+        menu.remove_item('network_services/dns');
     }
 };
 
diff --git a/install/ui/src/freeipa/navigation/menu_spec.js b/install/ui/src/freeipa/navigation/menu_spec.js
index 01738cbe60b10bc0f1671093fc1616980780bac1..9182d11bf56c73e1fce724d438fe2211105b75ad 100644
--- a/install/ui/src/freeipa/navigation/menu_spec.js
+++ b/install/ui/src/freeipa/navigation/menu_spec.js
@@ -43,101 +43,134 @@ var nav = {};
                 { entity: 'netgroup' },
                 { entity: 'service' },
                 {
+                    name: 'automember',
+                    label: '@i18n:tabs.automember',
+                    children: [
+                        {
+                            name: 'amgroup',
+                            entity: 'automember',
+                            facet: 'searchgroup',
+                            label: '@i18n:objects.automember.usergrouprules',
+                            children: [
+                                {
+                                    entity: 'automember',
+                                    facet: 'usergrouprule',
+                                    hidden: true
+                                }
+                            ]
+                        },
+                        {
+                            name: 'amhostgroup',
+                            entity: 'automember',
+                            facet: 'searchhostgroup',
+                            label: '@i18n:objects.automember.hostgrouprules',
+                            children: [
+                                {
+                                    entity: 'automember',
+                                    facet: 'hostgrouprule',
+                                    hidden: true
+                                }
+                            ]
+                        }
+                    ]
+                }
+            ]
+        },
+        {
+            name: 'policy',
+            label: '@i18n:tabs.policy',
+            children: [
+                {
+                    name: 'hbac',
+                    label: '@i18n:tabs.hbac',
+                    children: [
+                        { entity: 'hbacrule' },
+                        { entity: 'hbacsvc' },
+                        { entity: 'hbacsvcgroup' },
+                        { entity: 'hbactest' }
+                    ]
+                },
+                {
+                    name: 'sudo',
+                    label: '@i18n:tabs.sudo',
+                    children: [
+                        { entity: 'sudorule' },
+                        { entity: 'sudocmd' },
+                        { entity: 'sudocmdgroup' }
+                    ]
+                },
+                { entity: 'selinuxusermap' },
+                { entity: 'pwpolicy' },
+                { entity: 'krbtpolicy' }
+            ]
+        },
+        {
+            name: 'authentication',
+            label: '@i18n:tabs.authentication',
+            children: [
+                { entity: 'cert', label: '@i18n:tabs.cert' },
+                { entity: 'otptoken' },
+                { entity: 'radiusproxy' }
+            ]
+        },
+        {
+            name: 'network_services',
+            label: '@i18n:tabs.network_services',
+            children: [
+                {
+                    name:'automount',
+                    label: '@i18n:tabs.automount',
+                    entity: 'automountlocation',
+                    children: [
+                        { entity: 'automountlocation', hidden: true },
+                        { entity: 'automountmap', hidden: true },
+                        { entity: 'automountkey', hidden: true }
+                    ]
+                },
+                {
                     name:'dns',
                     label: '@i18n:tabs.dns',
                     children: [
                         {
                             entity: 'dnszone',
                             children: [
-                                { entity: 'dnsrecord', hidden:true }
+                                { entity: 'dnsrecord', hidden: true }
                             ]
                         },
                         { entity: 'dnsforwardzone' },
                         { entity: 'dnsconfig' }
                     ]
+                }
+            ]
+        },
+        {
+            name: 'ipaserver',
+            label: '@i18n:tabs.ipaserver',
+            children: [
+                {
+                    name: 'rbac',
+                    label: '@i18n:tabs.role',
+                    children: [
+                        { entity: 'role' },
+                        { entity: 'privilege' },
+                        { entity: 'permission' },
+                        { entity: 'selfservice' },
+                        { entity: 'delegation' }
+                    ]
                 },
-                { entity: 'cert', label: '@i18n:tabs.cert' },
+                { entity: 'idrange' },
                 { entity: 'realmdomains' },
-                { entity: 'otptoken' }
+                {
+                    name: 'trusts',
+                    label: '@i18n:tabs.trust',
+                    children: [
+                        { entity: 'trust' },
+                        { entity: 'trustconfig' }
+                    ]
+                },
+                { entity: 'config' }
             ]
-        },
-        {name: 'policy', label: '@i18n:tabs.policy', children: [
-            {name: 'hbac', label: '@i18n:tabs.hbac', children: [
-                {entity: 'hbacrule'},
-                {entity: 'hbacsvc'},
-                {entity: 'hbacsvcgroup'},
-                {entity: 'hbactest'}
-            ]},
-            {name: 'sudo', label: '@i18n:tabs.sudo', children: [
-                {entity: 'sudorule'},
-                {entity: 'sudocmd'},
-                {entity: 'sudocmdgroup'}
-            ]},
-            {
-                name:'automount',
-                label: '@i18n:tabs.automount',
-                entity: 'automountlocation',
-                children:[
-                 {entity: 'automountlocation', hidden:true},
-                 {entity: 'automountmap', hidden: true},
-                 {entity: 'automountkey', hidden: true}]
-            },
-            {entity: 'pwpolicy'},
-            {entity: 'krbtpolicy'},
-            {entity: 'selinuxusermap'},
-            {
-                name: 'automember',
-                label: '@i18n:tabs.automember',
-                children: [
-                    {
-                        name: 'amgroup',
-                        entity: 'automember',
-                        facet: 'searchgroup',
-                        label: '@i18n:objects.automember.usergrouprules',
-                        children: [
-                            {
-                                entity: 'automember',
-                                facet: 'usergrouprule',
-                                hidden: true
-                            }
-                        ]
-                    },
-                    {
-                        name: 'amhostgroup',
-                        entity: 'automember',
-                        facet: 'searchhostgroup',
-                        label: '@i18n:objects.automember.hostgrouprules',
-                        children: [
-                            {
-                                entity: 'automember',
-                                facet: 'hostgrouprule',
-                                hidden: true
-                            }
-                        ]
-                    }
-                ]
-            }
-        ]},
-        {name: 'ipaserver', label: '@i18n:tabs.ipaserver', children: [
-            {name: 'rolebased', label: '@i18n:tabs.role', children: [
-                {entity: 'role'},
-                {entity: 'privilege'},
-                {entity: 'permission'}
-            ]},
-            {entity: 'selfservice'},
-            {entity: 'delegation'},
-            {entity: 'idrange'},
-            {
-                name: 'trusts',
-                label: '@i18n:tabs.trust',
-                children:[
-                    {entity: 'trust'},
-                    {entity: 'trustconfig'}
-                ]
-            },
-            {entity: 'radiusproxy'},
-            {entity: 'config'}
-        ]}
+        }
     ]
 };
 
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 6c387690aac0f85dce7f32f9cec84d55d200f40c..284c0a643391a23f8702ed99078acd1f0250cdf6 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -553,6 +553,7 @@
                     },
                     "tabs": {
                         "audit": "Audit",
+                        "authentication": "Authentication",
                         "automember": "Automember",
                         "automount": "Automount",
                         "cert": "Certificates",
@@ -560,6 +561,7 @@
                         "hbac": "Host Based Access Control",
                         "identity": "Identity",
                         "ipaserver": "IPA Server",
+                        "network_services": "Network Services",
                         "policy": "Policy",
                         "role": "Role Based Access Control",
                         "sudo": "Sudo",
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index d95794cc6806dc44fd533f277d02b330c938f99f..4d9448ab065d5b261d74ef4f126fed07eced4d5e 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -698,6 +698,7 @@ class i18n_messages(Command):
         },
         "tabs": {
             "audit": _("Audit"),
+            "authentication": _("Authentication"),
             "automember": _("Automember"),
             "automount": _("Automount"),
             "cert": _("Certificates"),
@@ -705,6 +706,7 @@ class i18n_messages(Command):
             "hbac": _("Host Based Access Control"),
             "identity": _("Identity"),
             "ipaserver": _("IPA Server"),
+            "network_services": _("Network Services"),
             "policy": _("Policy"),
             "role": _("Role Based Access Control"),
             "sudo": _("Sudo"),
diff --git a/ipatests/test_webui/test_automember.py b/ipatests/test_webui/test_automember.py
index 3166fbd29d447833a4b873e37f960fa2a84899af..34710cb6e84ce76ea1930f4fbd17fd1331564b69 100644
--- a/ipatests/test_webui/test_automember.py
+++ b/ipatests/test_webui/test_automember.py
@@ -72,7 +72,7 @@ class test_automember(UI_driver):
                         delete=False)
 
         # host group rule
-        self.navigate_by_menu('policy/automember/amhostgroup')
+        self.navigate_by_menu('identity/automember/amhostgroup')
 
         self.basic_crud(ENTITY, HOST_GROUP_DATA,
                         search_facet='searchhostgroup',
diff --git a/ipatests/test_webui/test_dns.py b/ipatests/test_webui/test_dns.py
index ffbd0ab2b49458b309d1ffd4114bc611550cb387..c220200dd78d6848d7cd0447c203e7d5dc0376a5 100644
--- a/ipatests/test_webui/test_dns.py
+++ b/ipatests/test_webui/test_dns.py
@@ -167,5 +167,5 @@ class test_dns(UI_driver):
         Basic CRUD: dnsconfig
         """
         self.init_app()
-        self.navigate_by_menu('identity/dns/dnsconfig')
+        self.navigate_by_menu('network_services/dns/dnsconfig')
         self.mod_record(CONFIG_ENTITY, CONFIG_MOD_DATA)
diff --git a/ipatests/test_webui/test_navigation.py b/ipatests/test_webui/test_navigation.py
index caf291a908ec2fc9c4e1a6ee8b2f73f48924f23e..530a757ade0ce6170cf2eca122f6b703cdf71b3d 100644
--- a/ipatests/test_webui/test_navigation.py
+++ b/ipatests/test_webui/test_navigation.py
@@ -37,6 +37,8 @@ ENTITIES = [
     # TODO: dnsrecord
     'dnsconfig',
     'cert',
+    'otptoken',
+    'radiusproxy',
     'realmdomains',
     'hbacrule',
     'hbacsvc',
@@ -77,6 +79,7 @@ class test_navigation(UI_driver):
         if not self.has_dns():
             unsupported.extend([
                                'dnszone',
+                               'dnsforwardzone',
                                'dnsconfig',
                                ])
         if not self.has_ca():
@@ -99,6 +102,7 @@ class test_navigation(UI_driver):
 
         self.init_app()
 
+        # Identity
         # don't start by users (default)
         self.navigate_by_menu('identity/group', False)
         self.navigate_by_menu('identity/user', False)
@@ -106,18 +110,11 @@ class test_navigation(UI_driver):
         self.navigate_by_menu('identity/hostgroup', False)
         self.navigate_by_menu('identity/netgroup', False)
         self.navigate_by_menu('identity/service', False)
-        if self.has_dns():
-            self.navigate_by_menu('identity/dns/dnsconfig', True)
-            self.navigate_by_menu('identity/dns', False)
-            self.navigate_by_menu('identity/dns/dnszone', False)
-            self.navigate_by_menu('identity/dns/dnsforwardzone')
-        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('identity/automember', False)
+        self.navigate_by_menu('identity/automember/amhostgroup')
+        self.navigate_by_menu('identity/automember/amgroup')
+
+        # Policy
         self.navigate_by_menu('policy')
         self.navigate_by_menu('policy/hbac', False)
         self.navigate_by_menu('policy/hbac/hbacsvc', False)
@@ -128,21 +125,40 @@ class test_navigation(UI_driver):
         self.navigate_by_menu('policy/sudo/sudorule', False)
         self.navigate_by_menu('policy/sudo/sudocmd')
         self.navigate_by_menu('policy/sudo/sudocmdgroup')
-        self.navigate_by_menu('policy/automount', False)
+        self.navigate_by_menu('policy/selinuxusermap', False)
         self.navigate_by_menu('policy/pwpolicy', False)
         self.navigate_by_menu('policy/krbtpolicy', False)
-        self.navigate_by_menu('policy/selinuxusermap', False)
-        self.navigate_by_menu('policy/automember', False)
-        self.navigate_by_menu('policy/automember/amhostgroup')
-        self.navigate_by_menu('policy/automember/amgroup')
+
+        # Authentication
+        self.navigate_by_menu('authentication')
+        self.navigate_by_menu('authentication/radiusproxy', False)
+        self.navigate_by_menu('authentication/otptoken', False)
+        if self.has_ca():
+            self.navigate_by_menu('authentication/cert', False)
+        else:
+            self.assert_menu_item('authentication/cert', False)
+
+        # Network Services
+        self.navigate_by_menu('network_services')
+        self.navigate_by_menu('network_services/automount')
+        if self.has_dns():
+            self.navigate_by_menu('network_services/dns/dnsconfig', True)
+            self.navigate_by_menu('network_services/dns', False)
+            self.navigate_by_menu('network_services/dns/dnszone', False)
+            self.navigate_by_menu('network_services/dns/dnsforwardzone')
+        else:
+            self.assert_menu_item('network_services/dns', False)
+
+        # IPA Server
         self.navigate_by_menu('ipaserver')
-        self.navigate_by_menu('ipaserver/rolebased', False)
-        self.navigate_by_menu('ipaserver/rolebased/privilege', False)
-        self.navigate_by_menu('ipaserver/rolebased/role')
-        self.navigate_by_menu('ipaserver/rolebased/permission')
-        self.navigate_by_menu('ipaserver/selfservice', False)
-        self.navigate_by_menu('ipaserver/delegation', False)
+        self.navigate_by_menu('ipaserver/rbac', False)
+        self.navigate_by_menu('ipaserver/rbac/privilege', False)
+        self.navigate_by_menu('ipaserver/rbac/role')
+        self.navigate_by_menu('ipaserver/rbac/permission')
+        self.navigate_by_menu('ipaserver/rbac/selfservice')
+        self.navigate_by_menu('ipaserver/rbac/delegation')
         self.navigate_by_menu('ipaserver/idrange', False)
+        self.navigate_by_menu('ipaserver/realmdomains', False)
         if self.has_trusts():
             self.navigate_by_menu('ipaserver/trusts', False)
             self.navigate_by_menu('ipaserver/trusts/trust', False)
@@ -151,6 +167,7 @@ class test_navigation(UI_driver):
             self.assert_menu_item('ipaserver/trusts', False)
         self.navigate_by_menu('ipaserver/config', False)
 
+
     def assert_e_url(self, url, e):
         """
         Assert correct url for entity
diff --git a/ipatests/test_webui/ui_driver.py b/ipatests/test_webui/ui_driver.py
index 047009a295838d0053c9c0e378e97b480db6a0e7..a1371806c2f11a42534cfcac330683e2a35853d8 100644
--- a/ipatests/test_webui/ui_driver.py
+++ b/ipatests/test_webui/ui_driver.py
@@ -427,7 +427,7 @@ class UI_driver(object):
 
         s = ".navbar a[href='#%s']" % item
         link = self.find(s, By.CSS_SELECTOR, strict=True)
-        assert link.is_displayed(), 'Navigation link is not displayed'
+        assert link.is_displayed(), 'Navigation link is not displayed: %s' % item
         link.click()
         self.wait_for_request()
         self.wait_for_request(0.4)
-- 
1.9.0

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to