webui: new navigation structure

https://fedorahosted.org/freeipa/ticket/4418

Reviewed-By: Fraser Tweedale <ftweedal@redhat.com>
Reviewed-By: Martin Kosek <mkosek@redhat.com>
Reviewed-By: Petr Spacek <pspacek@redhat.com>
This commit is contained in:
Petr Vobornik
2014-07-02 15:09:22 +02:00
parent 2637116eab
commit 0b0e77cf99
9 changed files with 164 additions and 110 deletions

View File

@@ -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');
}
};

View File

@@ -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');
}
};

View File

@@ -42,6 +42,91 @@ var nav = {};
{ entity: 'hostgroup' },
{ 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',
@@ -49,95 +134,43 @@ var nav = {};
{
entity: 'dnszone',
children: [
{ entity: 'dnsrecord', hidden:true }
{ entity: 'dnsrecord', hidden: true }
]
},
{ entity: 'dnsforwardzone' },
{ entity: 'dnsconfig' }
]
},
{ entity: 'cert', label: '@i18n:tabs.cert' },
{ entity: 'realmdomains' },
{ entity: 'otptoken' }
}
]
},
{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'}
]}
{
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: 'idrange' },
{ entity: 'realmdomains' },
{
name: 'trusts',
label: '@i18n:tabs.trust',
children: [
{ entity: 'trust' },
{ entity: 'trustconfig' }
]
},
{ entity: 'config' }
]
}
]
};

View File

@@ -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",

View File

@@ -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"),

View File

@@ -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',

View File

@@ -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)

View File

@@ -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

View File

@@ -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)