From 18dbda5efbc3b905a48fd7ddb34d74ec292054d9 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 15 Jan 2013 13:23:50 +0000 Subject: [PATCH] ldap rbacmanager pass tck git-svn-id: https://svn.apache.org/repos/asf/archiva/redback/redback-core/trunk@1433400 13f79535-47bb-0310-9956-ffa450edef68 --- .../archiva/redback/rbac/ldap/LdapRbacManager.java | 12 ++++++++---- .../redback/rbac/ldap/LdapRbacManagerTest.java | 2 +- .../redback-rbac-ldap/src/test/security.properties | 1 + .../redback/tests/AbstractRbacManagerTestCase.java | 5 +++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/main/java/org/apache/archiva/redback/rbac/ldap/LdapRbacManager.java b/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/main/java/org/apache/archiva/redback/rbac/ldap/LdapRbacManager.java index 57edba7c..4953a469 100644 --- a/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/main/java/org/apache/archiva/redback/rbac/ldap/LdapRbacManager.java +++ b/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/main/java/org/apache/archiva/redback/rbac/ldap/LdapRbacManager.java @@ -437,8 +437,7 @@ public Collection getUnassignedRoles( String username ) { if ( !userRoles.contains( roleName ) ) { - // TODO real role with permission ? - unassignedRoles.add( new RoleImpl( roleName ) ); + unassignedRoles.add( rbacImpl.getRole( roleName ) ); } } return unassignedRoles; @@ -707,6 +706,13 @@ public synchronized Role saveRole( Role role ) try { ldapRoleMapper.saveRole( role.getName() ); + if ( !role.getChildRoleNames().isEmpty() ) + { + for ( String roleName : role.getChildRoleNames() ) + { + ldapRoleMapper.saveRole( roleName ); + } + } fireRbacRoleSaved( role ); } catch ( MappingException e ) @@ -771,8 +777,6 @@ public UserAssignment saveUserAssignment( UserAssignment userAssignment ) } } - - for ( String role : currentUserRoles ) { if ( !userAssignment.getRoleNames().contains( role ) && writableLdap ) diff --git a/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/test/java/org/apache/archiva/redback/rbac/ldap/LdapRbacManagerTest.java b/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/test/java/org/apache/archiva/redback/rbac/ldap/LdapRbacManagerTest.java index e9c46def..dd8c1c5c 100644 --- a/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/test/java/org/apache/archiva/redback/rbac/ldap/LdapRbacManagerTest.java +++ b/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/test/java/org/apache/archiva/redback/rbac/ldap/LdapRbacManagerTest.java @@ -300,6 +300,6 @@ protected int incAssignements( int size ) protected boolean supportChildRole() { - return false; + return true; } } diff --git a/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/test/security.properties b/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/test/security.properties index 07c91f60..79f4fde7 100644 --- a/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/test/security.properties +++ b/redback-rbac/redback-rbac-providers/redback-rbac-ldap/src/test/security.properties @@ -21,6 +21,7 @@ ldap.config.groups.role.user-admin=User Administrator ldap.config.groups.role.sys-admin=System Administrator ldap.config.groups.role.trusted-dev=Trusted Developer ldap.config.groups.role.developer=Developer +ldap.config.groups.role.super-developer=SUPER_DEVELOPER ldap.config.groups.role.thetestrole=Test Role diff --git a/redback-rbac/redback-rbac-tests/src/main/java/org/apache/archiva/redback/tests/AbstractRbacManagerTestCase.java b/redback-rbac/redback-rbac-tests/src/main/java/org/apache/archiva/redback/tests/AbstractRbacManagerTestCase.java index 8813597c..155c4683 100644 --- a/redback-rbac/redback-rbac-tests/src/main/java/org/apache/archiva/redback/tests/AbstractRbacManagerTestCase.java +++ b/redback-rbac/redback-rbac-tests/src/main/java/org/apache/archiva/redback/tests/AbstractRbacManagerTestCase.java @@ -426,13 +426,14 @@ public void testUserAssignmentWithChildRoles() adminRole = manager.saveRole( adminRole ); - String adminPrincipal = "admin"; + // don't use admin as ldap group need at least one member + String adminPrincipal = "theadmin"; UserAssignment assignment = manager.createUserAssignment( adminPrincipal ); assignment.addRoleName( adminRole ); assignment = manager.saveUserAssignment( assignment ); assertEquals( 1, assignment.getRoleNames().size() ); - assertEquals( incAssignements( 1 ), manager.getAssignedRoles( adminPrincipal ).size() ); + assertEquals( 1, manager.getAssignedRoles( adminPrincipal ).size() ); } @Test