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