KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > util > test > ExportUsersRolesTest


1 /*
2  * Copyright (C) 2006 JasperSoft http://www.jaspersoft.com
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed WITHOUT ANY WARRANTY; and without the
10  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
15  * or write to:
16  *
17  * Free Software Foundation, Inc.,
18  * 59 Temple Place - Suite 330,
19  * Boston, MA USA 02111-1307
20  */

21 package com.jaspersoft.jasperserver.util.test;
22
23 /**
24  * @author tkavanagh
25  * @version $id $
26  */

27
28 import java.io.BufferedInputStream JavaDoc;
29 import java.io.FileInputStream JavaDoc;
30 import java.io.FileNotFoundException JavaDoc;
31 import java.io.IOException JavaDoc;
32 import java.io.InputStream JavaDoc;
33 import java.util.Properties JavaDoc;
34
35 import junit.framework.TestCase;
36 import junit.textui.TestRunner;
37
38 import com.jaspersoft.jasperserver.api.common.domain.ExecutionContext;
39 import com.jaspersoft.jasperserver.api.common.domain.impl.ExecutionContextImpl;
40 import com.jaspersoft.jasperserver.api.metadata.common.domain.DataType;
41 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource;
42 import com.jaspersoft.jasperserver.api.metadata.common.domain.Folder;
43 import com.jaspersoft.jasperserver.api.metadata.common.domain.InputControl;
44 import com.jaspersoft.jasperserver.api.metadata.common.domain.Query;
45 import com.jaspersoft.jasperserver.api.metadata.common.domain.Resource;
46 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference;
47 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.DataTypeImpl;
48 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.FolderImpl;
49 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService;
50 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.HibernateRepositoryService;
51 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JdbcReportDataSource;
52 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.JndiJdbcReportDataSource;
53 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit;
54 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.client.ReportUnitImpl;
55 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.impl.RepoReportUnit;
56 import com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianConnection;
57 import com.jaspersoft.jasperserver.api.metadata.olap.domain.MondrianXMLADefinition;
58 import com.jaspersoft.jasperserver.api.metadata.olap.domain.OlapUnit;
59 import com.jaspersoft.jasperserver.api.metadata.olap.domain.XMLAConnection;
60 import com.jaspersoft.jasperserver.api.metadata.olap.service.OlapConnectionService;
61 import com.jaspersoft.jasperserver.api.metadata.user.domain.Role;
62 import com.jaspersoft.jasperserver.api.metadata.user.domain.User;
63 import com.jaspersoft.jasperserver.api.metadata.user.service.UserAuthorityService;
64 import com.jaspersoft.jasperserver.util.DataSourceBean;
65 import com.jaspersoft.jasperserver.util.ExportResource;
66 import com.jaspersoft.jasperserver.util.FileResourceBean;
67 import com.jaspersoft.jasperserver.util.ImportResource;
68 import com.jaspersoft.jasperserver.util.ReportUnitBean;
69
70 import org.hibernate.Session;
71 import org.hibernate.SessionFactory;
72 import org.springframework.context.ApplicationContext;
73 import org.springframework.context.support.ClassPathXmlApplicationContext;
74 import org.springframework.orm.hibernate3.HibernateTemplate;
75 import org.springframework.orm.hibernate3.SessionFactoryUtils;
76 import org.springframework.orm.hibernate3.SessionHolder;
77 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
78 import org.springframework.transaction.support.TransactionSynchronizationManager;
79
80 public class ExportUsersRolesTest extends TestCase {
81
82     static final String JavaDoc PATH_SEP = "/";
83     static final String JavaDoc LABEL = "_label";
84     static final String JavaDoc DESC = "_description";
85     static final String JavaDoc DESC_TEXT = " for export-import testing";
86
87     static final String JavaDoc USER1 = "ExportTestUser01";
88     static final String JavaDoc USER2 = "ExportTestUser02";
89     static final String JavaDoc USER3 = "ExportTestUser03";
90     static final String JavaDoc ROLE1 = "ROLE_USER";
91     static final String JavaDoc ROLE2 = "ROLE_ADMINISTRATOR";
92     static final String JavaDoc ROLE3 = "ROLE_EXPORT_TEST";
93     
94     static final String JavaDoc[] USERNAMES = {"joeuser", "tomcat"};
95     static final String JavaDoc[] ROLENAMES1 = {"ROLE_USER", "ROLE_ADMINISTRATOR"};
96     static final String JavaDoc[] ROLENAMES2 = {"ROLE_USER"};
97     static final String JavaDoc[] ROLENAMES3 = {"ROLE_ADMINISTRATOR"};
98     
99     static final String JavaDoc FOLDER_NAME = "exportTest01";
100     static final String JavaDoc IMAGE_NAME = "ExportTestImage01";
101     
102     private RepositoryService repo;
103     UserAuthorityService auth;
104     
105     private Properties JavaDoc jdbcProps;
106     private ExecutionContext context;
107     
108
109     public ExportUsersRolesTest(String JavaDoc name) {
110         super(name);
111     }
112     
113     public static void main(String JavaDoc[] args) {
114         TestRunner.run(ExportUsersRolesTest.class);
115     }
116     
117     public void setUp() throws Exception JavaDoc {
118         System.out.println("ExportUsersRolesTest: setUp");
119         
120         ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
121                 new String JavaDoc[] {"hibernateConfig.xml", "userAuthorityService.xml", "viewService.xml"});
122         
123         repo = (RepositoryService) appContext.getBean("repoService");
124         
125         auth = (UserAuthorityService) appContext.getBean("userAuthorityService");
126         
127         loadJdbcProps();
128         
129         createExtraUsersAndRoles();
130         
131     }
132     
133     public void tearDown() {
134         System.out.println("ExportUsersRolesTest: tearDown");
135     }
136     
137     private void createExtraUsersAndRoles() {
138         
139         createUsers();
140     }
141
142     /*
143      * Export all users and roles
144      */

145     public void testExportImport_AllUsersRoles() {
146         
147         System.out.println("ExportUsersRolesTest: testExportImport_AllUsersRoles");
148         
149         ExportResource exporter = new ExportResource(repo,
150                 auth,
151                 null,
152                 context,
153                 null,
154                 true,
155                 null,
156                 null,
157                 false,
158                 null,
159                 ExportResource.CATALOG_DIR_NAME,
160                 ExportResource.CATALOG_FILE_NAME);
161
162         exporter.process();
163         
164         ImportResource importer = new ImportResource(repo,
165                 auth,
166                 null,
167                 context,
168                 ExportResource.CATALOG_DIR_NAME,
169                 ExportResource.CATALOG_FILE_NAME,
170                 "");
171         
172         importer.process();
173         
174     }
175     
176     /*
177      * Export a named set of users
178      */

179     public void testExportImport_NamedUsers() {
180         
181         System.out.println("ExportUsersRolesTest: testExportImport_NamedUsers");
182         
183         ExportResource exporter = new ExportResource(repo,
184                 auth,
185                 null,
186                 context,
187                 null,
188                 true,
189                 USERNAMES,
190                 null,
191                 false,
192                 null,
193                 ExportResource.CATALOG_DIR_NAME,
194                 ExportResource.CATALOG_FILE_NAME);
195
196         exporter.process();
197         
198         ImportResource importer = new ImportResource(repo,
199                 auth,
200                 null,
201                 context,
202                 ExportResource.CATALOG_DIR_NAME,
203                 ExportResource.CATALOG_FILE_NAME,
204                 "");
205         
206         importer.process();
207     }
208     
209     /*
210      * Export a named set of roles
211      */

212     public void testExportImport_NamedRoles() {
213         
214         System.out.println("ExportUsersRolesTest: testExportImport_NamedRoles");
215         
216         ExportResource exporter = new ExportResource(repo,
217                 auth,
218                 null,
219                 context,
220                 null,
221                 true,
222                 null,
223                 ROLENAMES3,
224                 false,
225                 null,
226                 ExportResource.CATALOG_DIR_NAME,
227                 ExportResource.CATALOG_FILE_NAME);
228
229         exporter.process();
230         
231         ImportResource importer = new ImportResource(repo,
232                 auth,
233                 null,
234                 context,
235                 ExportResource.CATALOG_DIR_NAME,
236                 ExportResource.CATALOG_FILE_NAME,
237                 "");
238         
239         importer.process();
240     }
241     
242     /*
243      * Export a named set of users and named set of roles
244      */

245     public void testExportImport_NamedUsersRoles() {
246     
247         System.out.println("ExportUsersRolesTest: testExportImport_NamedUsersRoles");
248         
249         ExportResource exporter = new ExportResource(repo,
250                 auth,
251                 null,
252                 context,
253                 null,
254                 true,
255                 USERNAMES,
256                 ROLENAMES3,
257                 false,
258                 null,
259                 ExportResource.CATALOG_DIR_NAME,
260                 ExportResource.CATALOG_FILE_NAME);
261
262         exporter.process();
263         
264         ImportResource importer = new ImportResource(repo,
265                 auth,
266                 null,
267                 context,
268                 ExportResource.CATALOG_DIR_NAME,
269                 ExportResource.CATALOG_FILE_NAME,
270                 "");
271         
272         importer.process();
273     }
274
275     /*
276      * Export Users, Roles, and a FileResource together
277      */

278     public void testExportImport_AllUsers_And_FileResource() {
279         System.out.println("ExportUsersRolesTest: testExportImport_AllUsers_And_FileResource");
280         
281         createImageResource();
282         
283         ExportResource exporter = new ExportResource(repo,
284                 auth,
285                 null,
286                 context,
287                 PATH_SEP + FOLDER_NAME + PATH_SEP + IMAGE_NAME,
288                 true,
289                 null,
290                 null,
291                 false,
292                 null,
293                 ExportResource.CATALOG_DIR_NAME,
294                 ExportResource.CATALOG_FILE_NAME);
295
296         exporter.process();
297         
298         deleteImageResource();
299         
300         ImportResource importer = new ImportResource(repo,
301                 auth,
302                 null,
303                 context,
304                 ExportResource.CATALOG_DIR_NAME,
305                 ExportResource.CATALOG_FILE_NAME,
306                 "");
307         
308         importer.process();
309         
310         deleteImageResource();
311     }
312     
313     
314
315     
316     public void skip_testImportOnly() {
317     
318         // read from catalog file on disk
319

320         ImportResource importer = new ImportResource(repo,
321                 auth,
322                 null,
323                 context,
324                 ExportResource.CATALOG_DIR_NAME,
325                 ExportResource.CATALOG_FILE_NAME,
326                 "");
327     }
328     
329     
330     protected void createUsers() {
331         
332         User user1 = auth.newUser(null);
333         user1.setUsername(USER1);
334         user1.setPassword("password");
335         user1.setFullName("New test user");
336         user1.setEnabled(true);
337         user1.setExternallyDefined(false);
338         auth.putUser(null, user1);
339
340         Role role1 = addRole(user1, ROLE1, false);
341         
342         User user2 = auth.newUser(null);
343         user2.setUsername(USER2);
344         user2.setPassword("password");
345         user2.setFullName("New test user");
346         user2.setEnabled(true);
347         user2.setExternallyDefined(false);
348         auth.putUser(null, user2);
349         
350         Role role2 = addRole(user2, ROLE2, false);
351                 
352         User user3 = auth.newUser(null);
353         user3.setUsername(USER3);
354         user3.setPassword("password");
355         user3.setFullName("New test user");
356         user3.setEnabled(true);
357         user3.setExternallyDefined(false);
358         auth.putUser(null, user3);
359         
360         Role role3 = addRole(user3, ROLE3, false);
361     }
362     
363     protected void deleteUsers() {
364
365         // hmmm, no way to truly delete a user...?
366
User user1 = auth.getUser(context, USER1);
367         Role role1 = auth.getRole(context, ROLE1);
368         auth.removeRole(context, user1, role1);
369         
370         User user2 = auth.getUser(context, USER2);
371         Role role2 = auth.getRole(context, ROLE2);
372         auth.removeRole(context, user2, role2);
373
374         User user3 = auth.getUser(context, USER3);
375         Role role3 = auth.getRole(context, ROLE3);
376         auth.removeRole(context, user3, role3);
377         
378         auth.disableUser(context, USER1);
379         auth.disableUser(context, USER2);
380         auth.disableUser(context, USER3);
381     }
382     
383     protected void createImageResource() {
384         
385         Folder folder = new FolderImpl();
386         folder.setName(FOLDER_NAME);
387         folder.setLabel(FOLDER_NAME + LABEL);
388         folder.setDescription(FOLDER_NAME + DESC);
389         folder.setParentFolder("/");
390         repo.saveFolder(null, folder);
391         
392         FileResource image = (FileResource) repo.newResource(null, FileResource.class);
393         image.setFileType(FileResource.TYPE_IMAGE);
394         image.readData(getClass().getResourceAsStream("/images/jasperreports.gif"));
395         image.setName(IMAGE_NAME);
396         image.setLabel(IMAGE_NAME + LABEL);
397         image.setDescription(IMAGE_NAME + DESC);
398         image.setParentFolder(folder);
399         repo.saveResource(null, image);
400     }
401     
402     protected void deleteImageResource() {
403         
404         repo.deleteFolder(null, PATH_SEP + FOLDER_NAME);
405     }
406
407     // method for creating a role, and adding to existing user
408
protected Role addRole(User user, String JavaDoc roleName, boolean externallyDefined) {
409         System.out.println("ExportUsersRolesTest: addRole");
410         
411         Role role = auth.getRole(null, roleName);
412         
413         if (role == null) {
414             role = auth.newRole(null);
415             System.out.println("role class: " + role.getClass().getName());
416             role.setRoleName(roleName);
417             role.setExternallyDefined(externallyDefined);
418             
419             auth.putRole(null, role);
420         }
421         
422         auth.addRole(null, user, role);
423         return role;
424     }
425
426             
427     protected Properties JavaDoc loadJdbcProps() throws IOException JavaDoc, FileNotFoundException JavaDoc {
428         jdbcProps = new Properties JavaDoc();
429         String JavaDoc jdbcPropFile = System.getProperty("test.hibernate.jdbc.properties");
430         BufferedInputStream JavaDoc is = new BufferedInputStream JavaDoc(new FileInputStream JavaDoc(jdbcPropFile));
431         jdbcProps.load(is);
432         is.close();
433         return jdbcProps;
434     }
435         
436 }
437
Popular Tags