001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.tests.embedded;
034:
035: import com.flexive.shared.EJBLookup;
036: import com.flexive.shared.exceptions.FxApplicationException;
037: import com.flexive.shared.interfaces.AccountEngine;
038: import com.flexive.shared.security.Role;
039: import org.apache.commons.lang.RandomStringUtils;
040:
041: import java.util.Date;
042:
043: /**
044: * Interface for test user management.
045: *
046: * @author Daniel Lichtenberger (daniel.lichtenberger@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
047: */
048:
049: public class TestUser {
050:
051: private String userName;
052: private String password;
053: private String email;
054: /**
055: * Every user gets its own group to simplify security testing
056: */
057: private String userGroup;
058: private Role[] roles = null;
059: private long userId = -1;
060: private int userGroupId = -1;
061:
062: public TestUser(String informalName) {
063: this .userName = informalName + "_"
064: + RandomStringUtils.random(16, true, true);
065: this .userGroup = informalName + "_GROUP_"
066: + RandomStringUtils.random(16, true, true);
067: this .password = RandomStringUtils.random(32, true, true);
068: this .email = "TESTEMAIL_"
069: + RandomStringUtils.random(5, true, true) + "@"
070: + RandomStringUtils.random(5, true, true) + ".com";
071: }
072:
073: /**
074: * Create the configured test user.
075: *
076: * @param mandatorId the test user mandator ID
077: * @param languageId the test user language
078: * @throws FxApplicationException if the account could not be created
079: */
080: public void createUser(long mandatorId, long languageId)
081: throws FxApplicationException {
082: AccountEngine accounts = EJBLookup.getAccountEngine();
083: if (userId != -1) {
084: throw new RuntimeException("Account already exists");
085: }
086: userId = accounts.create(this .userName, this .userName,
087: this .password, this .email, languageId, mandatorId,
088: true, true,
089: new Date(System.currentTimeMillis() - 1000), new Date(
090: new Date().getTime() + 60 * 60 * 1000), -1,
091: null, false, true);
092: if (roles != null) {
093: // set user-defined roles
094: accounts.setRoles(userId, Role.toIdArray(roles));
095: }
096: this .userGroupId = EJBLookup.getUserGroupEngine().create(
097: this .userGroup, "#112233", mandatorId);
098: accounts
099: .setGroups(this .userId, new long[] { this .userGroupId });
100: }
101:
102: /**
103: * Remove the test user from the database.
104: *
105: * @throws FxApplicationException if the user could not be deleted
106: */
107: public void deleteUser() throws FxApplicationException {
108: if (userId == -1) {
109: return;
110: }
111: EJBLookup.getUserGroupEngine().remove(userGroupId);
112: EJBLookup.getAccountEngine().remove(userId);
113: }
114:
115: public String getUserName() {
116: return this .userName;
117: }
118:
119: public String getPassword() {
120: return this .password;
121: }
122:
123: public long getUserId() {
124: return userId;
125: }
126:
127: public int getUserGroupId() {
128: return userGroupId;
129: }
130:
131: public void setRoles(Role[] roles) {
132: this.roles = roles;
133: }
134:
135: }
|