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: */
018:
019: package org.apache.lenya.ac.ldap;
020:
021: import java.io.File;
022:
023: import org.apache.avalon.framework.configuration.ConfigurationException;
024: import org.apache.lenya.ac.AccessControlException;
025: import org.apache.lenya.ac.User;
026: import org.apache.lenya.ac.UserType;
027: import org.apache.lenya.ac.file.FileAccreditableManager;
028: import org.apache.lenya.ac.file.FileGroup;
029: import org.apache.lenya.ac.file.FileRole;
030: import org.apache.lenya.ac.file.FileUserManager;
031: import org.apache.lenya.ac.impl.AbstractAccessControlTest;
032: import org.apache.lenya.ac.ldap.LDAPUser;
033: import org.apache.lenya.cms.publication.Publication;
034: import org.apache.lenya.cms.publication.PublicationException;
035:
036: /**
037: * LDAP user test. The name "Abstract..." is used to prevent it from being
038: * executed.
039: *
040: * @version $Id: AbstractLDAPUserTest.java 485769 2006-12-11 17:41:23Z andreas $
041: */
042: public class AbstractLDAPUserTest extends AbstractAccessControlTest {
043:
044: /**
045: * get a publication
046: *
047: * @return a <code>Publication</code>
048: *
049: * @throws PublicationException if an error occurs
050: */
051: final public Publication getPublication()
052: throws PublicationException {
053: return getPublication("test");
054: }
055:
056: /**
057: * Create and save an ldap user
058: *
059: * @param userName name of the user
060: * @param email of the user
061: * @param ldapId ldap id of the user
062: * @throws AccessControlException if the creating or the saving fails
063: * @throws ConfigurationException if the creating or the saving fails
064: */
065: final public void createAndSaveUser(String userName, String email,
066: String ldapId) throws AccessControlException,
067: ConfigurationException {
068: String editorGroupName = "editorGroup";
069: String adminGroupName = "adminGroup";
070: String editorRoleName = "editorRole";
071: String adminRoleName = "adminRole";
072:
073: FileRole editorRole = new FileRole(getAccreditableManager()
074: .getRoleManager(), getLogger());
075: editorRole.setName(editorRoleName);
076:
077: FileRole adminRole = new FileRole(getAccreditableManager()
078: .getRoleManager(), getLogger());
079: adminRole.setName(adminRoleName);
080:
081: FileGroup editorGroup = new FileGroup(getAccreditableManager()
082: .getGroupManager(), getLogger(), editorGroupName);
083: FileGroup adminGroup = new FileGroup(getAccreditableManager()
084: .getGroupManager(), getLogger(), adminGroupName);
085:
086: LDAPUser user = new LDAPUser(getAccreditableManager()
087: .getUserManager(), getLogger(), userName, email,
088: ldapId, getLogger());
089:
090: editorRole.save();
091: adminRole.save();
092:
093: /*
094: * editorGroup.addRole(editorRole); user.addGroup(editorGroup);
095: * adminGroup.addRole(editorRole); adminGroup.addRole(adminRole);
096: */
097: editorGroup.save();
098: adminGroup.save();
099:
100: adminGroup.add(user);
101: user.save();
102: }
103:
104: /**
105: * Test loading an LDAPUser
106: *
107: * @param userName the name of the user
108: * @return an <code>LDAPUser</code>
109: * @throws AccessControlException of the loading fails
110: */
111: final public LDAPUser loadUser(String userName)
112: throws AccessControlException {
113: UserType[] userTypes = { FileAccreditableManager
114: .getDefaultUserType() };
115: FileUserManager _manager = FileUserManager.instance(
116: getAccreditableManager(), getAccreditablesDirectory(),
117: userTypes, getLogger());
118:
119: return (LDAPUser) _manager.getUser(userName);
120: }
121:
122: /**
123: * Test the ldap id getter
124: *
125: * @throws AccessControlException if the test fails
126: * @throws ConfigurationException if the creating or the saving fails
127: */
128: final public void testGetLdapId() throws ConfigurationException,
129: AccessControlException {
130: String userName = "felix";
131: String ldapId = "m400032";
132: createAndSaveUser(userName, "felix@wyona.com", ldapId);
133:
134: LDAPUser user = null;
135: user = loadUser(userName);
136: assertNotNull(user);
137: assertEquals(ldapId, user.getLdapId());
138: }
139:
140: /**
141: * Test settinf the ldap id
142: *
143: * @throws AccessControlException if the test fails
144: * @throws ConfigurationException if the creating or the saving fails
145: */
146: final public void testSetLdapId() throws ConfigurationException,
147: AccessControlException {
148: String userName = "felix";
149: String newLdapId = "foo";
150: createAndSaveUser(userName, "felix@wyona.com", "bar");
151:
152: LDAPUser user = null;
153: user = loadUser(userName);
154: assertNotNull(user);
155: user.setLdapId(newLdapId);
156: user.save();
157: user = null;
158: user = loadUser(userName);
159: assertNotNull(user);
160: assertEquals(newLdapId, user.getLdapId());
161: }
162:
163: /**
164: * Test save
165: *
166: * @throws AccessControlException if the test fails
167: * @throws ConfigurationException if the creating or the saving fails
168: */
169: final public void testSave() throws ConfigurationException,
170: AccessControlException {
171: String userName = "felix";
172: createAndSaveUser(userName, "felix@wyona.com", "m400032");
173:
174: User user = null;
175: user = loadUser(userName);
176: assertNotNull(user);
177: }
178:
179: /**
180: * Test the deletion of a ldap user
181: *
182: */
183: final public void testDelete() {
184: // TODO Implement delete().
185: }
186: }
|