/*!
* 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.pur.repositoryexplorer.model;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.EnumSet;
import org.junit.Test;
import org.pentaho.di.repository.ObjectRecipient;
import org.pentaho.di.repository.pur.model.ObjectAce;
import org.pentaho.di.repository.pur.model.RepositoryObjectAce;
import org.pentaho.di.repository.pur.model.RepositoryObjectRecipient;
import org.pentaho.platform.api.repository2.unified.RepositoryFilePermission;
/**
*
* @author tkafalas
*
*/
public class UIRepositoryObjectAclTest {
private final String RECIPIENT1 = "Elmer Fudd";
private final String RECIPIENT2 = "Bugs Bunny";
@Test
public void testGetPermissionSet() {
UIRepositoryObjectAcl uiAcl = new UIRepositoryObjectAcl( createObjectAce() );
EnumSet<RepositoryFilePermission> permissions = uiAcl.getPermissionSet();
assertNotNull( permissions );
assertEquals( 1, permissions.size() );
assertTrue( permissions.contains( RepositoryFilePermission.ALL ) );
}
@Test
public void testSetPermission() {
UIRepositoryObjectAcl uiAcl = new UIRepositoryObjectAcl( createObjectAce() );
uiAcl.setPermissionSet( RepositoryFilePermission.READ, RepositoryFilePermission.WRITE );
EnumSet<RepositoryFilePermission> permissions = uiAcl.getPermissionSet();
assertNotNull( permissions );
assertEquals( 2, permissions.size() );
assertTrue( permissions.contains( RepositoryFilePermission.READ ) );
assertTrue( permissions.contains( RepositoryFilePermission.WRITE ) );
uiAcl.setPermissionSet( EnumSet.of( RepositoryFilePermission.DELETE, RepositoryFilePermission.WRITE ) );
permissions = uiAcl.getPermissionSet();
assertNotNull( permissions );
assertEquals( 2, permissions.size() );
assertTrue( permissions.contains( RepositoryFilePermission.DELETE ) );
assertTrue( permissions.contains( RepositoryFilePermission.WRITE ) );
uiAcl.addPermission( RepositoryFilePermission.READ );
permissions = uiAcl.getPermissionSet();
assertEquals( permissions, EnumSet.of( RepositoryFilePermission.READ, RepositoryFilePermission.DELETE,
RepositoryFilePermission.WRITE ) );
uiAcl.removePermission( RepositoryFilePermission.READ );
permissions = uiAcl.getPermissionSet();
assertEquals( permissions, EnumSet.of( RepositoryFilePermission.DELETE, RepositoryFilePermission.WRITE ) );
}
@Test
public void testEquals() {
UIRepositoryObjectAcl uiAcl1 = new UIRepositoryObjectAcl( createObjectAce() );
UIRepositoryObjectAcl uiAcl2 =
new UIRepositoryObjectAcl( new RepositoryObjectAce( new RepositoryObjectRecipient( RECIPIENT1,
ObjectRecipient.Type.USER ), EnumSet.of( RepositoryFilePermission.ALL ) ) );
assertTrue( uiAcl1.equals( uiAcl2 ) );
uiAcl2 =
new UIRepositoryObjectAcl( new RepositoryObjectAce( new RepositoryObjectRecipient( RECIPIENT1,
ObjectRecipient.Type.SYSTEM_ROLE ), EnumSet.of( RepositoryFilePermission.ALL ) ) );
assertFalse( uiAcl1.equals( uiAcl2 ) );
uiAcl2 =
new UIRepositoryObjectAcl( new RepositoryObjectAce( new RepositoryObjectRecipient( RECIPIENT1,
ObjectRecipient.Type.USER ), EnumSet.of( RepositoryFilePermission.READ, RepositoryFilePermission.ALL ) ) );
assertFalse( uiAcl1.equals( uiAcl2 ) );
uiAcl2 =
new UIRepositoryObjectAcl( new RepositoryObjectAce( new RepositoryObjectRecipient( RECIPIENT2,
ObjectRecipient.Type.USER ), EnumSet.of( RepositoryFilePermission.ALL ) ) );
assertFalse( uiAcl1.equals( uiAcl2 ) );
assertFalse( uiAcl1.equals( null ) );
}
@Test
public void testRecipient() {
UIRepositoryObjectAcl uiAcl = new UIRepositoryObjectAcl( createObjectAce() );
assertEquals( RECIPIENT1, uiAcl.getRecipientName() );
uiAcl.setRecipientName( RECIPIENT2 );
assertEquals( RECIPIENT2, uiAcl.getRecipientName() );
}
@Test
public void testRecipientType() {
UIRepositoryObjectAcl uiAcl = new UIRepositoryObjectAcl( createObjectAce() );
assertEquals( ObjectRecipient.Type.USER, uiAcl.getRecipientType() );
uiAcl.setRecipientType( ObjectRecipient.Type.ROLE );
assertEquals( ObjectRecipient.Type.ROLE, uiAcl.getRecipientType() );
}
@Test
public void testToString() {
UIRepositoryObjectAcl uiAcl = new UIRepositoryObjectAcl( createObjectAce() );
String s = uiAcl.toString();
assertNotNull( s );
assertTrue( s.contains( RECIPIENT1 ) );
}
private ObjectAce createObjectAce() {
ObjectRecipient objectRecipient = new RepositoryObjectRecipient( RECIPIENT1, ObjectRecipient.Type.USER );
ObjectAce objectAce = new RepositoryObjectAce( objectRecipient, EnumSet.of( RepositoryFilePermission.ALL ) );
return objectAce;
}
}