2 * Copyright 2005 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.
17 package org.wamblee.usermgt.hibernate;
19 import java.sql.ResultSet;
20 import java.sql.SQLException;
23 import org.wamblee.cache.Cache;
24 import org.wamblee.general.BeanKernel;
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;
31 import org.wamblee.usermgt.UsermgtHibernateMappingFiles;
32 import org.wamblee.usermgt.UsermgtSpringConfigFiles;
35 * Tests for {@link org.wamblee.usermgt.hibernate.HibernateGroupSet}
37 public class HibernateUserSetTest extends InMemoryUserSetTest {
39 private static final String USER_TABLE = "USERS";
40 private static final String GROUP_TABLE = "GROUPS";
42 private static final String USER_QUERY = "select * from " + USER_TABLE + " where name = ?";
43 private static final String GROUP_QUERY = "select * from " + GROUP_TABLE + " where name = ?";
45 public HibernateUserSetTest() {
46 super(UsermgtSpringConfigFiles.class, UsermgtHibernateMappingFiles.class);
50 * @see org.wamblee.usermgt.InMemoryUserSetTest#setUp()
53 protected void setUp() throws Exception {
59 * Clears the user cache.
61 private void clearUserCache() {
62 BeanKernel.getBeanFactory().find("userCache", Cache.class).clear();
66 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupCount(int)
69 protected void checkUserCount(int aSize) throws SQLException {
71 super.checkUserCount(aSize);
72 assertEquals(aSize, getTableSize(USER_TABLE));
76 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupExists(java.lang.String)
79 protected void checkUserExists(String aUser) throws SQLException {
81 ResultSet result = executeQuery(USER_QUERY, aUser);
82 assertEquals(1, countResultSet(result));
86 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupNotExists(java.lang.String)
89 protected void checkUserNotExists(String aUser) throws SQLException {
91 ResultSet result = executeQuery(USER_QUERY, aUser);
92 assertEquals(0, countResultSet(result));
96 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupCount(int)
99 protected void checkGroupCount(int aSize) throws SQLException {
101 assertEquals(aSize, getTableSize(GROUP_TABLE));
105 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupExists(java.lang.String)
108 protected void checkGroupExists(String aGroup) throws SQLException {
111 ResultSet result = executeQuery(GROUP_QUERY, aGroup);
112 assertEquals(1, countResultSet(result));
116 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupNotExists(java.lang.String)
119 protected void checkGroupNotExists(String aGroup) throws SQLException {
121 ResultSet result = executeQuery(GROUP_QUERY, aGroup);
122 assertEquals(0, countResultSet(result));
126 * @see org.wamblee.usermgt.InMemoryGroupSetTest#createGroupSet()
129 protected UserSet createUserSet() {
130 return BeanKernel.getBeanFactory().find(UserSet.class);
134 * @see org.wamblee.usermgt.InMemoryUserSetTest#createGroupSet()
137 protected GroupSet createGroupSet() {
138 return BeanKernel.getBeanFactory().find(GroupSet.class);
142 * Reproduction of a bug.
143 * Create a user which is in group1
144 * Add it to a second group group2.
145 * Remove the user from group1.
146 * Verify the user is in group2.
148 public void testVerifyAddRemove() throws SQLException, UserMgtException {
149 cleanDatabase(); // just to be sure.
150 GroupSet groups = getGroups();
151 assertEquals(0, groups.size());
152 Group group1 = createGroup("group1");
153 Group group2 = createGroup("group2");
156 checkGroupExists("group1");
157 checkGroupExists("group2");
159 User user = createUser("user", PASSWORD, group1);
160 getUsers().add(user);
161 checkUserExists("user");
163 addUserToGroup(user, group2);
164 getUsers().userModified(user);
166 User user2 = getUsers().find("user");
167 Set<Group> userGroups = user2.getGroups();
168 assertTrue(user2.isInGroup("group1"));
169 assertTrue(user2.isInGroup("group2"));
170 assertEquals(2, userGroups.size());
172 removeUserFromGroup(user, group1);
173 getUsers().userModified(user);
175 user2 = getUsers().find("user");
176 userGroups = user2.getGroups();
177 assertFalse(user2.isInGroup("group1"));
178 assertTrue(user2.isInGroup("group2"));
179 assertEquals(1, userGroups.size());