You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/04/06 11:59:32 UTC
svn commit: r1310268 [37/42] - in /archiva/redback/redback-core/trunk: ./
redback-authentication/ redback-authentication/redback-authentication-api/
redback-authentication/redback-authentication-api/src/
redback-authentication/redback-authentication-ap...
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/resources/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/resources/spring-context.xml?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/resources/spring-context.xml (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/resources/spring-context.xml Fri Apr 6 09:58:14 2012
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/context
+ http://www.springframework.org/schema/context/spring-context-3.0.xsd"
+ default-lazy-init="false">
+
+
+ <bean name="jdoFactory#users" class="org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory">
+ <property name="driverName" value="org.hsqldb.jdbcDriver"/>
+ <property name="url" value="jdbc:hsqldb:mem:redback-users-tests" />
+ <property name="userName" value="sa"/>
+ <property name="password" value=""/>
+ <property name="persistenceManagerFactoryClass" value="org.jpox.PersistenceManagerFactoryImpl"/>
+ <property name="otherProperties">
+ <props>
+ <prop key="org.jpox.rdbms.dateTimezone">JDK_DEFAULT_TIMEZONE</prop>
+ <prop key="org.jpox.autoCreateTables">true</prop>
+ </props>
+ </property>
+ </bean>
+
+ <bean name="userConfiguration" class="org.codehaus.plexus.redback.configuration.UserConfiguration">
+ <property name="registry" ref="test-conf"/>
+ </bean>
+
+ <bean name="commons-configuration" class="org.codehaus.redback.components.registry.commons.CommonsConfigurationRegistry">
+ </bean>
+
+ <alias name="commons-configuration" alias="test-conf"/>
+
+ <bean name="roleManager" class="org.codehaus.plexus.redback.role.DefaultRoleManager">
+ <property name="modelValidator" ref="roleModelValidator"/>
+ <property name="modelProcessor" ref="modelProcessor#memory"/>
+ <property name="templateProcessor" ref="templateProcessor#memory"/>
+ <property name="rbacManager" ref="rBACManager#memory"/>
+ </bean>
+
+
+
+ <bean name="modelProcessor#memory" class="org.codehaus.plexus.redback.role.processor.DefaultRoleModelProcessor">
+ <property name="rbacManager" ref="rBACManager#memory"/>
+ </bean>
+
+
+
+ <bean name="templateProcessor#memory" class="org.codehaus.plexus.redback.role.template.DefaultRoleTemplateProcessor">
+ <property name="rbacManager" ref="rBACManager#memory"/>
+ </bean>
+
+ <!--
+ <alias name="roleModelProcessor#memory" alias="roleModelProcessor"/>
+ <alias name="templateProcessor#memory" alias="roleTemplateProcessor"/>
+ -->
+
+</beans>
\ No newline at end of file
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/resources/spring-context.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/resources/spring-context.xml
------------------------------------------------------------------------------
svn:executable =
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/resources/spring-context.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/template-tests/redback-1.xml
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/template-tests/redback-1.xml?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/template-tests/redback-1.xml (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/template-tests/redback-1.xml Fri Apr 6 09:58:14 2012
@@ -0,0 +1,111 @@
+<redback-role-model>
+ <modelVersion>1.0.0</modelVersion>
+ <applications>
+ <application>
+ <id>template test</id>
+ <version>1.0</version>
+ <resources>
+ <resource>
+ <id>cornflakes</id>
+ <name>cornflakes name</name>
+ <permanent>true</permanent>
+ <description>my breakfast cereal</description>
+ </resource>
+ <resource>
+ <id>milk</id>
+ <name>milk</name>
+ <permanent>true</permanent>
+ <description>the milk in the bowl</description>
+ </resource>
+ </resources>
+ <operations>
+ <operation>
+ <id>eat-cornflakes</id>
+ <name>Eat Cornflakes</name>
+ <description>eat cornflakes</description>
+ </operation>
+ <operation>
+ <id>drink-milk</id>
+ <name>Drink Milk</name>
+ <description>drink the milk</description>
+ </operation>
+ </operations>
+ <roles>
+ <role>
+ <id>can-eat-cornflakes</id>
+ <name>Role for happy cornflake eaters</name>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <name>Eat Cornflakes</name>
+ <operation>eat-cornflakes</operation>
+ <resource>cornflakes</resource>
+ </permission>
+ </permissions>
+ <childRoles>
+ <childRole>can-drink-the-milk</childRole>
+ </childRoles>
+ </role>
+ <role>
+ <id>can-drink-the-milk</id>
+ <name>Role for cornflake eaters drinking milk in the bowl</name>
+ <permissions>
+ <permission>
+ <id>drink-milk-permission</id>
+ <name>Drink Milk</name>
+ <operation>drink-milk</operation>
+ <resource>milk</resource>
+ </permission>
+ </permissions>
+ <parentRoles>
+ <parentRole>can-eat-cornflakes</parentRole>
+ </parentRoles>
+ </role>
+ </roles>
+ <templates>
+ <template>
+ <id>test-template</id>
+ <namePrefix>Foo</namePrefix>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <name>Eat Cornflakes</name>
+ <operation>eat-cornflakes</operation>
+ <resource>cornflakes</resource>
+ </permission>
+ </permissions>
+ <childRoles>
+ <childRole>can-drink-the-milk</childRole>
+ </childRoles>
+ </template>
+ <template>
+ <id>test-template-2</id>
+ <namePrefix>Foo 2</namePrefix>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <name>Eat Cornflakes 1</name>
+ <operation>eat-cornflakes</operation>
+ <resource>cornflakes</resource>
+ </permission>
+ <permission>
+ <id>eat-cornflakes-permission-2</id>
+ <name>Eat Cornflakes 2</name>
+ <operation>eat-cornflakes</operation>
+ <resource>global</resource>
+ </permission>
+ <permission>
+ <id>eat-cornflakes-permission-3</id>
+ <name>Eat Cornflakes 3</name>
+ <operation>eat-cornflakes</operation>
+ <resource>${resource}</resource>
+ </permission>
+ </permissions>
+ <childTemplates>
+ <childTemplate>test-template</childTemplate>
+ </childTemplates>
+ </template>
+ </templates>
+ </application>
+ </applications>
+</redback-role-model>
\ No newline at end of file
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/template-tests/redback-1.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/template-tests/redback-1.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-bad.xml
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-bad.xml?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-bad.xml (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-bad.xml Fri Apr 6 09:58:14 2012
@@ -0,0 +1,109 @@
+<redback-role-model>
+ <modelVersion>1.0.0</modelVersion>
+ <applications>
+ <application>
+ <resources>
+ <resource>
+ <id>cornflakes</id>
+ <name>cornflakes</name>
+ <permanent>true</permanent>
+ <description>my breakfast cereal</description>
+ </resource>
+ <resource>
+ <id>milk</id>
+ <name>milk</name>
+ <permanent>true</permanent>
+ <description>the milk in the bowl</description>
+ </resource>
+ </resources>
+ <operations>
+ <operation>
+ <id>eat-cornflakes</id>
+ <name>Eat Cornflakes</name>
+ <description>eat cornflakes</description>
+ </operation>
+ <operation>
+ <id>drink-milk</id>
+ <name>Drink Milk</name>
+ <description>drink the milk</description>
+ </operation>
+ </operations>
+ <roles>
+ <role>
+ <id>can-eat-cornflakes</id>
+ <name>Role for happy cornflake eaters</name>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <operation>eat-cornflakes</operation>
+ <resource>cornflakes</resource>
+ </permission>
+ </permissions>
+ <childRoles>
+ <childRole>can-drink-the-milk</childRole>
+ </childRoles>
+ </role>
+ <role>
+ <id>can-drink-the-milk</id>
+ <name>
+ Role for cornflake eaters drinking milk in the
+ bowl
+ </name>
+ <permissions>
+ <permission>
+ <id>drink-milk-permission</id>
+ <operation>drink-milk</operation>
+ <resource>milk</resource>
+ </permission>
+ </permissions>
+ <parentRoles>
+ <parentRole>can-eat-cornflakes</parentRole>
+ </parentRoles>
+ <childRoles>
+ <childRole>can-eat-cornflakes</childRole>
+ </childRoles>
+ </role>
+ </roles>
+ <templates>
+ <template>
+ <id>test-template</id>
+ <namePrefix>Foo</namePrefix>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <operation>eat-cornflakes</operation>
+ <resource>cornflakes</resource>
+ </permission>
+ </permissions>
+ <childRoles>
+ <childRole>
+ can-drink-the-milk-missing-child-role
+ </childRole>
+ </childRoles>
+ <childTemplates>
+ <childTemplate>test-template-2</childTemplate>
+ </childTemplates>
+ </template>
+ <template>
+ <id>test-template-2</id>
+ <namePrefix>Foo</namePrefix>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <operation>
+ eat-cornflakes-missing-operation-in-template
+ </operation>
+ <resource>cornflakes3</resource>
+ </permission>
+ </permissions>
+ <childTemplates>
+ <childTemplate>
+ test-template-missing-child-template
+ </childTemplate>
+ <childTemplate>test-template</childTemplate>
+ </childTemplates>
+ </template>
+ </templates>
+ </application>
+ </applications>
+</redback-role-model>
\ No newline at end of file
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-bad.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-bad.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-core.xml
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-core.xml?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-core.xml (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-core.xml Fri Apr 6 09:58:14 2012
@@ -0,0 +1,220 @@
+<redback-role-model>
+ <modelVersion>1.0.0</modelVersion>
+ <applications>
+ <application>
+ <id>Redback XWork Integration Security Core</id>
+ <version>1.0</version>
+ <resources>
+ <resource>
+ <id>global</id>
+ <name>*</name>
+ <permanent>true</permanent>
+ <description>
+ global resource implies full access for
+ authorization
+ </description>
+ </resource>
+ <resource>
+ <id>username</id>
+ <name>${username}</name>
+ <permanent>true</permanent>
+ <description>
+ replaced with the username of the principal at
+ authorization check time
+ </description>
+ </resource>
+ </resources>
+ <operations>
+ <operation>
+ <id>configuration-edit</id>
+ <name>configuration-edit</name>
+ <description>edit configuration</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-create</id>
+ <name>user-management-user-create</name>
+ <description>create user</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-edit</id>
+ <name>user-management-user-edit</name>
+ <description>edit user</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-role</id>
+ <name>user-management-user-role</name>
+ <description>user roles</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-delete</id>
+ <name>user-management-user-delete</name>
+ <description>delete user</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-user-list</id>
+ <name>user-management-user-list</name>
+ <description>list users</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-role-grant</id>
+ <name>user-management-role-grant</name>
+ <description>grant role</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-role-drop</id>
+ <name>user-management-role-drop</name>
+ <description>drop role</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>user-management-rbac-admin</id>
+ <name>user-management-rbac-admin</name>
+ <description>administer rbac</description>
+ <permanent>true</permanent>
+ </operation>
+ <operation>
+ <id>guest-access</id>
+ <name>guest-access</name>
+ <description>access guest</description>
+ <permanent>true</permanent>
+ </operation>
+ </operations>
+ <roles>
+ <role>
+ <id>system-administrator</id>
+ <name>System Administrator</name>
+ <permanent>true</permanent>
+ <assignable>true</assignable>
+ <permissions>
+ <permission>
+ <id>edit-redback-configuration</id>
+ <name>Edit Redback Configuration</name>
+ <operation>configuration-edit</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>manage-rbac-setup</id>
+ <name>User RBAC Management</name>
+ <operation>
+ user-management-rbac-admin
+ </operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ </permissions>
+ </role>
+ <role>
+ <id>user-administrator</id>
+ <name>User Administrator</name>
+ <permanent>true</permanent>
+ <assignable>true</assignable>
+ <permissions>
+ <permission>
+ <id>drop-roles-for-anyone</id>
+ <name>Drop Roles for Anyone</name>
+ <operation>
+ user-management-role-drop
+ </operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>grant-roles-for-anyone</id>
+ <name>Grant Roles for Anyone</name>
+ <operation>
+ user-management-role-grant
+ </operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>user-create</id>
+ <name>Create Users</name>
+ <operation>
+ user-management-user-create
+ </operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>user-delete</id>
+ <name>Delete Users</name>
+ <operation>
+ user-management-user-delete
+ </operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>user-edit</id>
+ <name>Edit Users</name>
+ <operation>
+ user-management-user-edit
+ </operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>access-users-roles</id>
+ <name>Access Users Roles</name>
+ <operation>
+ user-management-user-role
+ </operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ <permission>
+ <id>access-user-list</id>
+ <name>Access User List</name>
+ <operation>
+ user-management-user-role
+ </operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ </permissions>
+ </role>
+ <role>
+ <id>registered-user</id>
+ <name>Registered User</name>
+ <permanent>true</permanent>
+ <assignable>true</assignable>
+ <permissions>
+ <permission>
+ <id>edit-user-by-username</id>
+ <name>Edit User Data by Username</name>
+ <operation>
+ user-management-user-edit
+ </operation>
+ <resource>username</resource>
+ <permanent>true</permanent>
+ </permission>
+ </permissions>
+ </role>
+ <role>
+ <id>guest</id>
+ <name>Guest</name>
+ <permanent>true</permanent>
+ <assignable>true</assignable>
+ <permissions>
+ <permission>
+ <id>guest-permission</id>
+ <name>Guest Permission</name>
+ <operation>guest-access</operation>
+ <resource>global</resource>
+ <permanent>true</permanent>
+ </permission>
+ </permissions>
+ </role>
+ </roles>
+ </application>
+ </applications>
+</redback-role-model>
\ No newline at end of file
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-core.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-core.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-good.xml
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-good.xml?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-good.xml (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-good.xml Fri Apr 6 09:58:14 2012
@@ -0,0 +1,102 @@
+<redback-role-model>
+ <modelVersion>1.0.0</modelVersion>
+ <applications>
+ <application>
+ <id>validator test</id>
+ <version>1.0</version>
+ <resources>
+ <resource>
+ <id>cornflakes</id>
+ <name>cornflakes</name>
+ <permanent>true</permanent>
+ <description>my breakfast cereal</description>
+ </resource>
+ <resource>
+ <id>milk</id>
+ <name>milk</name>
+ <permanent>true</permanent>
+ <description>the milk in the bowl</description>
+ </resource>
+ </resources>
+ <operations>
+ <operation>
+ <id>eat-cornflakes</id>
+ <name>Eat Cornflakes</name>
+ <description>eat cornflakes</description>
+ </operation>
+ <operation>
+ <id>drink-milk</id>
+ <name>Drink Milk</name>
+ <description>drink the milk</description>
+ </operation>
+ </operations>
+ <roles>
+ <role>
+ <id>can-eat-cornflakes</id>
+ <name>Role for happy cornflake eaters</name>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <name>Eat Cornflakes</name>
+ <operation>eat-cornflakes</operation>
+ <resource>cornflakes</resource>
+ </permission>
+ </permissions>
+ <childRoles>
+ <childRole>can-drink-the-milk</childRole>
+ </childRoles>
+ </role>
+ <role>
+ <id>can-drink-the-milk</id>
+ <name>
+ Role for cornflake eaters drinking milk in the
+ bowl
+ </name>
+ <permissions>
+ <permission>
+ <id>drink-milk-permission</id>
+ <name>Drink Milk</name>
+ <operation>drink-milk</operation>
+ <resource>milk</resource>
+ </permission>
+ </permissions>
+ <parentRoles>
+ <parentRole>can-eat-cornflakes</parentRole>
+ </parentRoles>
+ </role>
+ </roles>
+ <templates>
+ <template>
+ <id>test-template</id>
+ <namePrefix>Foo 1</namePrefix>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <name>Eat Cornflakes</name>
+ <operation>eat-cornflakes</operation>
+ <resource>cornflakes</resource>
+ </permission>
+ </permissions>
+ <childRoles>
+ <childRole>can-drink-the-milk</childRole>
+ </childRoles>
+ </template>
+ <template>
+ <id>test-template-2</id>
+ <namePrefix>Foo 2</namePrefix>
+ <permissions>
+ <permission>
+ <id>eat-cornflakes-permission</id>
+ <name>Eat Cornflakes</name>
+ <operation>eat-cornflakes</operation>
+ <resource>cornflakes</resource>
+ </permission>
+ </permissions>
+ <childTemplates>
+ <childTemplate>test-template</childTemplate>
+ </childTemplates>
+ </template>
+ </templates>
+ </application>
+ </applications>
+</redback-role-model>
\ No newline at end of file
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-good.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-role-manager/src/test/validation-tests/redback-good.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/pom.xml
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/pom.xml?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/pom.xml (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/pom.xml Fri Apr 6 09:58:14 2012
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright 2006 The Codehaus.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.codehaus.redback</groupId>
+ <artifactId>redback-rbac</artifactId>
+ <version>1.5-SNAPSHOT</version>
+ </parent>
+ <artifactId>redback-rbac-tests</artifactId>
+ <name>Redback :: RBAC Test Framework</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.redback</groupId>
+ <artifactId>redback-system</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.redback</groupId>
+ <artifactId>redback-authorization-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.redback</groupId>
+ <artifactId>redback-rbac-model</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ </dependency>
+ </dependencies>
+</project>
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/pom.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerPerformanceTestCase.java
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerPerformanceTestCase.java?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerPerformanceTestCase.java (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerPerformanceTestCase.java Fri Apr 6 09:58:14 2012
@@ -0,0 +1,318 @@
+package org.codehaus.plexus.redback.tests;
+
+/*
+ * Copyright 2001-2006 The Codehaus.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import junit.framework.TestCase;
+import org.codehaus.plexus.redback.rbac.Operation;
+import org.codehaus.plexus.redback.rbac.Permission;
+import org.codehaus.plexus.redback.rbac.RBACManager;
+import org.codehaus.plexus.redback.rbac.RbacManagerException;
+import org.codehaus.plexus.redback.rbac.Resource;
+import org.codehaus.plexus.redback.rbac.Role;
+import org.codehaus.plexus.redback.rbac.UserAssignment;
+import org.codehaus.plexus.redback.tests.utils.RBACDefaults;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.util.Collections;
+
+@RunWith( SpringJUnit4ClassRunner.class )
+@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } )
+public class AbstractRbacManagerPerformanceTestCase
+ extends TestCase
+{
+ private RBACManager rbacManager;
+
+ private RBACDefaults rbacDefaults;
+
+ public void setRbacManager( RBACManager store )
+ {
+ this.rbacManager = store;
+ rbacDefaults = new RBACDefaults( rbacManager );
+ }
+
+ public void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ public void tearDown()
+ throws Exception
+ {
+ super.tearDown();
+ }
+
+ private Role getDeveloperRole()
+ throws RbacManagerException
+ {
+ Role role = rbacManager.createRole( "DEVELOPER" );
+ role.setAssignable( true );
+
+ Permission perm = rbacManager.createPermission( "EDIT_MY_USER", "EDIT", "User:Self" );
+
+ role.addPermission( perm );
+
+ return role;
+ }
+
+ private Role getSuperDeveloperRole()
+ {
+ Role role = rbacManager.createRole( "SUPER_DEVELOPER" );
+ role.setAssignable( true );
+
+ return role;
+ }
+
+ private static final int ITERATIONS = 10000;
+
+ private static final int ONESECOND = 1000;
+
+ public void assertPerformance( String msg, long startTime, long endTime, int iterations, double threshold )
+ {
+ long elapsed = endTime - startTime;
+ double ratio = (double) elapsed / (double) ONESECOND; // ratio of time to 1 second.
+ double opsPerSecond = (double) iterations / ratio;
+
+ System.out.println( "Performance " + msg + ": " + opsPerSecond + " operations per second. (effective)" );
+
+ if ( opsPerSecond < threshold )
+ {
+ // Failure
+
+ StringBuffer stats = new StringBuffer();
+
+ stats.append( "Stats on " ).append( msg );
+ stats.append( "\nStart Time (ms): " ).append( Long.toString( startTime ) );
+ stats.append( "\nEnd Time (ms) : " ).append( Long.toString( endTime ) );
+ stats.append( "\nElapsed (ms) : " ).append( Long.toString( elapsed ) );
+ stats.append( "\nRatio : " ).append( Double.toString( ratio ) );
+ stats.append( "\nOps per second : " ).append( Double.toString( opsPerSecond ) );
+
+ System.out.println( stats.toString() );
+
+ fail( "Performance Error: " + msg + " expecting greater than [" + threshold + "], actual [" + opsPerSecond
+ + "]" );
+ }
+ }
+
+ @Test
+ public void testPerformanceResource()
+ throws RbacManagerException
+ {
+ assertNotNull( rbacManager );
+ rbacManager.eraseDatabase();
+
+ Resource resource = rbacManager.createResource( "foo" );
+ Resource resource2 = rbacManager.createResource( "bar" );
+
+ assertNotNull( resource );
+
+ Resource added = rbacManager.saveResource( resource );
+ assertNotNull( added );
+ Resource added2 = rbacManager.saveResource( resource2 );
+ assertNotNull( added2 );
+
+ assertEquals( 2, rbacManager.getAllResources().size() );
+
+ String resFooId = resource.getIdentifier();
+ String resBarId = resource2.getIdentifier();
+ long startTime = System.currentTimeMillis();
+
+ for ( int i = 0; i <= ITERATIONS; i++ )
+ {
+ Resource resFoo = rbacManager.getResource( resFooId );
+ Resource resBar = rbacManager.getResource( resBarId );
+
+ assertNotNull( resFoo );
+ assertNotNull( resBar );
+
+ assertEquals( "foo", resFoo.getIdentifier() );
+ assertEquals( "bar", resBar.getIdentifier() );
+ }
+
+ long endTime = System.currentTimeMillis();
+
+ assertPerformance( "Resource", startTime, endTime, ITERATIONS, 500.0 );
+ }
+
+ @Test
+ public void testPerformanceUserAssignment()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+
+ rbacManager.eraseDatabase();
+
+ Role devRole = getDeveloperRole();
+ Role devPlusRole = getSuperDeveloperRole();
+ devPlusRole.setChildRoleNames( Collections.singletonList( devRole.getName() ) );
+ devRole = manager.saveRole( devRole );
+ devPlusRole = manager.saveRole( devPlusRole );
+
+ // Setup User / Assignment with 1 role.
+ String username = "bob";
+ UserAssignment assignment = manager.createUserAssignment( username );
+ assignment.addRoleName( devRole );
+ assignment = manager.saveUserAssignment( assignment );
+
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+ assertEquals( "should be only one role assigned", 1, manager.getAssignedRoles( assignment.getPrincipal() )
+ .size() );
+ assertEquals( "should be one role left to assign", 1, manager.getUnassignedRoles( assignment.getPrincipal() )
+ .size() );
+ assertEquals( 2, manager.getAllRoles().size() );
+
+ // assign the same role again to the same user
+ assignment.addRoleName( devRole.getName() );
+ manager.saveUserAssignment( assignment );
+
+ // we certainly shouldn't have 2 roles here now
+ assertEquals( 1, assignment.getRoleNames().size() );
+
+ String bobId = assignment.getPrincipal();
+
+ username = "janet";
+
+ devPlusRole.setChildRoleNames( Collections.singletonList( devRole.getName() ) );
+ devRole = manager.saveRole( devRole );
+ manager.saveRole( devPlusRole );
+
+ assignment = manager.createUserAssignment( username );
+ assignment.addRoleName( devRole );
+ assignment = manager.saveUserAssignment( assignment );
+
+ assertEquals( 2, manager.getAllUserAssignments().size() );
+ assertEquals( "should be only one role assigned", 1, manager.getAssignedRoles( assignment.getPrincipal() )
+ .size() );
+ assertEquals( "should be one role left to assign", 1, manager.getUnassignedRoles( assignment.getPrincipal() )
+ .size() );
+ assertEquals( 2, manager.getAllRoles().size() );
+
+ // assign the same role again to the same user
+ assignment.addRoleName( devRole.getName() );
+ manager.saveUserAssignment( assignment );
+
+ // we certainly shouldn't have 2 roles here now
+ assertEquals( 1, assignment.getRoleNames().size() );
+
+ String janetId = assignment.getPrincipal();
+
+ long startTime = System.currentTimeMillis();
+
+ for ( int i = 0; i <= ITERATIONS; i++ )
+ {
+ UserAssignment uaBob = rbacManager.getUserAssignment( bobId );
+ UserAssignment uaJanet = rbacManager.getUserAssignment( janetId );
+
+ assertNotNull( uaBob );
+ assertNotNull( uaJanet );
+
+ assertEquals( "bob", uaBob.getPrincipal() );
+ assertEquals( "janet", uaJanet.getPrincipal() );
+ }
+
+ long endTime = System.currentTimeMillis();
+ assertPerformance( "UserAssignment", startTime, endTime, ITERATIONS, 350.0 );
+ }
+
+ @Test
+ public void testPerformanceRoles()
+ throws RbacManagerException
+ {
+ rbacDefaults.createDefaults();
+
+ String roleIdSysAdmin = "System Administrator";
+ String roleIdUserAdmin = "User Administrator";
+
+ long startTime = System.currentTimeMillis();
+
+ for ( int i = 0; i <= ITERATIONS; i++ )
+ {
+ Role roleSysAdmin = rbacManager.getRole( roleIdSysAdmin );
+ Role roleUserAdmin = rbacManager.getRole( roleIdUserAdmin );
+
+ assertNotNull( roleSysAdmin );
+ assertNotNull( roleUserAdmin );
+
+ assertEquals( roleIdSysAdmin, roleSysAdmin.getName() );
+ assertEquals( roleIdUserAdmin, roleUserAdmin.getName() );
+ }
+
+ long endTime = System.currentTimeMillis();
+
+ assertPerformance( "Roles", startTime, endTime, ITERATIONS, 130 );
+ }
+
+ @Test
+ public void testPerformancePermissions()
+ throws RbacManagerException
+ {
+ rbacDefaults.createDefaults();
+
+ String permIdRunIndexer = "Run Indexer";
+ String permIdAddRepo = "Add Repository";
+
+ long startTime = System.currentTimeMillis();
+
+ for ( int i = 0; i <= ITERATIONS; i++ )
+ {
+ Permission permRunIndex = rbacManager.getPermission( permIdRunIndexer );
+ Permission permAddRepo = rbacManager.getPermission( permIdAddRepo );
+
+ assertNotNull( permRunIndex );
+ assertNotNull( permAddRepo );
+
+ assertEquals( permIdRunIndexer, permRunIndex.getName() );
+ assertEquals( permIdAddRepo, permAddRepo.getName() );
+ }
+
+ long endTime = System.currentTimeMillis();
+
+ assertPerformance( "Permissions", startTime, endTime, ITERATIONS, 350 );
+ }
+
+ @Test
+ public void testPerformanceOperations()
+ throws RbacManagerException
+ {
+ rbacDefaults.createDefaults();
+
+ String operIdEditRepo = "edit-repository";
+ String operIdDelRepo = "delete-repository";
+
+ long startTime = System.currentTimeMillis();
+
+ for ( int i = 0; i <= ITERATIONS; i++ )
+ {
+ Operation operEditRepo = rbacManager.getOperation( operIdEditRepo );
+ Operation operDelRepo = rbacManager.getOperation( operIdDelRepo );
+
+ assertNotNull( operEditRepo );
+ assertNotNull( operDelRepo );
+
+ assertEquals( operIdEditRepo, operEditRepo.getName() );
+ assertEquals( operIdDelRepo, operDelRepo.getName() );
+ }
+
+ long endTime = System.currentTimeMillis();
+
+ assertPerformance( "Operations", startTime, endTime, ITERATIONS, 500 );
+ }
+}
\ No newline at end of file
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerPerformanceTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerPerformanceTestCase.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerTestCase.java
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerTestCase.java?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerTestCase.java (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerTestCase.java Fri Apr 6 09:58:14 2012
@@ -0,0 +1,1044 @@
+package org.codehaus.plexus.redback.tests;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import junit.framework.TestCase;
+import org.codehaus.plexus.redback.rbac.Operation;
+import org.codehaus.plexus.redback.rbac.Permission;
+import org.codehaus.plexus.redback.rbac.RBACManager;
+import org.codehaus.plexus.redback.rbac.RbacManagerException;
+import org.codehaus.plexus.redback.rbac.RbacPermanentException;
+import org.codehaus.plexus.redback.rbac.Resource;
+import org.codehaus.plexus.redback.rbac.Role;
+import org.codehaus.plexus.redback.rbac.UserAssignment;
+import org.codehaus.plexus.redback.tests.utils.RBACDefaults;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * AbstractRbacManagerTestCase
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+@RunWith( SpringJUnit4ClassRunner.class )
+@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } )
+public abstract class AbstractRbacManagerTestCase
+ extends TestCase
+{
+ private RBACManager rbacManager;
+
+ protected RbacManagerEventTracker eventTracker;
+
+ private RBACDefaults rbacDefaults;
+
+ public void setRbacManager( RBACManager store )
+ {
+ this.rbacManager = store;
+ if ( this.rbacManager != null )
+ {
+ this.eventTracker = new RbacManagerEventTracker();
+ this.rbacManager.addListener( eventTracker );
+ }
+ rbacDefaults = new RBACDefaults( rbacManager );
+ }
+
+ public RBACManager getRbacManager()
+ {
+ return this.rbacManager;
+ }
+
+ public void setUp()
+ throws Exception
+ {
+ super.setUp();
+ }
+
+ public void tearDown()
+ throws Exception
+ {
+ super.tearDown();
+ }
+
+ private Role getAdminRole()
+ throws RbacManagerException
+ {
+ Role role = rbacManager.createRole( "ADMIN" );
+ role.setAssignable( false );
+
+ Permission perm = rbacManager.createPermission( "EDIT_ANY_USER", "EDIT", "User:*" );
+
+ role.addPermission( perm );
+
+ return role;
+ }
+
+ private Role getDeveloperRole()
+ throws RbacManagerException
+ {
+ Role role = rbacManager.createRole( "DEVELOPER" );
+ role.setAssignable( true );
+
+ Permission perm = rbacManager.createPermission( "EDIT_MY_USER", "EDIT", "User:Self" );
+
+ role.addPermission( perm );
+
+ return role;
+ }
+
+ private Role getProjectAdminRole()
+ throws RbacManagerException
+ {
+ Role role = rbacManager.createRole( "PROJECT_ADMIN" );
+ role.setAssignable( true );
+
+ Permission perm = rbacManager.createPermission( "EDIT_PROJECT", "EDIT", "Project:Foo" );
+
+ role.addPermission( perm );
+
+ return role;
+ }
+
+ private Role getSuperDeveloperRole()
+ {
+ Role role = rbacManager.createRole( "SUPER_DEVELOPER" );
+ role.setAssignable( true );
+
+ return role;
+ }
+
+ @Test
+ public void testStoreInitialization()
+ throws Exception
+ {
+ assertNotNull( rbacManager );
+
+ Role role = getAdminRole();
+
+ assertNotNull( role );
+
+ Role added = rbacManager.saveRole( role );
+
+ assertEquals( 1, rbacManager.getAllRoles().size() );
+
+ assertNotNull( added );
+
+ rbacManager.removeRole( added );
+
+ assertEquals( 0, rbacManager.getAllRoles().size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ //assertEquals( 1, eventTracker.initCount );
+ //assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 1, eventTracker.addedRoleNames.size() );
+ assertEquals( 1, eventTracker.removedRoleNames.size() );
+ assertEquals( 1, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testResources()
+ throws Exception
+ {
+ assertNotNull( rbacManager );
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Resource resource = rbacManager.createResource( "foo" );
+ Resource resource2 = rbacManager.createResource( "bar" );
+
+ assertNotNull( resource );
+
+ Resource added = rbacManager.saveResource( resource );
+ assertNotNull( added );
+ Resource added2 = rbacManager.saveResource( resource2 );
+ assertNotNull( added2 );
+
+ assertEquals( 2, rbacManager.getAllResources().size() );
+
+ rbacManager.removeResource( added );
+
+ assertEquals( 1, rbacManager.getAllResources().size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 0, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 0, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testAddGetPermission()
+ throws RbacManagerException
+ {
+ assertNotNull( rbacManager );
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role adminRole = rbacManager.saveRole( getAdminRole() );
+ rbacManager.saveRole( getDeveloperRole() );
+
+ assertEquals( 2, rbacManager.getAllRoles().size() );
+ assertEquals( 2, rbacManager.getAllPermissions().size() );
+
+ Permission createUserPerm = rbacManager.createPermission( "CREATE_USER", "CREATE", "User" );
+
+ // perm shouldn't exist in manager (yet)
+ assertEquals( 2, rbacManager.getAllPermissions().size() );
+
+ adminRole.addPermission( createUserPerm );
+ rbacManager.saveRole( adminRole );
+
+ // perm should exist in manager now.
+ assertEquals( 3, rbacManager.getAllPermissions().size() );
+ Permission fetched = rbacManager.getPermission( "CREATE_USER" );
+ assertNotNull( fetched );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 2, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 3, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testAddGetRole()
+ throws RbacManagerException
+ {
+ assertNotNull( rbacManager );
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role adminRole = rbacManager.saveRole( getAdminRole() );
+ Role develRole = rbacManager.saveRole( getDeveloperRole() );
+
+ assertEquals( 2, rbacManager.getAllRoles().size() );
+
+ Role actualAdmin = rbacManager.getRole( adminRole.getName() );
+ Role actualDevel = rbacManager.getRole( develRole.getName() );
+
+ assertEquals( adminRole, actualAdmin );
+ assertEquals( develRole, actualDevel );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 2, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 2, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testAllowRoleWithoutPermissions()
+ throws RbacManagerException
+ {
+ assertNotNull( rbacManager );
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ String rolename = "Test Role";
+
+ Role testRole = rbacManager.createRole( rolename );
+ testRole = rbacManager.saveRole( testRole );
+
+ assertNotNull( testRole );
+ assertEquals( 1, rbacManager.getAllRoles().size() );
+ assertEquals( 0, rbacManager.getAllPermissions().size() );
+
+ Role actualRole = rbacManager.getRole( rolename );
+
+ assertEquals( testRole, actualRole );
+ assertEquals( 1, rbacManager.getAllRoles().size() );
+ assertEquals( 0, rbacManager.getAllPermissions().size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 1, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 0, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testAddGetChildRole()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+ assertNotNull( manager );
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role adminRole = manager.saveRole( getAdminRole() );
+ Role develRole = manager.saveRole( getDeveloperRole() );
+
+ assertEquals( 2, manager.getAllRoles().size() );
+
+ Role actualAdmin = manager.getRole( adminRole.getName() );
+ Role actualDevel = manager.getRole( develRole.getName() );
+
+ assertEquals( adminRole, actualAdmin );
+ assertEquals( develRole, actualDevel );
+
+ // Now add a child role.
+ manager.addChildRole( develRole, getProjectAdminRole() );
+
+ manager.saveRole( develRole );
+
+ assertEquals( 3, manager.getAllRoles().size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 3, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 3, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testAddGetChildRoleViaName()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+ assertNotNull( manager );
+
+ Role adminRole = manager.saveRole( getAdminRole() );
+ Role develRole = manager.saveRole( getDeveloperRole() );
+
+ assertEquals( 2, manager.getAllRoles().size() );
+
+ Role actualAdmin = manager.getRole( adminRole.getName() );
+ Role actualDevel = manager.getRole( develRole.getName() );
+
+ assertEquals( adminRole, actualAdmin );
+ assertEquals( develRole, actualDevel );
+
+ // Now do a child role.
+ Role projectRole = getProjectAdminRole();
+ String projectRoleName = projectRole.getName();
+ manager.saveRole( projectRole );
+
+ develRole.addChildRoleName( projectRoleName );
+
+ manager.saveRole( develRole );
+
+ assertEquals( 3, manager.getAllRoles().size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 3, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 3, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testUserAssignmentAddRole()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role adminRole = manager.saveRole( getAdminRole() );
+
+ assertEquals( 1, manager.getAllRoles().size() );
+
+ String adminPrincipal = "admin";
+
+ UserAssignment assignment = manager.createUserAssignment( adminPrincipal );
+
+ assignment.addRoleName( adminRole );
+
+ manager.saveUserAssignment( assignment );
+
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+ assertEquals( 1, manager.getAllRoles().size() );
+
+ UserAssignment ua = manager.getUserAssignment( adminPrincipal );
+ assertNotNull( ua );
+
+ Role fetched = manager.getRole( "ADMIN" );
+ assertNotNull( fetched );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 1, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 1, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testUserAssignmentWithChildRoles()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+ rbacManager.eraseDatabase();
+ Role developerRole = manager.saveRole( getDeveloperRole() );
+
+ Role adminRole = getAdminRole();
+
+ adminRole.addChildRoleName( developerRole.getName() );
+
+ adminRole = manager.saveRole( adminRole );
+
+ String adminPrincipal = "admin";
+ UserAssignment assignment = manager.createUserAssignment( adminPrincipal );
+ assignment.addRoleName( adminRole );
+ assignment = manager.saveUserAssignment( assignment );
+
+ assertEquals( 1, assignment.getRoleNames().size() );
+ assertEquals( 1, manager.getAssignedRoles( adminPrincipal ).size() );
+ }
+
+ @Test
+ public void testGetAssignedPermissionsNoChildRoles()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role admin = getAdminRole();
+
+ admin = manager.saveRole( admin );
+
+ assertEquals( 1, manager.getAllRoles().size() );
+
+ String adminPrincipal = "admin";
+
+ UserAssignment ua = manager.createUserAssignment( adminPrincipal );
+
+ ua.addRoleName( admin );
+
+ manager.saveUserAssignment( ua );
+
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+
+ Set<Permission> assignedPermissions = manager.getAssignedPermissions( adminPrincipal );
+
+ assertNotNull( assignedPermissions );
+ assertEquals( 1, assignedPermissions.size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 1, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 1, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testGlobalResource()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+ Permission editConfiguration = manager.createPermission( "Edit Configuration" );
+ editConfiguration.setOperation( manager.createOperation( "edit-configuration" ) );
+ editConfiguration.setResource( manager.getGlobalResource() );
+ manager.savePermission( editConfiguration );
+
+ assertEquals( 1, manager.getAllPermissions().size() );
+ assertEquals( 1, manager.getAllOperations().size() );
+ assertEquals( 1, manager.getAllResources().size() );
+
+ Permission deleteConfiguration = manager.createPermission( "Delete Configuration" );
+ deleteConfiguration.setOperation( manager.createOperation( "delete-configuration" ) );
+ deleteConfiguration.setResource( manager.getGlobalResource() );
+ manager.savePermission( deleteConfiguration );
+
+ assertEquals( 2, manager.getAllPermissions().size() );
+ assertEquals( 2, manager.getAllOperations().size() );
+ assertEquals( 1, manager.getAllResources().size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 0, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 2, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testGlobalResourceOneLiner()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+ manager.savePermission(
+ manager.createPermission( "Edit Configuration", "edit-configuration", Resource.GLOBAL ) );
+ manager.savePermission(
+ manager.createPermission( "Delete Configuration", "delete-configuration", Resource.GLOBAL ) );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 0, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 2, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testUserAssignmentAddRemoveSecondRole()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role developerRole = getDeveloperRole();
+ manager.saveRole( developerRole );
+
+ // Setup User / Assignment with 1 role.
+ String username = "bob";
+ UserAssignment assignment = manager.createUserAssignment( username );
+ assignment.addRoleName( developerRole );
+ manager.saveUserAssignment( assignment );
+
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+ assertEquals( 1, manager.getAllRoles().size() );
+
+ // Create another role add it to manager.
+ Role projectAdmin = getProjectAdminRole();
+ String projectAdminRoleName = projectAdmin.getName();
+ manager.saveRole( projectAdmin );
+
+ // Get User Assignment, add a second role
+ UserAssignment bob = manager.getUserAssignment( username );
+ bob.addRoleName( projectAdminRoleName );
+ bob = manager.saveUserAssignment( bob );
+
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+ assertEquals( 2, manager.getAllRoles().size() );
+ assertEquals( 2, bob.getRoleNames().size() );
+ assertEquals( 0, manager.getUnassignedRoles( bob.getPrincipal() ).size() );
+
+ List<String> roles = bob.getRoleNames();
+ assertEquals( 2, roles.size() );
+
+ // Remove 1 role from bob, end up with 1 role for bob.
+ roles.remove( projectAdminRoleName );
+ assertEquals( 1, roles.size() );
+ bob.setRoleNames( roles );
+ bob = manager.saveUserAssignment( bob );
+ assertEquals( "Should only have 1 role under bob now.", 1, bob.getRoleNames().size() );
+ assertEquals( "Should have 2 total roles still.", 2, manager.getAllRoles().size() );
+ assertEquals( "Should have 1 assignable role", 1, manager.getUnassignedRoles( bob.getPrincipal() ).size() );
+
+ // Fetch bob again. see if role is missing.
+ UserAssignment cousin = manager.getUserAssignment( username );
+ assertEquals( 1, cousin.getRoleNames().size() );
+
+ assertEquals( "Should only have 1 role under bob now.", 1, cousin.getRoleNames().size() );
+ assertEquals( "Should have 2 total roles still.", 2, manager.getAllRoles().size() );
+
+ // remove the last role
+ roles.remove( developerRole.getName() );
+ bob.setRoleNames( roles );
+ bob = manager.saveUserAssignment( bob );
+ assertEquals( "Should have 2 assignable roles.", 2, manager.getUnassignedRoles( bob.getPrincipal() ).size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 2, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 2, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testUserAssignmentMultipleRoles()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role devRole = getDeveloperRole();
+ manager.saveRole( devRole );
+
+ // Setup User / Assignment with 1 role.
+ String username = "bob";
+ UserAssignment assignment = manager.createUserAssignment( username );
+ assignment.addRoleName( devRole );
+ assignment = manager.saveUserAssignment( assignment );
+
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+ assertEquals( 1, manager.getAllRoles().size() );
+
+ // assign the same role again to the same user
+ assignment.addRoleName( devRole.getName() );
+ manager.saveUserAssignment( assignment );
+
+ // we certainly shouldn't have 2 roles here now
+ assertEquals( 1, assignment.getRoleNames().size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 1, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 1, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testUserAssignmentMultipleRolesWithChildRoles()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role devRole = getDeveloperRole();
+ Role devPlusRole = getSuperDeveloperRole();
+ devPlusRole.setChildRoleNames( Collections.singletonList( devRole.getName() ) );
+ manager.saveRole( devRole );
+ manager.saveRole( devPlusRole );
+
+ // Setup User / Assignment with 1 role.
+ String username = "bob";
+ UserAssignment assignment = manager.createUserAssignment( username );
+ assignment.addRoleName( devRole );
+ assignment = manager.saveUserAssignment( assignment );
+
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+ assertEquals( "should be only one role assigned", 1,
+ manager.getAssignedRoles( assignment.getPrincipal() ).size() );
+ assertEquals( "should be one role left to assign", 1,
+ manager.getUnassignedRoles( assignment.getPrincipal() ).size() );
+ assertEquals( 2, manager.getAllRoles().size() );
+
+ // assign the same role again to the same user
+ assignment.addRoleName( devRole.getName() );
+ manager.saveUserAssignment( assignment );
+
+ // we certainly shouldn't have 2 roles here now
+ assertEquals( 1, assignment.getRoleNames().size() );
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 2, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 1, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testGetAssignedRoles()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+ rbacManager.eraseDatabase();
+
+ Role adminRole = manager.saveRole( getAdminRole() );
+ Role projectAdminRole = manager.saveRole( getProjectAdminRole() );
+ Role developerRole = manager.saveRole( getDeveloperRole() );
+
+ // Setup 3 roles.
+ assertEquals( 3, manager.getAllRoles().size() );
+
+ // Setup User / Assignment with 3 roles.
+ String username = "bob";
+
+ UserAssignment assignment = manager.createUserAssignment( username );
+ assignment.addRoleName( developerRole.getName() );
+ assignment.addRoleName( projectAdminRole.getName() );
+ assignment.addRoleName( adminRole.getName() );
+ assignment = manager.saveUserAssignment( assignment );
+
+ assertEquals( 3, assignment.getRoleNames().size() );
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+ assertEquals( 3, manager.getAllRoles().size() );
+
+ afterSetup();
+
+ // Get the List of Assigned Roles for user bob.
+ Collection<Role> assignedRoles = manager.getAssignedRoles( username );
+
+ assertNotNull( assignedRoles );
+ assertEquals( 3, assignedRoles.size() );
+ }
+
+ @Test
+ public void testGetAssignedPermissions()
+ throws RbacManagerException
+ {
+ RBACManager manager = rbacManager;
+ rbacManager.eraseDatabase();
+ // Setup 3 roles.
+ manager.saveRole( getAdminRole() );
+ manager.saveRole( getProjectAdminRole() );
+ Role added = manager.saveRole( getDeveloperRole() );
+ String roleName = added.getName();
+
+ assertEquals( 3, manager.getAllRoles().size() );
+ assertEquals( 3, manager.getAllPermissions().size() );
+
+ // Setup User / Assignment with 1 role.
+ String username = "bob";
+
+ UserAssignment assignment = manager.createUserAssignment( username );
+ assignment.addRoleName( roleName );
+ manager.saveUserAssignment( assignment );
+
+ assertEquals( 1, manager.getAllUserAssignments().size() );
+ assertEquals( 3, manager.getAllRoles().size() );
+ assertEquals( 3, manager.getAllPermissions().size() );
+
+ // Get the List of Assigned Roles for user bob.
+ Collection<Permission> assignedPermissions = manager.getAssignedPermissions( username );
+
+ assertNotNull( assignedPermissions );
+ assertEquals( 1, assignedPermissions.size() );
+ }
+
+ public Role getChildRole( RBACManager manager, Role role, String expectedChildRoleName, int childRoleCount )
+ throws RbacManagerException
+ {
+ assertTrue( role.hasChildRoles() );
+ List<String> childNames = role.getChildRoleNames();
+ assertNotNull( childNames );
+ assertEquals( 1, childNames.size() );
+ String childName = (String) childNames.get( 0 );
+ assertNotNull( childName );
+ Role childRole = manager.getRole( childName );
+ assertNotNull( childRole );
+ assertEquals( expectedChildRoleName, childRole.getName() );
+
+ return childRole;
+ }
+
+ @Test
+ public void testGetRolesDeep()
+ throws RbacManagerException
+ {
+ rbacManager.eraseDatabase();
+ rbacDefaults.createDefaults();
+
+ // Setup User / Assignment with 1 role.
+ String username = "bob";
+
+ UserAssignment assignment = rbacManager.createUserAssignment( username );
+ assignment.addRoleName( "Developer" );
+ rbacManager.saveUserAssignment( assignment );
+
+ assertEquals( 1, rbacManager.getAllUserAssignments().size() );
+ assertEquals( 4, rbacManager.getAllRoles().size() );
+ assertEquals( 6, rbacManager.getAllPermissions().size() );
+
+ // Get the List of Assigned Roles for user bob.
+ Role devel = rbacManager.getRole( "Developer" );
+ assertNotNull( devel );
+
+ // First Depth.
+ Role trusted = getChildRole( rbacManager, devel, "Trusted Developer", 1 );
+
+ // Second Depth.
+ Role sysAdmin = getChildRole( rbacManager, trusted, "System Administrator", 1 );
+
+ // Third Depth.
+ getChildRole( rbacManager, sysAdmin, "User Administrator", 1 );
+ }
+
+ @Test
+ public void testGetAssignedPermissionsDeep()
+ throws RbacManagerException
+ {
+ rbacDefaults.createDefaults();
+
+ // Setup User / Assignment with 1 role.
+ String username = "bob";
+
+ UserAssignment assignment = rbacManager.createUserAssignment( username );
+ assignment.addRoleName( "Developer" );
+ rbacManager.saveUserAssignment( assignment );
+
+ assertEquals( 1, rbacManager.getAllUserAssignments().size() );
+ assertEquals( 4, rbacManager.getAllRoles().size() );
+ assertEquals( 6, rbacManager.getAllPermissions().size() );
+
+ afterSetup();
+
+ // Get the List of Assigned Roles for user bob.
+ Collection<Permission> assignedPermissions = rbacManager.getAssignedPermissions( username );
+
+ assertNotNull( assignedPermissions );
+ assertEquals( 6, assignedPermissions.size() );
+ }
+
+ @Test
+ public void testLargeApplicationInit()
+ throws RbacManagerException
+ {
+
+ rbacManager.eraseDatabase();
+ rbacDefaults.createDefaults();
+ assertEquals( 6, rbacManager.getAllPermissions().size() );
+ assertEquals( 11, rbacManager.getAllOperations().size() );
+ assertEquals( 4, rbacManager.getAllRoles().size() );
+ }
+
+ @Test
+ public void testAddRemovePermanentPermission()
+ throws RbacManagerException
+ {
+ assertNotNull( rbacManager );
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role adminRole = rbacManager.saveRole( getAdminRole() );
+ rbacManager.saveRole( getDeveloperRole() );
+
+ assertEquals( 2, rbacManager.getAllRoles().size() );
+ assertEquals( 2, rbacManager.getAllPermissions().size() );
+
+ Permission createUserPerm = rbacManager.createPermission( "CREATE_USER", "CREATE", "User" );
+ createUserPerm.setPermanent( true );
+
+ // perm shouldn't exist in manager (yet)
+ assertEquals( 2, rbacManager.getAllPermissions().size() );
+
+ adminRole.addPermission( createUserPerm );
+ rbacManager.saveRole( adminRole );
+
+ // perm should exist in manager now.
+ assertEquals( 3, rbacManager.getAllPermissions().size() );
+ Permission fetched = rbacManager.getPermission( "CREATE_USER" );
+ assertNotNull( fetched );
+
+ // Attempt to remove perm now.
+ try
+ {
+ // Use permission name technique first.
+ rbacManager.removePermission( "CREATE_USER" );
+ }
+ catch ( RbacPermanentException e )
+ {
+ // expected path.
+ }
+
+ try
+ {
+ // Use permission object technique next.
+ rbacManager.removePermission( fetched );
+ }
+ catch ( RbacPermanentException e )
+ {
+ // expected path.
+ }
+
+ // Assert some event tracker stuff
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 2, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 3, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testAddRemovePermanentRole()
+ throws RbacManagerException
+ {
+ assertNotNull( rbacManager );
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+
+ Role adminRole = getAdminRole();
+ adminRole.setPermanent( true );
+
+ adminRole = rbacManager.saveRole( adminRole );
+ Role develRole = rbacManager.saveRole( getDeveloperRole() );
+
+ assertEquals( 2, rbacManager.getAllRoles().size() );
+
+ Role actualAdmin = rbacManager.getRole( adminRole.getName() );
+ Role actualDevel = rbacManager.getRole( develRole.getName() );
+
+ assertEquals( adminRole, actualAdmin );
+ assertEquals( develRole, actualDevel );
+
+ // Attempt to remove perm now.
+ try
+ {
+ // Use role name technique first.
+ rbacManager.removeRole( adminRole.getName() );
+ }
+ catch ( RbacPermanentException e )
+ {
+ // expected path.
+ }
+
+ try
+ {
+ // Use role object technique next.
+ rbacManager.removeRole( adminRole );
+ }
+ catch ( RbacPermanentException e )
+ {
+ // expected path.
+ }
+
+ /* Assert some event tracker stuff */
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 2, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 2, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ @Test
+ public void testAddRemovePermanentOperation()
+ throws RbacManagerException
+ {
+
+ rbacManager.eraseDatabase();
+ eventTracker.rbacInit( true );
+ assertNotNull( rbacManager );
+
+ Role adminRole = rbacManager.saveRole( getAdminRole() );
+ rbacManager.saveRole( getDeveloperRole() );
+
+ assertEquals( 2, rbacManager.getAllRoles().size() );
+ assertEquals( 2, rbacManager.getAllPermissions().size() );
+
+ Permission createUserPerm = rbacManager.createPermission( "CREATE_USER", "CREATE", "User" );
+ createUserPerm.getOperation().setPermanent( true );
+
+ // perm shouldn't exist in manager (yet)
+ assertEquals( 2, rbacManager.getAllPermissions().size() );
+ assertEquals( 1, rbacManager.getAllOperations().size() );
+
+ adminRole.addPermission( createUserPerm );
+ rbacManager.saveRole( adminRole );
+
+ // perm should exist in manager now.
+ assertEquals( 2, rbacManager.getAllOperations().size() );
+ Operation fetched = rbacManager.getOperation( "CREATE" );
+ assertNotNull( fetched );
+
+ // Attempt to remove operation now.
+ try
+ {
+ // Use operation name technique first.
+ rbacManager.removeOperation( "CREATE" );
+ }
+ catch ( RbacPermanentException e )
+ {
+ // expected path.
+ }
+
+ try
+ {
+ // Use operation object technique next.
+ rbacManager.removeOperation( fetched );
+ }
+ catch ( RbacPermanentException e )
+ {
+ // expected path.
+ }
+
+ // Assert some event tracker stuff
+ assertNotNull( eventTracker );
+ assertEquals( 1, eventTracker.initCount );
+ assertTrue( eventTracker.lastDbFreshness.booleanValue() );
+
+ assertEquals( 2, eventTracker.addedRoleNames.size() );
+ assertEquals( 0, eventTracker.removedRoleNames.size() );
+ assertEquals( 3, eventTracker.addedPermissionNames.size() );
+ assertEquals( 0, eventTracker.removedPermissionNames.size() );
+ }
+
+ /**
+ * Allows subclasses to hook code after a test case has finished it's setup
+ */
+ protected void afterSetup()
+ {
+ // do nothing
+ }
+}
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/AbstractRbacManagerTestCase.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/RbacManagerEventTracker.java
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/RbacManagerEventTracker.java?rev=1310268&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/RbacManagerEventTracker.java (added)
+++ archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/RbacManagerEventTracker.java Fri Apr 6 09:58:14 2012
@@ -0,0 +1,109 @@
+package org.codehaus.plexus.redback.tests;
+
+/*
+ * Copyright 2001-2006 The Codehaus.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.codehaus.plexus.redback.rbac.Permission;
+import org.codehaus.plexus.redback.rbac.RBACManagerListener;
+import org.codehaus.plexus.redback.rbac.Role;
+import org.codehaus.plexus.redback.rbac.UserAssignment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * RbacManagerEventTracker
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class RbacManagerEventTracker
+ implements RBACManagerListener
+{
+ public long initCount = 0;
+
+ public Boolean lastDbFreshness;
+
+ public List<String> addedRoleNames = new ArrayList<String>();
+
+ public List<String> removedRoleNames = new ArrayList<String>();
+
+ public List<String> addedPermissionNames = new ArrayList<String>();
+
+ public List<String> removedPermissionNames = new ArrayList<String>();
+
+ public void rbacInit( boolean freshdb )
+ {
+ log( "Init - freshdb: " + freshdb );
+ initCount++;
+ lastDbFreshness = Boolean.valueOf( freshdb );
+ }
+
+ public void rbacPermissionRemoved( Permission permission )
+ {
+ log( "Permission Removed: " + permission.getName() );
+ String obj = permission.getName();
+ if ( !removedPermissionNames.contains( obj ) )
+ {
+ removedPermissionNames.add( obj );
+ }
+ }
+
+ public void rbacPermissionSaved( Permission permission )
+ {
+ log( "Permission Saved: " + permission.getName() );
+ String obj = permission.getName();
+ if ( !addedPermissionNames.contains( obj ) )
+ {
+ addedPermissionNames.add( obj );
+ }
+ }
+
+ public void rbacRoleRemoved( Role role )
+ {
+ log( "Role Removed: " + role.getName() );
+ String obj = role.getName();
+ if ( !removedRoleNames.contains( obj ) )
+ {
+ removedRoleNames.add( obj );
+ }
+ }
+
+ public void rbacRoleSaved( Role role )
+ {
+ log( "Role Saved: " + role.getName() );
+ String obj = role.getName();
+ if ( !addedRoleNames.contains( obj ) )
+ {
+ addedRoleNames.add( obj );
+ }
+ }
+
+ public void rbacUserAssignmentRemoved( UserAssignment userAssignment )
+ {
+
+ }
+
+ public void rbacUserAssignmentSaved( UserAssignment userAssignment )
+ {
+
+ }
+
+ private void log( String msg )
+ {
+ System.out.println( "[RBAC Event Tracker] " + msg );
+ }
+}
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/RbacManagerEventTracker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: archiva/redback/redback-core/trunk/redback-rbac/redback-rbac-tests/src/main/java/org/codehaus/plexus/redback/tests/RbacManagerEventTracker.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision