[jboss-svn-commits] JBL Code SVN: r18644 - in labs/jbosslabs/labs-3.0-build: core/core-model/src/main/java/org/jboss/labs/core/model/auth and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Feb 29 14:29:15 EST 2008


Author: szimano
Date: 2008-02-29 14:29:15 -0500 (Fri, 29 Feb 2008)
New Revision: 18644

Added:
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/auth/NoSuchSuperUserException.java
   labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/TestRoles.java
Modified:
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/AuthID.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Binding.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Service.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ServiceRole.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/SuperUsers.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/User.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/UserRole.java
   labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java
   labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java
   labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/CredentialTest.java
   labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/UserServiceTest.java
Log:
jblab-901. bigfixes. superusers still do not work

Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -33,6 +33,7 @@
 import org.jboss.labs.core.model.auth.UserRole;
 import org.jboss.labs.exception.auth.BindingAlreadyExistsException;
 import org.jboss.labs.exception.auth.NoSuchServiceRoleException;
+import org.jboss.labs.exception.auth.NoSuchSuperUserException;
 import org.jboss.labs.exception.auth.NoSuchUserException;
 import org.jboss.labs.exception.auth.NoSuchUserRoleException;
 
@@ -81,11 +82,12 @@
 	 *            User role
 	 * @param projectId
 	 *            Project id
-	 * @throws NoSuchUserRoleException 
+	 * @throws NoSuchUserRoleException
 	 * @throws BindingAlreadyExistsException
 	 */
 	public <E extends Enum<E>> void bindRolesWithProject(E serviceRole,
-			UserRole role, String projectId) throws NoSuchUserRoleException, BindingAlreadyExistsException;
+			UserRole role, String projectId) throws NoSuchUserRoleException,
+			BindingAlreadyExistsException;
 
 	/**
 	 * Binds given service role with a user role for a given custom id.
@@ -98,13 +100,16 @@
 	 *            User role
 	 * @param customId
 	 *            Custom id
-	 * @throws NoSuchUserRoleException If user role doesn't exist
-	 * @throws BindingAlreadyExistsException If binding already exists
+	 * @throws NoSuchUserRoleException
+	 *             If user role doesn't exist
+	 * @throws BindingAlreadyExistsException
+	 *             If binding already exists
 	 * @see org.jboss.labs.core.model.auth.CustomID
 	 * @see org.jboss.labs.auth.custom.CustomIDProvider
 	 */
 	public <E extends Enum<E>> void bindRolesWithId(E serviceRole,
-			UserRole role, CustomID customId) throws NoSuchUserRoleException, BindingAlreadyExistsException;
+			UserRole role, CustomID customId) throws NoSuchUserRoleException,
+			BindingAlreadyExistsException;
 
 	/**
 	 * Binds service role to a user role globally. This means that members of
@@ -130,22 +135,48 @@
 	 *            User
 	 * @param projectId
 	 *            Project id
-	 * @throws NoSuchUserException When specified user doesn't exist
+	 * @throws NoSuchUserException
+	 *             When specified user doesn't exist
 	 */
-	public void grantUserProjectSuperrole(Principal user, String projectId) throws NoSuchUserException;
+	public void grantUserProjectSuperrole(Principal user, String projectId)
+			throws NoSuchUserException;
 
 	/**
+	 * Revokes user super role for a project
+	 * 
+	 * @param user
+	 *            User to revoke
+	 * @throws NoSuchUserException
+	 *             When specified user doesn't exist
+	 * @throws NoSuchSuperUserException If the user doesn't have privileges
+	 */
+	public void revokeUserProjectSuperrole(Principal user, String projectId)
+			throws NoSuchUserException, NoSuchSuperUserException;
+
+	/**
 	 * Grants global superrole to a user. User with a superrole can perform any
 	 * actions (checking isAllowedProject and isAlloweCustom will always return
 	 * true)
 	 * 
 	 * @param user
 	 *            User
-	 * @throws NoSuchUserException When specified user doesn't exist
+	 * @throws NoSuchUserException
+	 *             When specified user doesn't exist
 	 */
 	public void grantUserSuperrole(Principal user) throws NoSuchUserException;
 
 	/**
+	 * Revokes user super role.
+	 * 
+	 * @param user
+	 *            User to revoke from.
+	 * @throws NoSuchUserException
+	 *             When specified user doesn't exist
+	 * @throws NoSuchSuperUserException If the user doesn't have privileges
+	 */
+	public void revokeUserSuperrole(Principal user) throws NoSuchUserException, NoSuchSuperUserException;
+
+	/**
 	 * Returns service role object.
 	 * 
 	 * @param <E>
@@ -155,14 +186,20 @@
 	 * @return Service role object
 	 */
 	public <E extends Enum<E>> ServiceRole getServiceRole(E serviceRole);
-	
-	/** Returns entity of project id. Creates new one if it's not in the database.
-	 * @param projectID New project id.
+
+	/**
+	 * Returns entity of project id. Creates new one if it's not in the
+	 * database.
+	 * 
+	 * @param projectID
+	 *            New project id.
 	 * @return Project id.
 	 */
 	public ProjectID getProjectID(String projectID);
-	
-	/** Returns object of project id for the global architecture.
+
+	/**
+	 * Returns object of project id for the global architecture.
+	 * 
 	 * @return Object of global project id.
 	 */
 	public ProjectID getGlobalProjectID();

Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -201,11 +201,23 @@
 			throws NoSuchUserException, NoSuchUserRoleException,
 			NoSuchRoleForUserException;
 
-	/** Removes user from database.
-	 * @param user User to remove.
-	 * @throws NoSuchUserException If the user doesn't exist.
+	/**
+	 * Removes user from database.
+	 * 
+	 * @param user
+	 *            User to remove.
+	 * @throws NoSuchUserException
+	 *             If the user doesn't exist.
 	 */
 	public void removeUser(Principal user) throws NoSuchUserException;
-	
+
+	/**
+	 * Gets common role that users are added to when added to a project. Used by
+	 * other services - provided for coherence.
+	 * 
+	 * @param projectID
+	 *            Project id.
+	 * @return UserRole object for a project. Will get created if needed.
+	 */
 	public UserRole getCommonRoleForProject(String projectID);
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/AuthID.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/AuthID.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/AuthID.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -55,5 +55,16 @@
 	public int compareTo(AuthID o) {
 		return this.authId.compareTo(o.getAuthId());
 	}
+	
+	public boolean equals(Object o) {
+		if (o == null)
+			return false;
 
+		if (o instanceof AuthID) {
+			return authId.equals(((AuthID) o).getAuthId());
+		}
+
+		return false;
+	}
+
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Binding.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Binding.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Binding.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -97,4 +97,15 @@
 	public long getBinderId() {
 		return binderId;
 	}
+	
+	public boolean equals(Object o) {
+		if (o == null)
+			return false;
+
+		if (o instanceof Binding) {
+			return binderId == ((Binding) o).getBinderId();
+		}
+
+		return false;
+	}
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Service.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Service.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Service.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -145,4 +145,15 @@
 	public int compareTo(Service o) {
 		return id.compareTo(o.getId());
 	}
+	
+	public boolean equals(Object o) {
+		if (o == null)
+			return false;
+
+		if (o instanceof Service) {
+			return id.equals(((Service) o).getId());
+		}
+
+		return false;
+	}
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ServiceRole.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ServiceRole.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ServiceRole.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -80,8 +80,15 @@
 		return id.compareTo(o.getId());
 	}
 
-	public boolean equals(ServiceRole o) {
-		return id.equals(o.getId());
+	public boolean equals(Object o) {
+		if (o == null)
+			return false;
+
+		if (o instanceof ServiceRole) {
+			return id.equals(((ServiceRole) o).getId());
+		}
+
+		return false;
 	}
 
 	@Override

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/SuperUsers.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/SuperUsers.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/SuperUsers.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -33,6 +33,8 @@
 import javax.persistence.Id;
 import javax.persistence.OneToMany;
 
+import org.jboss.labs.exception.auth.NoSuchSuperUserException;
+
 /**
  * @author tomaszszymanski
  *
@@ -81,4 +83,27 @@
 	public void setSuperUsers(Set<User> superUsers) {
 		this.superUsers = superUsers;
 	}
+	
+	public boolean equals(Object o) {
+		if (o == null)
+			return false;
+
+		if (o instanceof SuperUsers) {
+			return id.equals(((SuperUsers) o).getId());
+		}
+
+		return false;
+	}
+
+	/**
+	 * @param userEn
+	 * @throws NoSuchSuperUserException 
+	 */
+	public void removeSuperUser(User userEn) throws NoSuchSuperUserException {
+		if (superUsers == null || !superUsers.contains(userEn)) {
+			throw new NoSuchSuperUserException("SuperUsers = "+id+" don't have a user "+userEn);
+		}
+		
+		superUsers.remove(userEn);
+	}
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/User.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/User.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/User.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -25,6 +25,7 @@
 import org.jboss.labs.exception.auth.NoSuchRoleForUserException;
 
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.Id;
 import javax.persistence.OneToMany;
 import javax.persistence.Version;
@@ -50,18 +51,19 @@
 	private String bio;
 	private String website;
 	private String pictureURL;
-    private String email;
-    private String fakeEmail;
-    private String firstName;
-    private String lastName;
+	private String email;
+	private String fakeEmail;
+	private String firstName;
+	private String lastName;
 
-    private String password;
+	private String password;
 
-	@OneToMany
+	@OneToMany(fetch=FetchType.EAGER)
 	private Set<UserRole> userRoles = new TreeSet<UserRole>();
 
-	public User () { }
-	
+	public User() {
+	}
+
 	public User(String username) {
 		this.name = username;
 	}
@@ -77,7 +79,7 @@
 	public void setVersion(Integer version) {
 		this.version = version;
 	}
-	
+
 	public String getBio() {
 		return bio;
 	}
@@ -122,15 +124,15 @@
 		this.password = password;
 	}
 
-    public String getEmail() {
-        return email;
-    }
+	public String getEmail() {
+		return email;
+	}
 
-    public void setEmail(String email) {
-        this.email = email;
-    }
+	public void setEmail(String email) {
+		this.email = email;
+	}
 
-    /**
+	/**
 	 * Adds role for a user
 	 * 
 	 * @param role
@@ -187,7 +189,9 @@
 		this.lastName = lastName;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see java.lang.Comparable#compareTo(java.lang.Object)
 	 */
 	public int compareTo(User o) {
@@ -198,4 +202,22 @@
 	public int hashCode() {
 		return name.hashCode();
 	}
+
+	public String toString() {
+		return "{User::name=" + name + "::first=" + firstName + "::last="
+				+ lastName + "::fake=" + fakeEmail + "::bio=" + bio
+				+ "::website=" + website + "::pictureurl=" + pictureURL
+				+ "::email=" + email + "}";
+	}
+	
+	public boolean equals(Object o) {
+		if (o == null)
+			return false;
+
+		if (o instanceof User) {
+			return name.equals(((User) o).getName());
+		}
+
+		return false;
+	}
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/UserRole.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/UserRole.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/UserRole.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -28,7 +28,7 @@
 import javax.persistence.Id;
 
 @Entity
-public class UserRole implements Comparable<UserRole>, Serializable{
+public class UserRole implements Comparable<UserRole>, Serializable {
 	/**
 	 * 
 	 */
@@ -36,11 +36,12 @@
 
 	@Id
 	private String id;
-	
+
 	private String description;
 
-	public UserRole() { }
-	
+	public UserRole() {
+	}
+
 	public UserRole(String id, String description) {
 		this.id = id;
 		this.description = description;
@@ -61,17 +62,24 @@
 	public String getId() {
 		return id;
 	}
-	
-	public boolean equals(UserRole o) {
-		return id.equals(o.getId());
+
+	public boolean equals(Object o) {
+		if (o == null)
+			return false;
+
+		if (o instanceof UserRole) {
+			return id.equals(((UserRole) o).getId());
+		}
+
+		return false;
 	}
 
 	public void setId(String id) {
 		this.id = id;
 	}
-	
+
 	public String toString() {
-		return "[UserRole::id="+id+"::desctiption="+description+"]";
+		return "{UserRole::id=" + id + "::desctiption=" + description + "}";
 	}
 
 	@Override
@@ -79,5 +87,4 @@
 		return id.hashCode();
 	}
 
-	
 }

Added: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/auth/NoSuchSuperUserException.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/auth/NoSuchSuperUserException.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/auth/NoSuchSuperUserException.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -0,0 +1,45 @@
+/**
+ * 
+ */
+package org.jboss.labs.exception.auth;
+
+import org.jboss.labs.exception.LabsException;
+
+/*
+ * JBoss Labs. http://labs.jboss.com/jbosslabs
+ * 
+ * Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+ * 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ * 
+ * Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik, 
+ * 	Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+ */
+
+/**
+ * @author tomaszszymanski
+ *
+ */
+public class NoSuchSuperUserException extends LabsException {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public NoSuchSuperUserException(String msg){
+		super(msg);
+	}
+}

Modified: labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -48,6 +48,7 @@
 import org.jboss.labs.core.model.auth.UserRole;
 import org.jboss.labs.exception.auth.BindingAlreadyExistsException;
 import org.jboss.labs.exception.auth.NoSuchServiceRoleException;
+import org.jboss.labs.exception.auth.NoSuchSuperUserException;
 import org.jboss.labs.exception.auth.NoSuchUserException;
 import org.jboss.labs.exception.auth.NoSuchUserRoleException;
 
@@ -65,27 +66,30 @@
 
 	private final static Logger log = Logger
 			.getLogger(RoleBinderServiceImpl.class);
-	
+
 	public <E extends Enum<E>> void bindRolesWithId(E serviceRole,
-			UserRole role, CustomID customId) throws NoSuchUserRoleException, BindingAlreadyExistsException {
+			UserRole role, CustomID customId) throws NoSuchUserRoleException,
+			BindingAlreadyExistsException {
 		bindRolesWith(serviceRole, role, customId);
 
 	}
 
 	public <E extends Enum<E>> void bindRolesWithProject(E serviceRole,
-			UserRole role, String projectId) throws NoSuchUserRoleException, BindingAlreadyExistsException {
-		
+			UserRole role, String projectId) throws NoSuchUserRoleException,
+			BindingAlreadyExistsException {
+
 		ProjectID pid = getProjectID(projectId);
-		
+
 		bindRolesWith(serviceRole, role, pid);
-		
+
 	}
-	
+
 	private <E extends Enum<E>> void bindRolesWith(E serviceRole,
-			UserRole role, AuthID authID) throws NoSuchUserRoleException, BindingAlreadyExistsException {
+			UserRole role, AuthID authID) throws NoSuchUserRoleException,
+			BindingAlreadyExistsException {
 		ServiceRole srEn = getServiceRole(serviceRole);
 		UserRole roleEn = userService.getUserRole(role);
-		
+
 		Service service = getService(serviceRole);
 
 		if (manager
@@ -94,11 +98,16 @@
 				.setParameter("id", authID).setParameter("userRole", roleEn)
 				.setParameter("serviceRole", srEn).setParameter("service",
 						service).getResultList().size() > 1) {
-			throw new BindingAlreadyExistsException("Binding for servicerole: "+serviceRole+", role: "+role+" and id: "+authID + " already exists");
+			throw new BindingAlreadyExistsException("Binding for servicerole: "
+					+ serviceRole + ", role: " + role + " and id: " + authID
+					+ " already exists");
 		}
-		
+
 		Binding b = new Binding();
-		b.setAuthId(authID); b.setService(service); b.setServiceRole(srEn); b.setUserRole(roleEn);
+		b.setAuthId(authID);
+		b.setService(service);
+		b.setServiceRole(srEn);
+		b.setUserRole(roleEn);
 
 		manager.persist(b);
 	}
@@ -144,22 +153,24 @@
 
 	public <E extends Enum<E>> void bindRolesGlobal(E serviceRole, UserRole role) {
 		// TODO Auto-generated method stub
-		throw new RuntimeException("bindRolesGlobal(...) is not implemented yet");
+		throw new RuntimeException(
+				"bindRolesGlobal(...) is not implemented yet");
 	}
 
-	public void grantUserProjectSuperrole(Principal user, String projectId) throws NoSuchUserException {
+	public void grantUserProjectSuperrole(Principal user, String projectId)
+			throws NoSuchUserException {
 		User userEn = userService.getUserByLogin(user.getName());
 		ProjectID pid = getProjectID(projectId);
-		
+
 		SuperUsers su = manager.find(SuperUsers.class, pid.getAuthId());
-		
+
 		if (su == null) {
 			su = new SuperUsers(pid);
 			manager.persist(su);
 		}
-		
+
 		su.addSuperUser(userEn);
-		
+
 		manager.merge(su);
 	}
 
@@ -213,11 +224,45 @@
 		return pidEn;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.jboss.labs.auth.RoleBinderService#getGlobalProjectID()
 	 */
 	public ProjectID getGlobalProjectID() {
 		return getProjectID(AuthHelper.GLOBAL_PROJECT);
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.jboss.labs.auth.RoleBinderService#revokeUserProjectSuperrole(java.security.Principal)
+	 */
+	public void revokeUserProjectSuperrole(Principal user, String projectId)
+			throws NoSuchUserException, NoSuchSuperUserException {
+		User userEn = userService.getUserByLogin(user.getName());
+		ProjectID pid = getProjectID(projectId);
+
+		SuperUsers su = manager.find(SuperUsers.class, pid.getAuthId());
+
+		if (su == null) {
+			su = new SuperUsers(pid);
+			manager.persist(su);
+		}
+
+		su.removeSuperUser(userEn);
+
+		manager.merge(su);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.jboss.labs.auth.RoleBinderService#revokeUserSuperrole(java.security.Principal)
+	 */
+	public void revokeUserSuperrole(Principal user) throws NoSuchUserException,
+			NoSuchSuperUserException {
+		revokeUserProjectSuperrole(user, AuthHelper.GLOBAL_PROJECT);
+	}
+
 }

Modified: labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -268,7 +268,7 @@
 	public Set<User> getSuperusers() {
 		Set<User> usrs = (Set<User>) manager.createQuery(
 				"SELECT superUsers FROM SuperUsers su WHERE su.id = :project")
-				.setParameter("project", binderService.getGlobalProjectID())
+				.setParameter("project", binderService.getGlobalProjectID().getAuthId())
 				.getSingleResult();
 
 		if (usrs != null) {
@@ -287,7 +287,7 @@
 	public Set<User> getSuperusersForProject(String projectId) {
 		Set<User> usrs = (Set<User>) manager.createQuery(
 				"SELECT superUsers FROM SuperUsers su WHERE su.id = :project")
-				.setParameter("project", binderService.getProjectID(projectId))
+				.setParameter("project", binderService.getProjectID(projectId).getAuthId())
 				.getSingleResult();
 
 		if (usrs != null) {

Modified: labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/CredentialTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/CredentialTest.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/CredentialTest.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -13,6 +13,7 @@
 import org.jboss.labs.core.model.auth.UserRole;
 import org.jboss.labs.exception.auth.NoSuchUserException;
 import org.jboss.labs.exception.auth.NoSuchUserRoleException;
+import org.jboss.labs.exception.auth.RoleExistsException;
 import org.jboss.labs.exception.auth.UserExistsException;
 import org.jboss.labs.test.LabsTest;
 
@@ -60,6 +61,8 @@
 	
 	private final static String ROLE_ID = "TestRole";
 	
+	protected final static String TEST_PROJECT = "TEST_PROJECT";
+	
 	private Set<User> usersToDelete;
 	private Set<UserRole> rolesToDelete;
 	
@@ -112,10 +115,12 @@
 		return u;
 	}
 
-	protected UserRole getNewUserRole() {
+	protected UserRole getNewUserRole() throws RoleExistsException {
 		String id = getUniqueRoleID(ROLE_ID);
 		
 		UserRole ur = new UserRole(id, "test role "+id);
+		
+		userService.addUserRole(ur);
 		rolesToDelete.add(ur);
 		
 		return ur;

Added: labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/TestRoles.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/TestRoles.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/TestRoles.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -0,0 +1,38 @@
+/**
+ * 
+ */
+package org.jboss.labs.test.credential;
+
+/*
+ * JBoss Labs. http://labs.jboss.com/jbosslabs
+ * 
+ * Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+ * 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ * 
+ * Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik, 
+ * 	Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+ */
+
+/**
+ * @author tomaszszymanski
+ *
+ */
+public enum TestRoles {
+	ADMIN,
+	USER,
+	KALAFIOR,
+	KOPYTKO
+}

Modified: labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/UserServiceTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/UserServiceTest.java	2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/UserServiceTest.java	2008-02-29 19:29:15 UTC (rev 18644)
@@ -3,8 +3,12 @@
  */
 package org.jboss.labs.test.credential;
 
+import java.util.Set;
+
 import org.jboss.labs.core.model.auth.User;
 import org.jboss.labs.core.model.auth.UserRole;
+import org.jboss.labs.exception.auth.NoSuchRoleForUserException;
+import org.jboss.labs.exception.auth.NoSuchSuperUserException;
 import org.jboss.labs.exception.auth.NoSuchUserException;
 import org.jboss.labs.exception.auth.NoSuchUserRoleException;
 import org.jboss.labs.exception.auth.RoleExistsException;
@@ -40,7 +44,8 @@
  */
 public class UserServiceTest extends CredentialTest {
 
-	public void testAddDelUser() throws UserExistsException, NoSuchUserException {
+	public void testAddDelUser() throws UserExistsException,
+			NoSuchUserException {
 		String login = getUniqueUserID();
 
 		try {
@@ -72,25 +77,26 @@
 			// it's expected
 		}
 	}
-	
-	public void testAddDelRole() throws RoleExistsException, NoSuchUserRoleException {
+
+	public void testAddDelRole() throws RoleExistsException,
+			NoSuchUserRoleException {
 		String roleid = getUniqueRoleID();
-		
+
 		try {
 			userService.getUserRole(roleid);
-			
-			//shouldn't exist !
-			fail("Role with id: '"+roleid+"' already exists");
+
+			// shouldn't exist !
+			fail("Role with id: '" + roleid + "' already exists");
 		} catch (NoSuchUserRoleException e) {
 			// expected
 		}
-		
+
 		// create role
-		UserRole ur = new UserRole(roleid, "test role "+roleid);
+		UserRole ur = new UserRole(roleid, "test role " + roleid);
 
 		// add role
 		userService.addUserRole(ur);
- 
+
 		// try to get her
 		ur = userService.getUserRole(roleid);
 
@@ -100,17 +106,131 @@
 		// see if he was removed
 		try {
 			userService.getUserRole(roleid);
-			
-			//shouldn't exist !
-			fail("Role with id: '"+roleid+"' already exists");
+
+			// shouldn't exist !
+			fail("Role with id: '" + roleid + "' already exists");
 		} catch (NoSuchUserRoleException e) {
 			// expected
 		}
 	}
-	
+
 	@Test
-	public void testRolesAndUsers() {
-		
+	public void testRolesAndUsers() throws UserExistsException,
+			RoleExistsException, NoSuchUserException,
+			NoSuchRoleForUserException, NoSuchUserRoleException {
+		User user = getNewUser();
+		UserRole role = getNewUserRole();
+
+		// this user shouldn't have this role yet
+		assertFalse(userService.getRolesForUser(user).contains(role));
+
+		// give him the role
+		userService.bindRoleToUser(user, role);
+
+		// now it should have the role
+		assertTrue(userService.getRolesForUser(user).contains(role));
+
+		// also if we get him
+		userService.getUserByLogin(user.getName()).getUserRoles()
+				.contains(role);
+
+		// add another role
+		UserRole role2 = getNewUserRole();
+
+		// this user shouldn't have this role yet
+		assertFalse(userService.getRolesForUser(user).contains(role2));
+
+		// give him the role
+		userService.bindRoleToUser(user, role2);
+
+		// now it should have the role
+		assertTrue(userService.getRolesForUser(user).contains(role2));
+
+		// also if we get him
+		assertTrue(userService.getUserByLogin(user.getName()).getUserRoles()
+				.contains(role2));
+
+		// now let's remove first role
+
+		// remember size - we're not assuming he has 2 roles since
+		// add-role-after-creation is allowed and shouldn't have influence on
+		// program
+		int rolesNo = userService.getRolesForUser(user).size();
+
+		// remove
+		userService.removeRoleFromUser(user, role);
+
+		// check if size is -1
+		assertTrue(userService.getRolesForUser(user).size() == rolesNo - 1);
+
+		// and if we removed it
+		assertFalse(userService.getRolesForUser(user).contains(role));
+
+		// also if we get him
+		assertFalse(userService.getUserByLogin(user.getName()).getUserRoles()
+				.contains(role));
+
+		// try removing already removed role
+		try {
+			userService.removeRoleFromUser(user, role);
+			// oops. we should've get an exception here.
+			fail("Removed(?) twice the same role");
+		} catch (NoSuchRoleForUserException e) {
+			// ok
+		}
+
+		// add first role again
+		userService.bindRoleToUser(user, role);
+
+		// remove two roles at a time
+		userService.removeRolesFromUser(user, role, role2);
+
+		// check if they removed properly
+		// and if we removed it
+		assertFalse(userService.getRolesForUser(user).contains(role));
+
+		// also if we get him
+		assertFalse(userService.getUserByLogin(user.getName()).getUserRoles()
+				.contains(role));
+
+		// and if we removed it
+		assertFalse(userService.getRolesForUser(user).contains(role2));
+
+		// also if we get him
+		assertFalse(userService.getUserByLogin(user.getName()).getUserRoles()
+				.contains(role2));
 	}
 
+	public void testSuperusers() throws UserExistsException,
+			NoSuchUserException, NoSuchSuperUserException {
+		User global = getNewUser();
+		User prj = getNewUser();
+
+		// grant super user for project
+		binderService.grantUserProjectSuperrole(prj, TEST_PROJECT);
+
+		// grant global superuser
+		binderService.grantUserSuperrole(global);
+
+		// check global
+		assertTrue(userService.getSuperusers().contains(global));
+
+		// check project
+		assertTrue(userService.getSuperusersForProject(TEST_PROJECT).contains(
+				prj));
+
+		// remove global
+		binderService.revokeUserSuperrole(global);
+
+		// check global
+		assertFalse(userService.getSuperusers().contains(global));
+
+		// remove prj
+		binderService.revokeUserProjectSuperrole(prj, TEST_PROJECT);
+
+		// check project
+		assertFalse(userService.getSuperusersForProject(TEST_PROJECT).contains(
+				prj));
+	}
+
 }




More information about the jboss-svn-commits mailing list