[Freeipa-devel] [PATCH] 694 webui: new navigation structure
Fraser Tweedale
ftweedal at redhat.com
Thu Jul 3 06:13:17 UTC 2014
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.
> From 97cc94163e8ae57058b07741c7d70e44697c113f Mon Sep 17 00:00:00 2001
> From: Petr Vobornik <pvoborni at 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 at redhat.com
> https://www.redhat.com/mailman/listinfo/freeipa-devel
More information about the Freeipa-devel
mailing list