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 }