2 * Copyright 2005-2010 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.wamblee.usermgt.hibernate;
18 import org.wamblee.cache.EhCache;
20 import org.wamblee.system.adapters.DefaultContainer;
21 import org.wamblee.system.adapters.ObjectConfiguration;
22 import org.wamblee.system.core.Scope;
23 import org.wamblee.system.spring.component.DatabaseTesterComponent;
25 import org.wamblee.usermgt.Group;
26 import org.wamblee.usermgt.GroupSet;
27 import org.wamblee.usermgt.InMemoryUserSetTest;
28 import org.wamblee.usermgt.User;
29 import org.wamblee.usermgt.UserMgtException;
30 import org.wamblee.usermgt.UserSet;
32 import java.io.Serializable;
34 import java.sql.ResultSet;
35 import java.sql.SQLException;
40 * Tests for {@link org.wamblee.usermgt.hibernate.HibernateGroupSet}
42 * @author Erik Brakkee
44 public class HibernateUserSetTest extends InMemoryUserSetTest {
45 private static final String USER_TABLE = "USERS";
47 private static final String GROUP_TABLE = "GROUPS";
49 private static final String USER_QUERY = "select * from " + USER_TABLE +
52 private static final String GROUP_QUERY = "select * from " + GROUP_TABLE +
55 private DefaultContainer container;
59 private UserSet userset;
61 private GroupSet groupset;
63 private EhCache<Serializable, Serializable> userCache;
65 private DatabaseTesterComponent databaseTester;
70 * @see org.wamblee.usermgt.InMemoryUserSetTest#setUp()
73 protected void setUp() throws Exception {
74 container = new UserMgtRepositoryTestContainer("top");
76 ObjectConfiguration config = new ObjectConfiguration(
77 HibernateUserSetTest.class);
78 config.getSetterConfig().clear().add("setUserset").add("setGroupset")
79 .add("setDatabaseTester").add("setUserCache");
80 container.addComponent("testcase", this, config);
82 scope = container.start();
85 databaseTester.cleanDatabase();
90 public void setUserset(UserSet aUserset) {
94 public void setGroupset(GroupSet aGroupset) {
98 public void setUserCache(EhCache<Serializable, Serializable> aUserCache) {
99 userCache = aUserCache;
102 public void setDatabaseTester(DatabaseTesterComponent aDatabaseTester) {
103 databaseTester = aDatabaseTester;
107 protected void tearDown() throws Exception {
108 container.stop(scope);
113 * Clears the user cache.
115 private void clearUserCache() {
122 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupCount(int)
125 protected void checkUserCount(int aSize) throws SQLException {
126 databaseTester.flush();
127 super.checkUserCount(aSize);
128 assertEquals(aSize, databaseTester.getTableSize(USER_TABLE));
135 * org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupExists(java.lang.String
139 protected void checkUserExists(String aUser) throws SQLException {
140 databaseTester.flush();
142 ResultSet result = databaseTester.executeQuery(USER_QUERY, aUser);
143 assertEquals(1, databaseTester.countResultSet(result));
150 * org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupNotExists(java.lang
154 protected void checkUserNotExists(String aUser) throws SQLException {
155 databaseTester.flush();
157 ResultSet result = databaseTester.executeQuery(USER_QUERY, aUser);
158 assertEquals(0, databaseTester.countResultSet(result));
164 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupCount(int)
167 protected void checkGroupCount(int aSize) throws SQLException {
168 databaseTester.flush();
169 assertEquals(aSize, databaseTester.getTableSize(GROUP_TABLE));
176 * org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupExists(java.lang.String
180 protected void checkGroupExists(String aGroup) throws SQLException {
181 databaseTester.flush();
183 ResultSet result = databaseTester.executeQuery(GROUP_QUERY, aGroup);
184 assertEquals(1, databaseTester.countResultSet(result));
191 * org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupNotExists(java.lang
195 protected void checkGroupNotExists(String aGroup) throws SQLException {
196 databaseTester.flush();
198 ResultSet result = databaseTester.executeQuery(GROUP_QUERY, aGroup);
199 assertEquals(0, databaseTester.countResultSet(result));
205 * @see org.wamblee.usermgt.InMemoryGroupSetTest#createGroupSet()
208 protected UserSet createUserSet() {
215 * @see org.wamblee.usermgt.InMemoryUserSetTest#createGroupSet()
218 protected GroupSet createGroupSet() {
223 * Reproduction of a bug. Create a user which is in group1 Add it to a
224 * second group group2. Remove the user from group1. Verify the user is in
228 public void testVerifyAddRemove() throws SQLException, UserMgtException {
229 databaseTester.cleanDatabase(); // just to be sure.
231 GroupSet groups = getGroups();
232 assertEquals(0, groups.size());
234 Group group1 = createGroup("group1");
235 Group group2 = createGroup("group2");
238 checkGroupExists("group1");
239 checkGroupExists("group2");
241 User user = createUser("user", PASSWORD, group1);
242 getUsers().add(user);
243 checkUserExists("user");
245 addUserToGroup(user, group2);
246 getUsers().userModified(user);
249 User user2 = getUsers().find("user");
250 Set<Group> userGroups = user2.getGroups();
251 assertTrue(user2.isInGroup("group1"));
252 assertTrue(user2.isInGroup("group2"));
253 assertEquals(2, userGroups.size());
255 removeUserFromGroup(user, group1);
256 getUsers().userModified(user);
258 user2 = getUsers().find("user");
259 userGroups = user2.getGroups();
260 assertFalse(user2.isInGroup("group1"));
261 assertTrue(user2.isInGroup("group2"));
262 assertEquals(1, userGroups.size());