001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.jetspeed.security.spi.ldap;
018:
019: import org.apache.jetspeed.security.SecurityException;
020: import org.apache.jetspeed.security.UserPrincipal;
021: import org.apache.jetspeed.security.impl.UserPrincipalImpl;
022:
023: import java.security.Principal;
024:
025: import java.util.List;
026:
027: /**
028: * <p>
029: * LdapServerTest - This class tests the LdapServer. It assumes that the following three
030: * inetOrgPerson objects exist: uid:cbrewton password:maddie uid:dlong, password: uid:mlong,
031: * password:maddie
032: * </p>
033: *
034: * @author <a href="mailto:mike.long@dataline.com">Mike Long </a>
035: */
036: public class TestLdapUserSecurityHandler extends AbstractLdapTest {
037: /**
038: * @see org.apache.jetspeed.security.spi.ldap.AbstractLdapTest#setUp()
039: */
040: protected void setUp() throws Exception {
041: super .setUp();
042: LdapDataHelper.seedUserData(uid1, password);
043: }
044:
045: /**
046: * @see org.apache.jetspeed.security.spi.ldap.AbstractLdapTest#tearDown()
047: */
048: protected void tearDown() throws Exception {
049: super .tearDown();
050: LdapDataHelper.removeUserData(uid1);
051: }
052:
053: /**
054: * @throws Exception
055: */
056: public void testUserIsPrincipal() throws Exception {
057: assertTrue("User is not principal.", userHandler
058: .isUserPrincipal(uid1));
059: }
060:
061: /**
062: * @throws Exception
063: */
064: public void testUserIsNotPrincipal() throws Exception {
065: assertFalse("User is principal and should not be.", userHandler
066: .isUserPrincipal(Integer.toString(rand.nextInt())
067: .toString()));
068: }
069:
070: /**
071: * @throws Exception
072: */
073: public void testAddDuplicateUserPrincipal() throws Exception {
074: try {
075: userHandler.addUserPrincipal(new UserPrincipalImpl(uid1));
076: fail("Adding an already existant user should have thrown a SecurityException.");
077: } catch (Exception e) {
078: assertTrue(
079: "Adding an already existant user should have thrown a SecurityException.",
080: e instanceof SecurityException);
081: }
082: }
083:
084: /**
085: * @throws Exception
086: */
087: public void testAddUserPrincipal() throws Exception {
088: assertTrue("User not found.", userHandler
089: .getUserPrincipal(uid1) != null);
090: }
091:
092: /**
093: * @throws Exception
094: */
095: public void testRemoveExistantUserPrincipal() throws Exception {
096: UserPrincipal up = new UserPrincipalImpl(uid1);
097: userHandler.removeUserPrincipal(up);
098: assertTrue("User was found and should have been removed.",
099: userHandler.getUserPrincipal(uid1) == null);
100: }
101:
102: /**
103: * @throws Exception
104: */
105: public void testRemoveNonExistantUserPrincipal() throws Exception {
106: String localUid = Integer.toString(rand.nextInt()).toString();
107: UserPrincipal localPrin = new UserPrincipalImpl(localUid);
108:
109: userHandler.removeUserPrincipal(localPrin);
110: }
111:
112: /**
113: * @throws Exception
114: */
115: public void testGetUserPrincipals() throws Exception {
116: try {
117: LdapDataHelper.seedUserData(uid2, password);
118: // With wild card search
119: assertTrue(
120: "getUserPrincipals should have returned more than one user.",
121: userHandler.getUserPrincipals("*").size() > 1);
122:
123: // With empty string search
124: assertTrue(
125: "getUserPrincipals should have returned more than one user.",
126: userHandler.getUserPrincipals("").size() > 1);
127:
128: // With specific uid.
129: List users = userHandler.getUserPrincipals(uid1);
130:
131: assertTrue(
132: "getUserPrincipals should have returned one user.",
133: users.size() == 1);
134: assertTrue(
135: "List should have consisted of Principal objects.",
136: users.get(0) instanceof Principal);
137:
138: String localUid = Integer.toString(rand.nextInt())
139: .toString();
140:
141: assertTrue(
142: "getUserPrincipals should not have found any users with the specified filter.",
143: userHandler.getUserPrincipals(localUid).isEmpty());
144: } finally {
145: LdapDataHelper.removeUserData(uid2);
146: }
147: }
148: }
|