1 package org.exoplatform.social.core.space.spi;
2
3 import org.exoplatform.commons.utils.CommonsUtils;
4 import org.exoplatform.container.xml.InitParams;
5 import org.exoplatform.container.xml.ObjectParameter;
6 import org.exoplatform.container.xml.ValueParam;
7 import org.exoplatform.social.core.identity.model.Identity;
8 import org.exoplatform.social.core.identity.provider.SpaceIdentityProvider;
9 import org.exoplatform.social.core.space.SpaceApplication;
10 import org.exoplatform.social.core.space.SpaceTemplate;
11 import org.exoplatform.social.core.space.SpaceTemplateConfigPlugin;
12 import org.exoplatform.social.core.space.impl.DefaultSpaceApplicationHandler;
13 import org.exoplatform.social.core.space.impl.SpaceTemplateServiceImpl;
14 import org.exoplatform.social.core.space.model.Space;
15 import org.exoplatform.social.core.storage.IdentityStorageException;
16 import org.exoplatform.social.core.storage.api.IdentityStorage;
17 import org.exoplatform.social.core.storage.impl.StorageUtils;
18 import org.exoplatform.social.core.test.AbstractCoreTest;
19
20 import java.util.ArrayList;
21 import java.util.Collections;
22 import java.util.List;
23 import java.util.Map;
24
25 public class SpaceTemplateServiceTest extends AbstractCoreTest {
26 private SpaceTemplateService spaceTemplateService;
27 private IdentityStorage identityStorage;
28 private List<Space> tearDownSpaceList;
29
30 @Override
31 public void setUp() {
32 spaceTemplateService = CommonsUtils.getService(SpaceTemplateService.class);
33 identityStorage = CommonsUtils.getService(IdentityStorage.class);
34 spaceService = CommonsUtils.getService(SpaceService.class);
35 tearDownSpaceList = new ArrayList<>();
36 }
37
38 @Override
39 public void tearDown() throws Exception {
40 end();
41 begin();
42
43 for (Space space : tearDownSpaceList) {
44 Identity spaceIdentity = identityStorage.findIdentity(SpaceIdentityProvider.NAME, space.getPrettyName());
45 if (spaceIdentity != null) {
46 try {
47 identityStorage.deleteIdentity(spaceIdentity);
48 } catch (IdentityStorageException e) {
49
50 }
51 }
52 try {
53 spaceService.deleteSpace(space);
54 } catch (Exception e) {
55
56 }
57 }
58
59 StorageUtils.persist();
60 super.tearDown();
61 }
62
63
64
65
66
67 public void testGetSpaceTemplates() {
68
69 List<SpaceTemplate> templates = spaceTemplateService.getSpaceTemplates();
70
71 assertTrue(Collections.unmodifiableList(Collections.EMPTY_LIST).getClass().isInstance(templates));
72 }
73
74
75
76
77
78 public void testGetSpaceTemplateByName() {
79
80 SpaceTemplate template = spaceTemplateService.getSpaceTemplateByName("classic");
81 SpaceTemplate templateFake = spaceTemplateService.getSpaceTemplateByName("fake");
82
83 assertEquals(template.getName(), "classic");
84 assertNull(templateFake);
85 }
86
87
88
89
90
91 public void testRegisterSpaceTemplatePlugin() {
92 SpaceApplication homeApplication = new SpaceApplication();
93 homeApplication.setAppTitle("fakeHome");
94 homeApplication.setPortletApp("fakeHomeApp");
95 homeApplication.setPortletName("fakeHomeName");
96
97 List<SpaceApplication> applicationList = new ArrayList<>();
98 for (int i=0; i<3; i++) {
99 SpaceApplication app = new SpaceApplication();
100 app.setAppTitle("fakeTitle" + i);
101 app.setPortletApp("fakeApp" + i);
102 app.setPortletName("fakeName" + i);
103 applicationList.add(app);
104 }
105 SpaceTemplate spaceTemplate = new SpaceTemplate();
106 spaceTemplate.setName("custom");
107 spaceTemplate.setVisibility("private");
108 spaceTemplate.setRegistration("open");
109 spaceTemplate.setHomeApplication(homeApplication);
110 spaceTemplate.setSpaceApplicationList(applicationList);
111 InitParams params = new InitParams();
112 ObjectParameter objParam = new ObjectParameter();
113 objParam.setName("template");
114 objParam.setObject(spaceTemplate);
115 params.addParameter(objParam);
116
117 assertEquals(1, spaceTemplateService.getSpaceTemplates().size());
118
119 spaceTemplateService.registerSpaceTemplatePlugin(new SpaceTemplateConfigPlugin(params));
120
121 assertEquals(2, spaceTemplateService.getSpaceTemplates().size());
122 }
123
124
125
126
127
128 public void testExtendSpaceTemplatePlugin() {
129 List<SpaceApplication> applicationList = new ArrayList<>();
130 for (int i=0; i<3; i++) {
131 SpaceApplication app = new SpaceApplication();
132 app.setAppTitle("fakeTitle" + i);
133 app.setPortletApp("fakeApp" + i);
134 app.setPortletName("fakeName" + i);
135 app.setOrder(4 + i);
136 applicationList.add(app);
137 }
138 SpaceTemplate spaceTemplate = new SpaceTemplate();
139 spaceTemplate.setName("classic");
140 spaceTemplate.setSpaceApplicationList(applicationList);
141 InitParams params = new InitParams();
142 ObjectParameter objParam = new ObjectParameter();
143 objParam.setName("template");
144 objParam.setObject(spaceTemplate);
145 params.addParameter(objParam);
146
147 SpaceTemplate template = spaceTemplateService.getSpaceTemplateByName("classic");
148 assertEquals(3, template.getSpaceApplicationList().size());
149
150 spaceTemplateService.extendSpaceTemplatePlugin(new SpaceTemplateConfigPlugin(params));
151
152 ((SpaceTemplateServiceImpl) spaceTemplateService).start();
153 template = spaceTemplateService.getSpaceTemplateByName("classic");
154 assertEquals(6, template.getSpaceApplicationList().size());
155 }
156
157
158
159
160
161 public void testRegisterSpaceApplicationHandler() {
162
163 Map<String, SpaceApplicationHandler> handlerMap = spaceTemplateService.getSpaceApplicationHandlers();
164 assertEquals(1, handlerMap.size());
165 InitParams params = new InitParams();
166 ValueParam valueParam = new ValueParam();
167 valueParam.setName("templateName");
168 valueParam.setValue("custom");
169 params.addParameter(valueParam);
170 SpaceApplicationHandler applicationHandler = new DefaultSpaceApplicationHandler(params, null, null, null);
171
172 spaceTemplateService.registerSpaceApplicationHandler(applicationHandler);
173
174 handlerMap = spaceTemplateService.getSpaceApplicationHandlers();
175 assertEquals(2, handlerMap.size());
176 }
177
178
179
180
181
182 public void testGetSpaceApplicationHandlers() {
183
184 Map<String, SpaceApplicationHandler> handlers = spaceTemplateService.getSpaceApplicationHandlers();
185
186 assertTrue(Collections.unmodifiableMap(Collections.EMPTY_MAP).getClass().isInstance(handlers));
187 }
188
189
190
191
192
193 public void testGetDefaultSpaceTemplate() {
194 assertEquals("classic", spaceTemplateService.getDefaultSpaceTemplate());
195 }
196
197
198
199
200
201 public void testInitSpaceApplications() throws Exception {
202
203 }
204
205
206
207
208
209 public void testSetApp() throws Exception {
210 startSessionAs("root");
211 Space space = createSpace("mySpace", "root");
212 assertNull(space.getApp());
213
214 spaceTemplateService.setApp(space, "appId", "appName", true, Space.ACTIVE_STATUS);
215
216 assertEquals("appId:appName:true:active", space.getApp());
217 }
218
219 private Space createSpace(String spaceName, String creator) throws Exception {
220 try {
221 Space space = new Space();
222 space.setDisplayName(spaceName);
223 space.setPrettyName(spaceName);
224 space.setGroupId("/spaces/" + space.getPrettyName());
225 space.setRegistration(Space.OPEN);
226 space.setDescription("description of space" + spaceName);
227 space.setTemplate(DefaultSpaceApplicationHandler.NAME);
228 space.setVisibility(Space.PRIVATE);
229 space.setRegistration(Space.OPEN);
230 space.setPriority(Space.INTERMEDIATE_PRIORITY);
231 String[] managers = new String[] {creator};
232 String[] members = new String[] {creator};
233 space.setManagers(managers);
234 space.setMembers(members);
235 spaceService.saveSpace(space, true);
236 tearDownSpaceList.add(space);
237 return space;
238 } finally {
239 StorageUtils.persist();
240 }
241 }
242 }