KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > alfresco > webservice > test > AdministrationServiceSystemTest


1 /*
2  * Copyright (C) 2005 Alfresco, Inc.
3  *
4  * Licensed under the Mozilla Public License version 1.1
5  * with a permitted attribution clause. You may obtain a
6  * copy of the License at
7  *
8  * http://www.alfresco.org/legal/license.txt
9  *
10  * Unless required by applicable law or agreed to in writing,
11  * software distributed under the License is distributed on an
12  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13  * either express or implied. See the License for the specific
14  * language governing permissions and limitations under the
15  * License.
16  */

17 package org.alfresco.webservice.test;
18
19 import org.alfresco.webservice.administration.NewUserDetails;
20 import org.alfresco.webservice.administration.UserDetails;
21 import org.alfresco.webservice.administration.UserQueryResults;
22 import org.alfresco.webservice.repository.RepositoryServiceLocator;
23 import org.alfresco.webservice.types.NamedValue;
24 import org.alfresco.webservice.types.QueryConfiguration;
25 import org.alfresco.webservice.util.AuthenticationUtils;
26 import org.alfresco.webservice.util.Constants;
27 import org.alfresco.webservice.util.WebServiceFactory;
28 import org.apache.commons.logging.Log;
29 import org.apache.commons.logging.LogFactory;
30
31 /**
32  * Administration service system test
33  *
34  * @author Roy Wetherall
35  */

36 public class AdministrationServiceSystemTest extends BaseWebServiceSystemTest
37 {
38     private static Log logger = LogFactory.getLog(AdministrationServiceSystemTest.class);
39     
40     public void testGetUsersBatching() throws Exception JavaDoc
41     {
42         int batchSize = 5;
43         QueryConfiguration queryCfg = new QueryConfiguration();
44         queryCfg.setFetchSize(batchSize);
45         WebServiceFactory.getAdministrationService().setHeader(
46                 new RepositoryServiceLocator().getServiceName().getNamespaceURI(),
47                 "QueryHeader",
48                 queryCfg);
49         
50         // Get the details of the new users
51
String JavaDoc homeFolder = store.getScheme().getValue() + "://" + store.getAddress() + "/" + folderReference.getUuid();
52         String JavaDoc one = Long.toString(System.currentTimeMillis());
53         String JavaDoc two = one + "2";
54         NewUserDetails[] newUsers = new NewUserDetails[] {
55                 new NewUserDetails(
56                         "user" + one,
57                         "password" + one,
58                         createPersonProperties(homeFolder, "first" + one, "middle" + one, "last" + one, "email" + one, "org" + one)),
59                 new NewUserDetails(
60                         "user" + two,
61                         "password2" + two,
62                         createPersonProperties(homeFolder, "first" + two, "middle" + two, "last" + two, "email" + two, "org" + two)) };
63
64         // Create the new users
65
WebServiceFactory.getAdministrationService().createUsers(newUsers);
66         
67         UserQueryResults results = WebServiceFactory.getAdministrationService().queryUsers(null);
68         assertNotNull(results);
69         
70         if (logger.isDebugEnabled() == true)
71         {
72             while(true)
73             {
74                 System.out.println("Next batch");
75                 System.out.println("Session Id: " + results.getQuerySession());
76                 
77                 for (UserDetails details : results.getUserDetails())
78                 {
79                     System.out.println("User name: " + details.getUserName());
80                 }
81                 
82                 if (results.getQuerySession() == null)
83                 {
84                     break;
85                 }
86                 results = WebServiceFactory.getAdministrationService().fetchMoreUsers(results.getQuerySession());
87             }
88         }
89         
90
91         // Delete the created users
92
String JavaDoc[] userNames = new String JavaDoc[]{"user" + one, "user" + two};
93         WebServiceFactory.getAdministrationService().deleteUsers(userNames);
94     }
95     
96     /**
97      * Test the general user CRUD methods
98      */

99     public void testCreateGetDeleteUser() throws Exception JavaDoc
100     {
101         // Try and get a user that does not exist
102
try
103         {
104             WebServiceFactory.getAdministrationService().getUser("badUser");
105             fail("An exception should have been raised since we are trying to get hold of a user that does not exist.");
106         }
107         catch (Exception JavaDoc exception)
108         {
109             // Ignore since this is what we would expect to happen
110
}
111         
112         // Get the details of the new users
113
String JavaDoc homeFolder = store.getScheme().getValue() + "://" + store.getAddress() + "/" + folderReference.getUuid();
114         String JavaDoc one = Long.toString(System.currentTimeMillis());
115         String JavaDoc two = one + "2";
116         NewUserDetails[] newUsers = new NewUserDetails[] {
117                 new NewUserDetails(
118                         "user" + one,
119                         "password" + one,
120                         createPersonProperties(homeFolder, "first" + one, "middle" + one, "last" + one, "email" + one, "org" + one)),
121                 new NewUserDetails(
122                         "user" + two,
123                         "password2" + two,
124                         createPersonProperties(homeFolder, "first" + two, "middle" + two, "last" + two, "email" + two, "org" + two)) };
125
126         // Create the new users
127
UserDetails[] userDetails = WebServiceFactory.getAdministrationService().createUsers(newUsers);
128
129         // Check the details of the created users
130
assertNotNull(userDetails);
131         assertEquals(2, userDetails.length);
132         String JavaDoc name = one;
133         for (UserDetails result : userDetails)
134         {
135             NamedValue[] properties = result.getProperties();
136             for (NamedValue value : properties)
137             {
138                if (value.getName().equals(Constants.PROP_USER_FIRSTNAME) == true)
139                {
140                    assertEquals("first" + name, value.getValue());
141                }
142                else if (value.getName().equals(Constants.PROP_USER_MIDDLENAME) == true)
143                {
144                    assertEquals("middle" + name, value.getValue());
145                }
146                else if (value.getName().equals(Constants.PROP_USER_LASTNAME) == true)
147                {
148                    assertEquals("last" + name, value.getValue());
149                }
150                else if (value.getName().equals(Constants.PROP_USER_HOMEFOLDER) == true)
151                {
152                    assertEquals(homeFolder, value.getValue());
153                }
154                else if (value.getName().equals(Constants.PROP_USER_EMAIL) == true)
155                {
156                    assertEquals("email" + name, value.getValue());
157                }
158                else if (value.getName().equals(Constants.PROP_USER_ORGID) == true)
159                {
160                    assertEquals("org" + name, value.getValue());
161                }
162                else if (value.getName().equals(Constants.PROP_USERNAME) == true)
163                {
164                    assertEquals("user" + name, value.getValue());
165                }
166             }
167             name = two;
168         }
169         
170         // Try and get one of the created users
171
UserDetails userDetails2 = WebServiceFactory.getAdministrationService().getUser("user" + one);
172         
173         // Check the user details
174
assertNotNull(userDetails2);
175         assertEquals("user" + one, userDetails2.getUserName());
176         NamedValue[] properties = userDetails2.getProperties();
177         for (NamedValue value : properties)
178         {
179            if (value.getName().equals(Constants.PROP_USER_FIRSTNAME) == true)
180            {
181                assertEquals("first" + one, value.getValue());
182            }
183            else if (value.getName().equals(Constants.PROP_USER_MIDDLENAME) == true)
184            {
185                assertEquals("middle" + one, value.getValue());
186            }
187            else if (value.getName().equals(Constants.PROP_USER_LASTNAME) == true)
188            {
189                assertEquals("last" + one, value.getValue());
190            }
191            else if (value.getName().equals(Constants.PROP_USER_HOMEFOLDER) == true)
192            {
193                assertEquals(homeFolder, value.getValue());
194            }
195            else if (value.getName().equals(Constants.PROP_USER_EMAIL) == true)
196            {
197                assertEquals("email" + one, value.getValue());
198            }
199            else if (value.getName().equals(Constants.PROP_USER_ORGID) == true)
200            {
201                assertEquals("org" + one, value.getValue());
202            }
203            else if (value.getName().equals(Constants.PROP_USERNAME) == true)
204            {
205                assertEquals("user" + one, value.getValue());
206            }
207         }
208
209         // Delete the created users
210
String JavaDoc[] userNames = new String JavaDoc[]{"user" + one, "user" + two};
211         WebServiceFactory.getAdministrationService().deleteUsers(userNames);
212         
213         // Ensure that the users have been deleted
214
try
215         {
216             WebServiceFactory.getAdministrationService().getUser("user" + two);
217             fail("An exception should have been raised since we are trying to get hold of a user that has previously been deleted.");
218         }
219         catch (Exception JavaDoc exception)
220         {
221             // Ignore since this is what we would expect to happen
222
}
223     }
224     
225     /**
226      * Test querying for users
227      */

228 // public void testUserQuery()
229
// {
230
//
231
// }
232

233     /**
234      * Test being able to create a new user, log in as that user, change that users password
235      */

236     public void testCreateAndAuthenticateNewUser() throws Exception JavaDoc
237     {
238         // Get the details of the new user
239
String JavaDoc homeFolder = store.getScheme().getValue() + "://" + store.getAddress() + "/" + folderReference.getUuid();
240         String JavaDoc one = Long.toString(System.currentTimeMillis());
241         NewUserDetails[] newUsers = new NewUserDetails[]
242         {
243                 new NewUserDetails(
244                         "user" + one,
245                         "password" + one,
246                         createPersonProperties(homeFolder, "first" + one, "middle" + one, "last" + one, "email" + one, "org" + one))
247         };
248
249         // Create the new users
250
UserDetails[] userDetails = WebServiceFactory.getAdministrationService().createUsers(newUsers);
251         assertNotNull(userDetails);
252         assertEquals(1, userDetails.length);
253         
254         // End the current session
255
AuthenticationUtils.endSession();
256         
257         // Try and start a session as the newly create user
258
AuthenticationUtils.startSession("user" + one, "password" + one);
259         
260         // Re-login as the admin user
261
AuthenticationUtils.endSession();
262         AuthenticationUtils.startSession(USERNAME, PASSWORD);
263         
264         // Lets try and change the password
265
///try
266
//{
267
// WebServiceFactory.getAdministrationService().changePassword("user" + one, "badPassword", "newPassword");
268
// fail("This should throw an exception since we have not specified the old password correctly.");
269
// }
270
// catch (Exception exception)
271
// {
272
// // Ignore since we where expecting the exception
273
// }
274
WebServiceFactory.getAdministrationService().changePassword("user" + one, "password" + one, "newPassword");
275         
276         // Now we should try and start a session with the new password
277
AuthenticationUtils.endSession();
278         AuthenticationUtils.startSession("user" + one, "newPassword");
279     }
280
281     private NamedValue[] createPersonProperties(
282             String JavaDoc homeFolder,
283             String JavaDoc firstName,
284             String JavaDoc middleName,
285             String JavaDoc lastName,
286             String JavaDoc email,
287             String JavaDoc orgId)
288     {
289         // Create the new user objects
290
return new NamedValue[] {
291                 new NamedValue(Constants.PROP_USER_HOMEFOLDER, homeFolder),
292                 new NamedValue(Constants.PROP_USER_FIRSTNAME, firstName),
293                 new NamedValue(Constants.PROP_USER_MIDDLENAME, middleName),
294                 new NamedValue(Constants.PROP_USER_LASTNAME, lastName),
295                 new NamedValue(Constants.PROP_USER_EMAIL, email),
296                 new NamedValue(Constants.PROP_USER_ORGID, orgId) };
297     }
298
299 }
300
Popular Tags