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.junit.Ignore;
19 import org.wamblee.cache.EhCache;
21 import org.wamblee.system.adapters.DefaultContainer;
22 import org.wamblee.system.adapters.ObjectConfiguration;
23 import org.wamblee.system.core.Scope;
24 import org.wamblee.system.spring.component.DatabaseTesterComponent;
26 import org.wamblee.usermgt.Group;
27 import org.wamblee.usermgt.GroupSet;
28 import org.wamblee.usermgt.InMemoryUserSetTest;
29 import org.wamblee.usermgt.User;
30 import org.wamblee.usermgt.UserMgtException;
31 import org.wamblee.usermgt.UserSet;
33 import java.io.Serializable;
35 import java.sql.ResultSet;
36 import java.sql.SQLException;
41 * Tests for {@link org.wamblee.usermgt.hibernate.HibernateGroupSet}
43 * @author Erik Brakkee
46 public class HibernateUserSetTest extends InMemoryUserSetTest {
47 private static final String USER_TABLE = "USERS";
49 private static final String GROUP_TABLE = "GROUPS";
51 private static final String USER_QUERY = "select * from " + USER_TABLE +
54 private static final String GROUP_QUERY = "select * from " + GROUP_TABLE +
57 private DefaultContainer container;
61 private UserSet userset;
63 private GroupSet groupset;
65 private EhCache<Serializable, Serializable> userCache;
67 private DatabaseTesterComponent databaseTester;
72 * @see org.wamblee.usermgt.InMemoryUserSetTest#setUp()
75 protected void setUp() throws Exception {
76 container = new UserMgtRepositoryTestContainer("top");
78 ObjectConfiguration config = new ObjectConfiguration(
79 HibernateUserSetTest.class);
80 config.getSetterConfig().clear().add("setUserset").add("setGroupset")
81 .add("setDatabaseTester").add("setUserCache");
82 container.addComponent("testcase", this, config);
84 scope = container.start();
87 databaseTester.cleanDatabase();
92 public void setUserset(UserSet aUserset) {
96 public void setGroupset(GroupSet aGroupset) {
100 public void setUserCache(EhCache<Serializable, Serializable> aUserCache) {
101 userCache = aUserCache;
104 public void setDatabaseTester(DatabaseTesterComponent aDatabaseTester) {
105 databaseTester = aDatabaseTester;
109 protected void tearDown() throws Exception {
110 container.stop(scope);
115 * Clears the user cache.
117 private void clearUserCache() {
124 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupCount(int)
127 protected void checkUserCount(int aSize) throws SQLException {
128 databaseTester.flush();
129 super.checkUserCount(aSize);
130 assertEquals(aSize, databaseTester.getTableSize(USER_TABLE));
137 * org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupExists(java.lang.String
141 protected void checkUserExists(String aUser) throws SQLException {
142 databaseTester.flush();
144 ResultSet result = databaseTester.executeQuery(USER_QUERY, aUser);
145 assertEquals(1, databaseTester.countResultSet(result));
152 * org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupNotExists(java.lang
156 protected void checkUserNotExists(String aUser) throws SQLException {
157 databaseTester.flush();
159 ResultSet result = databaseTester.executeQuery(USER_QUERY, aUser);
160 assertEquals(0, databaseTester.countResultSet(result));
166 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupCount(int)
169 protected void checkGroupCount(int aSize) throws SQLException {
170 databaseTester.flush();
171 assertEquals(aSize, databaseTester.getTableSize(GROUP_TABLE));
178 * org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupExists(java.lang.String
182 protected void checkGroupExists(String aGroup) throws SQLException {
183 databaseTester.flush();
185 ResultSet result = databaseTester.executeQuery(GROUP_QUERY, aGroup);
186 assertEquals(1, databaseTester.countResultSet(result));
193 * org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupNotExists(java.lang
197 protected void checkGroupNotExists(String aGroup) throws SQLException {
198 databaseTester.flush();
200 ResultSet result = databaseTester.executeQuery(GROUP_QUERY, aGroup);
201 assertEquals(0, databaseTester.countResultSet(result));
207 * @see org.wamblee.usermgt.InMemoryGroupSetTest#createGroupSet()
210 protected UserSet createUserSet() {
217 * @see org.wamblee.usermgt.InMemoryUserSetTest#createGroupSet()
220 protected GroupSet createGroupSet() {
225 * Reproduction of a bug. Create a user which is in group1 Add it to a
226 * second group group2. Remove the user from group1. Verify the user is in
230 public void testVerifyAddRemove() throws SQLException, UserMgtException {
231 databaseTester.cleanDatabase(); // just to be sure.
233 GroupSet groups = getGroups();
234 assertEquals(0, groups.size());
236 Group group1 = createGroup("group1");
237 Group group2 = createGroup("group2");
240 checkGroupExists("group1");
241 checkGroupExists("group2");
243 User user = createUser("user", PASSWORD, group1);
244 getUsers().add(user);
245 checkUserExists("user");
247 addUserToGroup(user, group2);
248 getUsers().userModified(user);
251 User user2 = getUsers().find("user");
252 Set<Group> userGroups = user2.getGroups();
253 assertTrue(user2.isInGroup("group1"));
254 assertTrue(user2.isInGroup("group2"));
255 assertEquals(2, userGroups.size());
257 removeUserFromGroup(user, group1);
258 getUsers().userModified(user);
260 user2 = getUsers().find("user");
261 userGroups = user2.getGroups();
262 assertFalse(user2.isInGroup("group1"));
263 assertTrue(user2.isInGroup("group2"));
264 assertEquals(1, userGroups.size());