/* * * Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved. * * This file is part of jAPS software. * jAPS is a free software; * you can redistribute it and/or modify it * under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2. * * See the file License for the specific language governing permissions * and limitations under the License * * * * Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved. * */ package test.com.agiletec.aps.system.services.user; import java.util.Date; import java.util.List; import test.com.agiletec.aps.BaseTestCase; import com.agiletec.aps.system.SystemConstants; import com.agiletec.aps.system.services.user.IUserManager; import com.agiletec.aps.system.services.user.User; import com.agiletec.aps.system.services.user.UserDetails; import com.agiletec.aps.util.DateConverter; /** * @version 1.0 * @author M.Casari */ public class TestUserManager extends BaseTestCase { protected void setUp() throws Exception { super.setUp(); this.init(); } public void testGetUsers() throws Throwable { List<UserDetails> users = this._userManager.getUsers(); assertTrue(users.size()>=8); } public void testSearchUsers() throws Throwable { List<UserDetails> users = this._userManager.searchUsers("ustomer"); assertEquals(3, users.size()); users = this._userManager.searchUsers("anager"); assertEquals(2, users.size()); users = this._userManager.searchUsers(""); assertTrue(users.size()>=8); users = this._userManager.searchUsers(null); assertTrue(users.size()>=8); } public void testGetUser_1() throws Throwable { UserDetails adminUser = this._userManager.getUser("admin"); assertEquals("admin", adminUser.getUsername()); assertEquals("admin", adminUser.getPassword()); assertEquals(0, adminUser.getAuthorities().length); UserDetails nullUser = this._userManager.getUser("wrongUserName"); assertNull(nullUser); UserDetails guest = this._userManager.getGuestUser(); assertEquals(SystemConstants.GUEST_USER_NAME, guest.getUsername()); assertNull(guest.getPassword()); assertEquals(0, guest.getAuthorities().length); } public void testGetUser_2() throws Throwable { UserDetails adminUser = this._userManager.getUser("admin", "admin"); assertEquals("admin", adminUser.getUsername()); assertEquals("admin", adminUser.getPassword()); assertEquals(0, adminUser.getAuthorities().length); adminUser = this._userManager.getUser("admin", "wrongPassword"); assertNull(adminUser); UserDetails user = this._userManager.getUser("guest", "guest"); assertNull(user); } public void testAddDeleteUser() throws Throwable { String username = "UserForTest1"; String todayDateString = DateConverter.getFormattedDate(new Date(), "dd/MM/yyyy"); MockUser user = this.createUserForTest(username); try { UserDetails extractedUser = this._userManager.getUser(username, user.getPassword()); assertNull(extractedUser); this._userManager.addUser(user); extractedUser = this._userManager.getUser(username, user.getPassword()); assertNotNull(extractedUser); assertTrue(extractedUser.isJapsUser()); assertEquals(user.getUsername(), extractedUser.getUsername()); Date creationDate = ((User) extractedUser).getCreationDate(); assertEquals(todayDateString, DateConverter.getFormattedDate(creationDate, "dd/MM/yyyy")); } catch (Throwable t) { throw t; } finally { this._userManager.removeUser(user); UserDetails extractedUser = this._userManager.getUser(username); assertNull(extractedUser); } } public void testUpdateUser() throws Throwable { String username = "UserForTest2"; MockUser user = this.createUserForTest(username); try { UserDetails extractedUser = this._userManager.getUser(username); assertNull(extractedUser); this._userManager.addUser(user); extractedUser = this._userManager.getUser(username, user.getPassword()); assertNotNull(extractedUser); assertEquals(user.getUsername(), extractedUser.getUsername()); assertEquals(0, extractedUser.getAuthorities().length); user.setPassword("changedPassword"); this._userManager.updateUser(user); // l'aggiornamento non comporta la criptazione della password extractedUser = this._userManager.getUser(username); assertEquals(user.getUsername(), extractedUser.getUsername()); assertEquals("changedPassword", extractedUser.getPassword()); extractedUser = this._userManager.getUser(username); assertNotNull(extractedUser); } catch (Throwable t) { throw t; } finally { this._userManager.removeUser(user); UserDetails extractedUser = _userManager.getUser(username); assertNull(extractedUser); } } public void testChangePassword() throws Throwable { String username = "UserForTest3"; String todayDateString = DateConverter.getFormattedDate(new Date(), "dd/MM/yyyy"); MockUser user = this.createUserForTest(username); try { UserDetails extractedUser = this._userManager.getUser(username, user.getPassword()); assertNull(extractedUser); this._userManager.addUser(user); extractedUser = this._userManager.getUser(username, user.getPassword()); Date creationDate = ((User) extractedUser).getCreationDate(); assertEquals(todayDateString, DateConverter.getFormattedDate(creationDate, "dd/MM/yyyy")); assertNull(((User) extractedUser).getLastPasswordChange()); String newPassword = "newPassword"; this._userManager.changePassword(username, newPassword); extractedUser = this._userManager.getUser(username, newPassword); assertNotNull(extractedUser); Date lastPasswordChange = ((User) extractedUser).getLastPasswordChange(); assertEquals(todayDateString, DateConverter.getFormattedDate(lastPasswordChange, "dd/MM/yyyy")); } catch (Throwable t) { throw t; } finally { this._userManager.removeUser(user); UserDetails extractedUser = this._userManager.getUser(username); assertNull(extractedUser); } } //TODO FARE TEST PER OPERAZIONI SPECIALI SU UTENTE (VERIFICA DATE ACCESSI E CAMBIO PASSWORD) private void init() throws Exception { try { this._userManager = (IUserManager) this.getService(SystemConstants.USER_MANAGER); } catch (Throwable e) { throw new Exception(e); } } protected MockUser createUserForTest(String username) { MockUser user = new MockUser(); user.setUsername(username); user.setPassword("temp"); return user; } private IUserManager _userManager = null; }