package com.asolutions.scmsshd.authorizors;
import static org.junit.Assert.*;
import java.util.ArrayList;
import org.jmock.Expectations;
import org.junit.Test;
import com.asolutions.MockTestCase;
import com.asolutions.scmsshd.sshd.IProjectAuthorizer;
public class PassIfAnyInCollectionPassAuthorizorTest extends MockTestCase {
private static final String PROJECT = "project";
private static final String USERNAME = "username";
@Test
public void testAuthingWithEmptyChainFails() throws Exception {
assertNull(new PassIfAnyInCollectionPassAuthorizor().userIsAuthorizedForProject(USERNAME, PROJECT));
}
@Test
public void testIfAnyPassItPasses() throws Exception {
final IProjectAuthorizer failsAuth = context.mock(IProjectAuthorizer.class, "failsAuth");
final IProjectAuthorizer passesAuth = context.mock(IProjectAuthorizer.class, "passesAuth");
checking(new Expectations(){{
allowing(failsAuth).userIsAuthorizedForProject(USERNAME, PROJECT);
will(returnValue(null));
allowing(passesAuth).userIsAuthorizedForProject(USERNAME, PROJECT);
will(returnValue(AuthorizationLevel.AUTH_LEVEL_READ_ONLY));
}});
PassIfAnyInCollectionPassAuthorizor auth = new PassIfAnyInCollectionPassAuthorizor();
ArrayList<IProjectAuthorizer> authList = new ArrayList<IProjectAuthorizer>();
authList.add(failsAuth);
authList.add(passesAuth);
authList.add(failsAuth);
auth.setProjectAuthorizers(authList);
assertEquals(AuthorizationLevel.AUTH_LEVEL_READ_ONLY, auth.userIsAuthorizedForProject(USERNAME, PROJECT));
}
@Test
public void testIfNonePassItFails() throws Exception {
final IProjectAuthorizer failsAuth = context.mock(IProjectAuthorizer.class, "failsAuth");
checking(new Expectations(){{
allowing(failsAuth).userIsAuthorizedForProject(USERNAME, PROJECT);
will(returnValue(null));
}});
PassIfAnyInCollectionPassAuthorizor auth = new PassIfAnyInCollectionPassAuthorizor();
ArrayList<IProjectAuthorizer> authList = new ArrayList<IProjectAuthorizer>();
authList.add(failsAuth);
authList.add(failsAuth);
auth.setProjectAuthorizers(authList);
assertNull(auth.userIsAuthorizedForProject(USERNAME, PROJECT));
}
}