/*
* Created on May 18, 2006
*/
package com.processpuzzle.artifact.domain;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import com.processpuzzle.application.security.domain.AccessRight;
import com.processpuzzle.application.security.domain.User;
import com.processpuzzle.application.security.domain.UserFactory;
import com.processpuzzle.application.security.domain.UserRepository;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.application.domain.Application;
import com.processpuzzle.artifact.domain.AccessRightsView;
import com.processpuzzle.artifact_type.domain.ArtifactTypeTestFixture;
import com.processpuzzle.persistence.domain.DefaultUnitOfWork;
import com.processpuzzle.sharedfixtures.domaintier.DomainTierTestConfiguration;
import com.processpuzzle.sharedfixtures.domaintier.ProcessPuzzleContextFixture;
import com.processpuzzle.user_session.domain.UserRequestManager;
public class AccessRightsViewTest {
private ProcessPuzzleContextFixture applicationContextFixture;
private ArtifactTypeTestFixture typeFixture;
private ArtifactSubClass anArtifact;
private static ProcessPuzzleContext applicationContext;
private static UserFactory userFactory;
private static UserRepository userRepository;
private static ArtifactSubClassRepository artifactSubClassRepository;
private User currentUser;
private User john;
private User betty;
@Before
public void setUp() throws Exception {
applicationContextFixture = ProcessPuzzleContextFixture.getInstance( DomainTierTestConfiguration.APPLICATION_CONFIGURATION_DESCRIPTOR_PATH );
applicationContextFixture.setUp();
applicationContext = applicationContextFixture.getApplicationContext();
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
typeFixture = new ArtifactTypeTestFixture( null );
typeFixture.setUp();
applicationContext.setUp( Application.Action.start );
userFactory = applicationContext.getEntityFactory( UserFactory.class );
userRepository = applicationContext.getRepository( UserRepository.class );
artifactSubClassRepository = applicationContext.getRepository( ArtifactSubClassRepository.class );
currentUser = UserRequestManager.getInstance().currentUser();
anArtifact = new ArtifactSubClass( "AnArtifact", typeFixture.getArtifactSubClassType(), currentUser );
artifactSubClassRepository.addArtifactSubClass( anArtifact );
john = userFactory.createUser( "Jon.Smith", "psw" );
AccessRight jonsRights = john.addRightFor( anArtifact );
jonsRights.setCanCreate( true );
jonsRights.setCanDelete( true );
jonsRights.setCanRead( true );
jonsRights.setCanModify( true );
userRepository.addUser( work, john );
betty = userFactory.createUser( "Betty.Smith", "psw" );
AccessRight bettysRights = betty.addRightFor( anArtifact );
bettysRights.setCanCreate( false );
bettysRights.setCanDelete( false );
bettysRights.setCanRead( true );
bettysRights.setCanModify( true );
userRepository.addUser( work, betty );
work.finish();
}
@After
public void tearDown() throws Exception {
DefaultUnitOfWork work = new DefaultUnitOfWork( true );
artifactSubClassRepository.deleteArtifactSubClass( anArtifact );
userRepository.deleteUser( work, john );
userRepository.deleteUser( work, betty );
work.finish();
typeFixture.tearDown();
}
@Ignore
@Test
public final void getAccessRights() {
AccessRightsView view = (AccessRightsView) anArtifact.getAvailableViews().get( "AccessRightsView" );
view.getRightsForArtifact();
assertNotNull( "An artifact has an 'AccessRightsView' view.", view );
assertNotNull( "The AccessRigthtsView provides rights.", view.getRightsForArtifact() );
assertEquals( "The rights collection has 2 AccessRight object.", 2, view.getRightsForArtifact().size() );
}
}