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.io.Serializable;
20 import java.sql.ResultSet;
21 import java.sql.SQLException;
24 import javax.sql.DataSource;
26 import org.wamblee.cache.Cache;
27 import org.wamblee.cache.EhCache;
28 import org.wamblee.general.BeanKernel;
29 import org.wamblee.system.adapters.DefaultContainer;
30 import org.wamblee.system.adapters.ObjectConfiguration;
31 import org.wamblee.system.core.Scope;
32 import org.wamblee.system.spring.DatabaseTesterComponent;
33 import org.wamblee.usermgt.Group;
34 import org.wamblee.usermgt.GroupSet;
35 import org.wamblee.usermgt.InMemoryUserSetTest;
36 import org.wamblee.usermgt.User;
37 import org.wamblee.usermgt.UserMgtException;
38 import org.wamblee.usermgt.UserSet;
39 import org.wamblee.usermgt.UsermgtHibernateMappingFiles;
40 import org.wamblee.usermgt.UsermgtSpringConfigFiles;
43 * Tests for {@link org.wamblee.usermgt.hibernate.HibernateGroupSet}
45 * @author Erik Brakkee
47 public class HibernateUserSetTest extends InMemoryUserSetTest {
49 private static final String USER_TABLE = "USERS";
50 private static final String GROUP_TABLE = "GROUPS";
52 private static final String USER_QUERY = "select * from " + USER_TABLE
54 private static final String GROUP_QUERY = "select * from " + GROUP_TABLE
57 public HibernateUserSetTest() {
58 super(UsermgtSpringConfigFiles.class,
59 UsermgtHibernateMappingFiles.class);
62 private DefaultContainer _container;
65 private DataSource _datasource;
66 private UserSet _userset;
67 private GroupSet _groupset;
68 private EhCache<Serializable, Serializable> _userCache;
69 private DatabaseTesterComponent _databaseTester;
74 * @see org.wamblee.usermgt.InMemoryUserSetTest#setUp()
77 protected void setUp() throws Exception {
79 _container = new UserMgtRepositoryTestContainer("top");
81 ObjectConfiguration config = new ObjectConfiguration(
82 HibernateUserSetTest.class);
83 config.getSetterConfig().clear().add("datasource").add("userset").add(
84 "groupset").add("databaseTester").add("userCache");
85 _container.addComponent("testcase", this, config);
87 _scope = _container.start();
90 _databaseTester.cleanDatabase();
95 public void setDatasource(DataSource aDatasource) {
96 _datasource = aDatasource;
99 public void setUserset(UserSet aUserset) {
103 public void setGroupset(GroupSet aGroupset) {
104 _groupset = aGroupset;
107 public void setUserCache(EhCache<Serializable, Serializable> aUserCache) {
108 _userCache = aUserCache;
111 public void setDatabaseTester(DatabaseTesterComponent aDatabaseTester) {
112 _databaseTester = aDatabaseTester;
116 protected void tearDown() throws Exception {
117 _container.stop(_scope);
122 * Clears the user cache.
124 private void clearUserCache() {
131 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupCount(int)
134 protected void checkUserCount(int aSize) throws SQLException {
135 _databaseTester.flush();
136 super.checkUserCount(aSize);
137 assertEquals(aSize, _databaseTester.getTableSize(USER_TABLE));
143 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupExists(java.lang.String)
146 protected void checkUserExists(String aUser) throws SQLException {
147 _databaseTester.flush();
148 ResultSet result = _databaseTester.executeQuery(USER_QUERY, aUser);
149 assertEquals(1, _databaseTester.countResultSet(result));
155 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupNotExists(java.lang.String)
158 protected void checkUserNotExists(String aUser) throws SQLException {
159 _databaseTester.flush();
160 ResultSet result = _databaseTester.executeQuery(USER_QUERY, aUser);
161 assertEquals(0, _databaseTester.countResultSet(result));
167 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupCount(int)
170 protected void checkGroupCount(int aSize) throws SQLException {
171 _databaseTester.flush();
172 assertEquals(aSize, _databaseTester.getTableSize(GROUP_TABLE));
178 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupExists(java.lang.String)
181 protected void checkGroupExists(String aGroup) throws SQLException {
182 _databaseTester.flush();
184 ResultSet result = _databaseTester.executeQuery(GROUP_QUERY, aGroup);
185 assertEquals(1, _databaseTester.countResultSet(result));
191 * @see org.wamblee.usermgt.InMemoryGroupSetTest#checkGroupNotExists(java.lang.String)
194 protected void checkGroupNotExists(String aGroup) throws SQLException {
195 _databaseTester.flush();
196 ResultSet result = _databaseTester.executeQuery(GROUP_QUERY, aGroup);
197 assertEquals(0, _databaseTester.countResultSet(result));
203 * @see org.wamblee.usermgt.InMemoryGroupSetTest#createGroupSet()
206 protected UserSet createUserSet() {
213 * @see org.wamblee.usermgt.InMemoryUserSetTest#createGroupSet()
216 protected GroupSet createGroupSet() {
221 * Reproduction of a bug. Create a user which is in group1 Add it to a
222 * second group group2. Remove the user from group1. Verify the user is in
225 public void testVerifyAddRemove() throws SQLException, UserMgtException {
226 _databaseTester.cleanDatabase(); // just to be sure.
227 GroupSet groups = getGroups();
228 assertEquals(0, groups.size());
229 Group group1 = createGroup("group1");
230 Group group2 = createGroup("group2");
233 checkGroupExists("group1");
234 checkGroupExists("group2");
236 User user = createUser("user", PASSWORD, group1);
237 getUsers().add(user);
238 checkUserExists("user");
240 addUserToGroup(user, group2);
241 getUsers().userModified(user);
243 User user2 = getUsers().find("user");
244 Set<Group> userGroups = user2.getGroups();
245 assertTrue(user2.isInGroup("group1"));
246 assertTrue(user2.isInGroup("group2"));
247 assertEquals(2, userGroups.size());
249 removeUserFromGroup(user, group1);
250 getUsers().userModified(user);
252 user2 = getUsers().find("user");
253 userGroups = user2.getGroups();
254 assertFalse(user2.isInGroup("group1"));
255 assertTrue(user2.isInGroup("group2"));
256 assertEquals(1, userGroups.size());