/*! * Copyright 2010 - 2015 Pentaho Corporation. All rights reserved. * * 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. * */ package org.pentaho.di.ui.repository.repositoryexplorer; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.pentaho.di.repository.UserInfo; import org.pentaho.di.repository.pur.model.EERoleInfo; import org.pentaho.di.ui.repository.pur.repositoryexplorer.model.UIEERepositoryUser; import org.pentaho.di.ui.repository.pur.repositoryexplorer.model.UIRepositoryRole; import org.pentaho.di.ui.repository.pur.repositoryexplorer.model.UISecurityRole; import org.pentaho.di.ui.repository.repositoryexplorer.model.IUIUser; import org.pentaho.di.ui.repository.repositoryexplorer.model.UIRepositoryUser; import org.pentaho.di.ui.repository.repositoryexplorer.model.UISecurity.Mode; public class UISecurityRoleTest implements java.io.Serializable { static final long serialVersionUID = -5870525772742725819L; /* EESOURCE: UPDATE SERIALVERUID */ private List<UserInfo> users = new ArrayList<UserInfo>(); private List<EERoleInfo> roles = new ArrayList<EERoleInfo>(); UserInfo joeUser; UserInfo patUser; UserInfo suzyUser; UserInfo tiffanyUser; EERoleInfo adminRole = new EERoleInfo( "Admin", "Super User" ); EERoleInfo anonymousRole = new EERoleInfo( "Anonymous", "User has not logged in" ); EERoleInfo authenticatedRole = new EERoleInfo( "Authenticated", "User has logged in" ); EERoleInfo ceoRole = new EERoleInfo( "ceo", "Chief Executive Officer" ); EERoleInfo ctoRole = new EERoleInfo( "cto", "Chief Technology Officer" ); EERoleInfo devRole = new EERoleInfo( "dev", "Developer" ); EERoleInfo devmgrRole = new EERoleInfo( "devmgr", "Development Manager" ); EERoleInfo isRole = new EERoleInfo( "is", "Information Services" ); @Before public void init() { roles.add( adminRole ); roles.add( anonymousRole ); roles.add( authenticatedRole ); roles.add( ceoRole ); roles.add( ctoRole ); roles.add( devRole ); roles.add( devmgrRole ); roles.add( isRole ); joeUser = new UserInfo( "joe", "password", "joe", "joe", true ); patUser = new UserInfo( "pat", "password", "pat", "pat", true ); suzyUser = new UserInfo( "suzy", "password", "suzy", "suzy", true ); tiffanyUser = new UserInfo( "tiffany", "password", "tiffany", "tiffany", true ); adminRole.addUser( joeUser ); adminRole.addUser( patUser ); anonymousRole.addUser( tiffanyUser ); authenticatedRole.addUser( joeUser ); authenticatedRole.addUser( patUser ); authenticatedRole.addUser( suzyUser ); authenticatedRole.addUser( tiffanyUser ); ceoRole.addUser( joeUser ); ctoRole.addUser( patUser ); devmgrRole.addUser( joeUser ); devmgrRole.addUser( patUser ); isRole.addUser( joeUser ); isRole.addUser( suzyUser ); users.add( joeUser ); users.add( patUser ); users.add( suzyUser ); users.add( tiffanyUser ); } private boolean contains( List<IUIUser> users, IUIUser user ) { for ( IUIUser ruser : users ) { if ( ruser.equals( user ) ) { return true; } } return false; } @Test public void testAddRole() throws Exception { try { UISecurityRole role = new UISecurityRole(); List<IUIUser> rusers = new ArrayList<IUIUser>(); for ( UserInfo userInfo : users ) { rusers.add( new UIEERepositoryUser( userInfo ) ); } role.setAvailableUsers( rusers ); role.setMode( Mode.ADD ); role.setName( "newrole" ); role.setDescription( "new description" ); List<Object> usersToAssign = new ArrayList<Object>(); usersToAssign.add( new UIRepositoryUser( suzyUser ) ); usersToAssign.add( new UIRepositoryUser( tiffanyUser ) ); usersToAssign.add( new UIRepositoryUser( joeUser ) ); role.assignUsers( usersToAssign ); assertEquals( role.getMode(), Mode.ADD ); // Should have exactly 7 roles assertEquals( role.getName(), "newrole" ); //$NON-NLS-1$ assertEquals( role.getDescription(), "new description" ); //$NON-NLS-1$ Assert.assertTrue( contains( role.getAssignedUsers(), new UIRepositoryUser( joeUser ) ) ); Assert.assertTrue( contains( role.getAssignedUsers(), new UIRepositoryUser( tiffanyUser ) ) ); Assert.assertTrue( contains( role.getAssignedUsers(), new UIRepositoryUser( suzyUser ) ) ); } catch ( Exception e ) { Assert.fail(); } } @Test public void testEditRole() throws Exception { try { UISecurityRole role = new UISecurityRole(); List<IUIUser> rusers = new ArrayList<IUIUser>(); for ( UserInfo userInfo : users ) { rusers.add( new UIEERepositoryUser( userInfo ) ); } role.setRole( new UIRepositoryRole( adminRole ), rusers ); role.setMode( Mode.EDIT ); role.setDescription( "new description" ); List<Object> usersToAssign = new ArrayList<Object>(); usersToAssign.add( new UIRepositoryUser( suzyUser ) ); usersToAssign.add( new UIRepositoryUser( tiffanyUser ) ); List<Object> usersToUnAssign = new ArrayList<Object>(); usersToUnAssign.add( new UIRepositoryUser( patUser ) ); usersToUnAssign.add( new UIRepositoryUser( joeUser ) ); role.assignUsers( usersToAssign ); role.unassignUsers( usersToUnAssign ); assertEquals( role.getMode(), Mode.EDIT ); // Should have exactly 7 roles assertEquals( role.getDescription(), "new description" ); //$NON-NLS-1$ Assert.assertFalse( contains( role.getAssignedUsers(), new UIRepositoryUser( joeUser ) ) ); Assert.assertFalse( contains( role.getAssignedUsers(), new UIRepositoryUser( patUser ) ) ); Assert.assertTrue( contains( role.getAssignedUsers(), new UIRepositoryUser( tiffanyUser ) ) ); Assert.assertTrue( contains( role.getAssignedUsers(), new UIRepositoryUser( suzyUser ) ) ); } catch ( Exception e ) { Assert.fail(); } } }