1 21 package com.jaspersoft.jasperserver.util.test; 22 23 27 28 import java.io.BufferedInputStream ; 29 import java.io.FileInputStream ; 30 import java.io.FileNotFoundException ; 31 import java.io.IOException ; 32 import java.io.InputStream ; 33 import java.util.Properties ; 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 PATH_SEP = "/"; 83 static final String LABEL = "_label"; 84 static final String DESC = "_description"; 85 static final String DESC_TEXT = " for export-import testing"; 86 87 static final String USER1 = "ExportTestUser01"; 88 static final String USER2 = "ExportTestUser02"; 89 static final String USER3 = "ExportTestUser03"; 90 static final String ROLE1 = "ROLE_USER"; 91 static final String ROLE2 = "ROLE_ADMINISTRATOR"; 92 static final String ROLE3 = "ROLE_EXPORT_TEST"; 93 94 static final String [] USERNAMES = {"joeuser", "tomcat"}; 95 static final String [] ROLENAMES1 = {"ROLE_USER", "ROLE_ADMINISTRATOR"}; 96 static final String [] ROLENAMES2 = {"ROLE_USER"}; 97 static final String [] ROLENAMES3 = {"ROLE_ADMINISTRATOR"}; 98 99 static final String FOLDER_NAME = "exportTest01"; 100 static final String IMAGE_NAME = "ExportTestImage01"; 101 102 private RepositoryService repo; 103 UserAuthorityService auth; 104 105 private Properties jdbcProps; 106 private ExecutionContext context; 107 108 109 public ExportUsersRolesTest(String name) { 110 super(name); 111 } 112 113 public static void main(String [] args) { 114 TestRunner.run(ExportUsersRolesTest.class); 115 } 116 117 public void setUp() throws Exception { 118 System.out.println("ExportUsersRolesTest: setUp"); 119 120 ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext( 121 new String [] {"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 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 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 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 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 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 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 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 protected Role addRole(User user, String 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 loadJdbcProps() throws IOException , FileNotFoundException { 428 jdbcProps = new Properties (); 429 String jdbcPropFile = System.getProperty("test.hibernate.jdbc.properties"); 430 BufferedInputStream is = new BufferedInputStream (new FileInputStream (jdbcPropFile)); 431 jdbcProps.load(is); 432 is.close(); 433 return jdbcProps; 434 } 435 436 } 437 | Popular Tags |