https://fedorahosted.org/freeipa/ticket/4418
according to latest proposal:http://www.redhat.com/archives/freeipa-devel/2014-June/msg00839.html
-- Petr Vobornik
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
_______________________________________________ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel