1   package com.atlassian.user.impl.osuser;
2   
3   import com.atlassian.user.EntityException;
4   import com.atlassian.user.configuration.DefaultRepositoryAccessor;
5   import com.atlassian.user.configuration.RepositoryAccessor;
6   import com.atlassian.user.impl.osuser.security.authentication.OSUAuthenticator;
7   import com.atlassian.user.repository.DefaultRepositoryIdentifier;
8   import com.atlassian.user.util.migration.OSUserHibernateConfigurationProviderTestImpl;
9   import com.opensymphony.user.provider.AccessProvider;
10  import com.opensymphony.user.provider.CredentialsProvider;
11  import com.opensymphony.user.provider.ProfileProvider;
12  import net.sf.hibernate.SessionFactory;
13  import net.sf.hibernate.cfg.Configuration;
14  
15  public class OSUserTestHelper
16  {
17      private RepositoryAccessor repositoryAccessor;
18      private OSUAccessor osUserAccessor;
19  
20      public OSUserTestHelper(SessionFactory sessionFactory, Configuration configuration)
21      {
22          try
23          {
24              repositoryAccessor = createOSUserAccessor(configuration, sessionFactory);
25          }
26          catch (EntityException e)
27          {
28              throw new RuntimeException(e);
29          }
30      }
31  
32      public RepositoryAccessor getRepositoryAccessor()
33      {
34          return repositoryAccessor;
35      }
36  
37      private RepositoryAccessor createOSUserAccessor(Configuration config, SessionFactory sessionFactory)
38          throws EntityException
39      {
40          OSUserHibernateConfigurationProviderTestImpl.setConfiguration(config);
41          OSUserHibernateConfigurationProviderTestImpl.setSessionFactory(sessionFactory);
42  
43          osUserAccessor = new DefaultOSUAccessor();
44          com.opensymphony.user.UserManager osuserManager = new com.opensymphony.user.UserManager("osuser-test-hibernate.xml");
45          AccessProvider accessProvider = (AccessProvider) osuserManager.getAccessProviders().iterator().next();
46          CredentialsProvider credentialsProvider = (CredentialsProvider) osuserManager.getCredentialsProviders().iterator().next();
47          ProfileProvider profileProvider = (ProfileProvider) osuserManager.getProfileProviders().iterator().next();
48  
49          osUserAccessor.setAccessProvider(accessProvider);
50          osUserAccessor.setCredentialsProvider(credentialsProvider);
51          osUserAccessor.setProfileProvider(profileProvider);
52  
53          DefaultRepositoryIdentifier osUserRepositoryIdentifier = new DefaultRepositoryIdentifier("osuserRepository", "OS User Repository");
54  
55          OSUUserManager userManager = new OSUUserManager(osUserRepositoryIdentifier, osUserAccessor);
56          OSUGroupManager groupManager = new OSUGroupManager(osUserRepositoryIdentifier, osUserAccessor);
57  
58          DefaultRepositoryAccessor osuserRepositoryAccessor = new DefaultRepositoryAccessor();
59          osuserRepositoryAccessor.setRepository(osUserRepositoryIdentifier);
60          osuserRepositoryAccessor.setUserManager(userManager);
61          osuserRepositoryAccessor.setGroupManager(groupManager);
62          osuserRepositoryAccessor.setAuthenticator(new OSUAuthenticator(osUserRepositoryIdentifier, credentialsProvider));
63          return osuserRepositoryAccessor;
64      }
65  
66      public OSUAccessor getOSUAccessor()
67      {
68          return osUserAccessor;
69      }
70  }