1   package com.atlassian.user.impl.hibernate;
2   
3   import com.atlassian.cache.CacheFactory;
4   import com.atlassian.cache.memory.MemoryCacheManager;
5   import com.atlassian.user.EntityException;
6   import com.atlassian.user.User;
7   import com.atlassian.user.UserManager;
8   import com.atlassian.user.impl.DefaultUser;
9   import com.atlassian.user.impl.cache.CachingUserManager;
10  import com.atlassian.user.security.password.Credential;
11  
12  public class TestCachedHibernateUserManager extends TestHibernateUserManager    
13  {
14      private CachingUserManager cachingUserManager;
15  
16      protected void onSetUp() throws Exception
17      {
18          super.onSetUp();
19          CacheFactory cacheFactory = new MemoryCacheManager();
20          cachingUserManager = new CachingUserManager(hibernateUserManager, cacheFactory);
21      }
22  
23      protected UserManager getUserManager()
24      {
25          return cachingUserManager;
26      }
27  
28      public void testChangingCachedUser() throws EntityException
29      {
30          String userName = "andrew";
31          String fullName = "blah";
32          String mail = "mail@example.com";
33          getUserManager().createUser(new DefaultUser(userName, "", ""), Credential.NONE);
34          setComplete();
35          endTransaction();
36          startNewTransaction();
37  
38          User cachedUser = getUserManager().getUser(userName);
39          User notCachedUser = hibernateUserManager.getUser(userName);
40          DefaultUser updatedUser = new DefaultUser(notCachedUser);
41          updatedUser.setFullName(fullName);
42          updatedUser.setEmail(mail);
43          getUserManager().saveUser(updatedUser);
44          assertNotSame(notCachedUser, cachedUser);
45          setComplete();
46          endTransaction();
47          startNewTransaction();
48  
49          User retrievedUser = hibernateUserManager.getUser(userName);
50          assertEquals(fullName, retrievedUser.getFullName());
51          assertEquals(mail, retrievedUser.getEmail());
52          getUserManager().removeUser(cachedUser);
53          setComplete();
54          endTransaction();        
55      }
56  }