1 package com.atlassian.user.impl.delegation;
2
3 import com.atlassian.user.Group;
4 import com.atlassian.user.GroupManager;
5 import com.atlassian.user.User;
6 import com.atlassian.user.UserManager;
7 import com.atlassian.user.generic.AbstractTestExternalGroupManager;
8
9 import java.util.Arrays;
10 import java.util.Iterator;
11
12
13
14
15
16
17
18
19 public class TestDelegatingGroupManagerWithHibernateAndOSUser extends AbstractTestExternalGroupManager
20 {
21 private GroupManager osuGroupManager;
22 private UserManager osuUserManager;
23 private GroupManager hibernateGroupManager;
24 private UserManager hibernateUserManager;
25 private GroupManager delegatingGroupManager;
26 private UserManager delegatingUserManager;
27
28 protected String[] getConfigLocations()
29 {
30 return new String[]{
31 "classpath:com/atlassian/user/impl/osuser/osuserTestContext.xml",
32 "classpath:com/atlassian/user/impl/hibernate/hibernateTestContext.xml",
33 "classpath:com/atlassian/user/dataSourceTestContext.xml"
34 };
35 }
36
37 public void setOsuGroupManager(GroupManager osuGroupManager)
38 {
39 this.osuGroupManager = osuGroupManager;
40 }
41
42 public void setOsuUserManager(UserManager osuUserManager)
43 {
44 this.osuUserManager = osuUserManager;
45 }
46
47 public void setHibernateGroupManager(GroupManager hibernateGroupManager)
48 {
49 this.hibernateGroupManager = hibernateGroupManager;
50 }
51
52 public void setHibernateUserManager(UserManager hibernateUserManager)
53 {
54 this.hibernateUserManager = hibernateUserManager;
55 }
56
57 public void onSetUp() throws Exception
58 {
59 super.onSetUp();
60 delegatingGroupManager = new DelegatingGroupManager(Arrays.asList(new GroupManager[]{
61 osuGroupManager,
62 hibernateGroupManager,
63 }));
64 delegatingUserManager = new DelegatingUserManager(Arrays.asList(new UserManager[]{
65 osuUserManager,
66 hibernateUserManager,
67 }));
68 }
69
70 protected void onTearDown() throws Exception
71 {
72 for (Iterator i = osuGroupManager.getGroups().iterator(); i.hasNext();)
73 {
74 Group group = (Group) i.next();
75 osuGroupManager.removeGroup(group);
76 }
77 for (Iterator i = osuUserManager.getUsers().iterator(); i.hasNext();)
78 {
79 User user = (User) i.next();
80 osuUserManager.removeUser(user);
81 }
82
83 super.onTearDown();
84 }
85
86 protected UserManager getUserManager()
87 {
88 return delegatingUserManager;
89 }
90
91 protected GroupManager getGroupManager()
92 {
93 return delegatingGroupManager;
94 }
95
96 protected GroupManager getExternalGroupManager()
97 {
98 return hibernateGroupManager;
99 }
100
101 public void testCreateGroupUsesFirstWritableRepository() throws Exception
102 {
103 assertTrue(osuGroupManager.isCreative());
104 assertTrue(hibernateGroupManager.isCreative());
105
106 Group group = getGroupManager().createGroup("group");
107
108 assertEquals(group, osuGroupManager.getGroup("group"));
109 assertNull(hibernateGroupManager.getGroup("group"));
110 }
111
112 public void testGetGroupScansAllRepositories() throws Exception
113 {
114 Group group = hibernateGroupManager.createGroup("group");
115
116 assertNull(osuGroupManager.getGroup("group"));
117 assertEquals(group, hibernateGroupManager.getGroup("group"));
118 assertEquals(group, delegatingGroupManager.getGroup("group"));
119 }
120 }