1 package com.atlassian.user.impl.hibernate;
2
3 import com.atlassian.user.EntityException;
4 import com.atlassian.user.User;
5 import com.atlassian.user.UserManager;
6 import com.atlassian.user.generic.AbstractTestUserManager;
7 import com.atlassian.user.impl.DefaultUser;
8 import com.atlassian.user.impl.osuser.security.password.OSUPasswordEncryptor;
9 import com.atlassian.user.security.password.PasswordEncryptor;
10
11 public class TestHibernateUserManager extends AbstractTestUserManager
12 {
13 protected HibernateUserManager hibernateUserManager;
14
15 protected UserManager getUserManager()
16 {
17 return hibernateUserManager;
18 }
19
20 public void setHibernateUserManager(HibernateUserManager hibernateUserManager)
21 {
22 this.hibernateUserManager = hibernateUserManager;
23 }
24
25 protected String[] getConfigLocations()
26 {
27 return new String[]{
28 "classpath:com/atlassian/user/impl/hibernate/hibernateTestContext.xml",
29 "classpath:com/atlassian/user/dataSourceTestContext.xml",
30 };
31 }
32 public void testSetPassword() throws Exception
33 {
34 User user = getUserManager().createUser("user");
35 user.setPassword("password-hash");
36 getUserManager().saveUser(user);
37
38 DefaultUser retrievedUser = (DefaultUser) getUserManager().getUser("user");
39 String retrievedPassword = retrievedUser.getPassword();
40
41 assertEquals("password-hash", retrievedPassword);
42 }
43
44 public void testAlterPassword() throws Exception
45 {
46 final UserManager userManager = getUserManager();
47 PasswordEncryptor encryptor = new OSUPasswordEncryptor();
48
49 Thread createAndAlterPassword = new Thread(new Runnable() {
50 public void run()
51 {
52 try
53 {
54 final User user = userManager.createUser("user");
55 user.setPassword("password-hash");
56 userManager.saveUser(user);
57
58 userManager.alterPassword(user, "plaintext-password");
59 }
60 catch (EntityException e)
61 {
62 throw new RuntimeException(e);
63 }
64 }
65 });
66 createAndAlterPassword.start();
67 createAndAlterPassword.join(1000);
68
69 final DefaultUser retrievedUser = (DefaultUser) userManager.getUser("user");
70 assertNotNull(retrievedUser);
71 try
72 {
73 assertEquals(encryptor.encrypt("plaintext-password"), retrievedUser.getPassword());
74 }
75 finally
76 {
77
78 userManager.removeUser(retrievedUser);
79 transactionManager.commit(transactionStatus);
80 }
81 }
82
83 }