/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License, version 2 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/gpl-2.0.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
*
* Copyright 2006-2008 Pentaho Corporation. All rights reserved.
*
* Created Jan 25, 2006
* @author wseyler
*/
package org.pentaho.test.platform.repository.subscription;
import java.io.File;
//import java.io.FileInputStream;
//import java.io.Reader;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
//import java.util.Set;
//import org.dom4j.Document;
//import org.pentaho.commons.connection.IPentahoStreamSource;
//import org.pentaho.platform.api.engine.IAclSolutionFile;
//import org.pentaho.platform.api.engine.IActionSequenceResource;
import org.pentaho.platform.api.engine.IPentahoAclEntry;
import org.pentaho.platform.api.engine.IPermissionMask;
import org.pentaho.platform.api.engine.IPermissionRecipient;
import org.pentaho.platform.api.repository.ISolutionRepository;
//import org.pentaho.platform.engine.core.system.PentahoSystem;
import org.pentaho.platform.engine.core.system.StandaloneSession;
import org.pentaho.platform.engine.security.SpringSecurityPermissionMgr;
import org.pentaho.platform.engine.security.SimplePermissionMask;
import org.pentaho.platform.engine.security.SimpleRole;
//import org.pentaho.platform.engine.security.SimpleUser;
import org.pentaho.platform.engine.security.acls.AclPublisher;
//import org.pentaho.platform.engine.security.acls.PentahoAclEntry;
//import org.pentaho.platform.engine.services.actionsequence.ActionSequenceResource;
//import org.pentaho.platform.engine.services.solution.SolutionReposHelper;
import org.pentaho.platform.repository.hibernate.HibernateUtil;
import org.pentaho.platform.repository.messages.Messages;
import org.pentaho.platform.repository.solution.dbbased.RepositoryFile;
//import org.pentaho.platform.repository.solution.filebased.FileSolutionFile;
import org.pentaho.test.platform.repository.RepositoryTestCase;
import org.pentaho.test.platform.security.MockSecurityUtility;
@SuppressWarnings("nls")
public class SolutionRepositoryTest extends RepositoryTestCase {
private StringBuffer longString = new StringBuffer();
StandaloneSession session = null;
org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repository = null;
private Map<IPermissionRecipient, IPermissionMask> defaultAcls = new LinkedHashMap<IPermissionRecipient, IPermissionMask>();
AclPublisher publisher = null;
RepositoryFile file = null;
public static final String SOLUTION_PATH = "test-src/solution";
private static final String ALT_SOLUTION_PATH = "test-src/solution";
private static final String PENTAHO_XML_PATH = "/system/pentaho.xml";
final String SYSTEM_FOLDER = "/system";
// private static final String DEFAULT_SPRING_CONFIG_FILE_NAME = "pentahoObjects.spring.xml";
public String getSolutionPath() {
File file = new File(SOLUTION_PATH + PENTAHO_XML_PATH);
if(file.exists()) {
System.out.println("File exist returning " + SOLUTION_PATH);
return SOLUTION_PATH;
} else {
System.out.println("File does not exist returning " + ALT_SOLUTION_PATH);
return ALT_SOLUTION_PATH;
}
}
public void setup() {
super.setUp();
// ACL The first one...
HibernateUtil.beginTransaction();
defaultAcls.put(new SimpleRole("Admin"), new SimplePermissionMask(IPentahoAclEntry.PERM_FULL_CONTROL)); //$NON-NLS-
defaultAcls.put(new SimpleRole("cto"), new SimplePermissionMask(IPentahoAclEntry.PERM_FULL_CONTROL)); //$NON-NLS
defaultAcls.put(new SimpleRole("dev"), new SimplePermissionMask(IPentahoAclEntry.PERM_EXECUTE_SUBSCRIBE)); //$NON-NLS-1$
defaultAcls.put(new SimpleRole("Authenticated"), new SimplePermissionMask(IPentahoAclEntry.PERM_EXECUTE)); //$NON-NLS-1$
session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
MockSecurityUtility.createPat(session);
repository = getSolutionRepository(session);
file = (RepositoryFile) repository.getSolutionFile("samples", ISolutionRepository.ACTION_EXECUTE);
publisher = new AclPublisher(defaultAcls);
publisher.publishDefaultAcls(file);
HibernateUtil.commitTransaction();
}
// TODO: remove once tests are passing
public void setUp() {}
public void tearDown() {}
public void testDummyTest() {
// TODO: remove once tests are passing
}
public SolutionRepositoryTest(String arg0) {
super(arg0);
addProperties();
}
public SolutionRepositoryTest() {
super();
addProperties();
}
private void addProperties() {
Properties props = System.getProperties();
longString.append(props.getProperty("java.home")).append(props.getProperty("sun.cpu.isalist")). //$NON-NLS-1$ //$NON-NLS-2$
append(props.getProperty("java.vm.version")).append(props.getProperty("user.home")). //$NON-NLS-1$ //$NON-NLS-2$
append(props.getProperty("java.class.path")); //$NON-NLS-1$
}
/**
* Remove the word Load from in front to test loading the solution
* repository.
*
*/
public void LoadtestSolutionRepository() {
org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repository = new org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository();
StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
repository.init(session);
repository.loadSolutionFromFileSystem(session, getSolutionPath(), false);
System.out.println(repository.getSolutions(ISolutionRepository.ACTION_EXECUTE).asXML());
System.out.println(repository.getSolutionStructure(ISolutionRepository.ACTION_EXECUTE).asXML());
System.out.println(repository.getSolutionTree(ISolutionRepository.ACTION_EXECUTE).asXML());
}
public void atestSetAclsForPat() {
StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// Mock up credentials for ACL Testing
MockSecurityUtility.createPat(session);
// Get the repository
org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// RepositoryFile aFile =
// repo.getFileByPath("/test-solution/samples/reporting/custom-parameter-page-example.xaction");
RepositoryFile aFile = (RepositoryFile) repo
.getSolutionFile("samples/reporting/jasper-reports-test-1.xaction", ISolutionRepository.ACTION_EXECUTE); //$NON-NLS-1$
SpringSecurityPermissionMgr.instance().setPermission(new SimpleRole("ROLE_ADMIN"), new SimplePermissionMask(7), aFile);
SpringSecurityPermissionMgr.instance().setPermission(new SimpleRole("ROLE_DEVMGR"), new SimplePermissionMask(6), aFile);
SpringSecurityPermissionMgr.instance().setPermission(new SimpleRole("ROLE_DEV"), new SimplePermissionMask(2), aFile);
}
// public void testAclRepositoryLoadingForPat() {
// System.out.println("******** RDBMS Repository - Pat ***************"); //$NON-NLS-1$
// StandaloneSession session = new StandaloneSession(""); //$NON-NLS-1$
// // Mock up credentials for ACL Testing
// MockSecurityUtility.createPat(session);
//
// // Get the repository
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// for (int i = 0; i < 5; i++) {
// long stTime = System.currentTimeMillis();
// // Now, get the samples solution
// Document doc = SolutionReposHelper.getActionSequences(
// repo.getFileByPath("samples/reporting"), ISolutionRepository.ACTION_EXECUTE);//$NON-NLS-1$
// String docXml = doc.asXML();
// System.out.println(docXml);
// System.out.println("Time " + (i + 1) + ": " + (System.currentTimeMillis() - stTime)); //$NON-NLS-1$ //$NON-NLS-2$
// assertNotNull(docXml);
// }
// // Done with test...
//
// }
// public void testAclRepositoryLoadingForSuzy() {
// System.out.println("******** RDBMS Repository - Suzy ***************"); //$NON-NLS-1$
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// // Mock up credentials for ACL Testing
// MockSecurityUtility.createSuzy(session);
//
// // Get the repository
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// // Now, get the samples solution
// Document doc = SolutionReposHelper.getActionSequences(
// repo.getFileByPath("samples/reporting"), ISolutionRepository.ACTION_EXECUTE);//$NON-NLS-1$
// String docXml = doc.asXML();
// System.out.println(docXml);
//
// // Done with test...
// }
// public void testFileRepository() {
// System.out.println("******** File Repository ***************"); //$NON-NLS-1$
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// org.pentaho.platform.repository.solution.filebased.FileBasedSolutionRepository repo = getFileSolutionRepository(session);
// Document docFullTree = repo.getFullSolutionTree(ISolutionRepository.ACTION_EXECUTE, null);
// String docXmlFullTree = docFullTree.asXML();
// System.out.println(docXmlFullTree);
//
// boolean removed = repo.removeSolutionFile(PentahoSystem.getApplicationContext().getSolutionPath(
// "test/tmp/Chart_Area.html")); //$NON-NLS-1$
// if (removed) {
// assertTrue("Solution file is removed", removed); //$NON-NLS-1$
// }
//
// try {
// File fi = new File(PentahoSystem.getApplicationContext().getSolutionPath("test/tmp/Chart_Bar.html")); //$NON-NLS-1$
// FileInputStream fis = new FileInputStream(fi);
// byte[] buffer = new byte[(int) fi.length()];
// fis.read(buffer);
// repo
// .addSolutionFile(PentahoSystem.getApplicationContext().getSolutionPath("test"), "tmp", fi.getName(), fi, true);//$NON-NLS-1$ //$NON-NLS-2$
// repo.addSolutionFile(
// PentahoSystem.getApplicationContext().getSolutionPath("test"), "tmp", fi.getName(), fi, false); //$NON-NLS-1$ //$NON-NLS-2$
// repo.addSolutionFile(
// PentahoSystem.getApplicationContext().getSolutionPath("test"), "tmp", fi.getName(), buffer, true);//$NON-NLS-1$ //$NON-NLS-2$
// repo.addSolutionFile(
// PentahoSystem.getApplicationContext().getSolutionPath("test"), "tmp", fi.getName(), buffer, false); //$NON-NLS-1$ //$NON-NLS-2$
// // load the XML document that defines the chart
// IActionSequenceResource resource = new ActionSequenceResource(
// "budgetvariance.pie.xml", IActionSequenceResource.SOLUTION_FILE_RESOURCE, "text/xml", PentahoSystem.getApplicationContext().getSolutionPath("test/dashboard/departments.rule.xaction")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// byte[] byteOutput = repo.getResourceAsBytes(resource, true);
// System.out.println("Printing Resource as Byte Output with Localized set to true" + byteOutput.toString()); //$NON-NLS-1$
//
// byte[] byteOutput2 = repo.getResourceAsBytes(resource, false);
// System.out.println("Printing Resource as Byte Output with Localized set to false" + byteOutput2.toString()); //$NON-NLS-1$
//
// IPentahoStreamSource ds = repo.getResourceDataSource(resource);
// System.out.println("The datasource name is " + ds.getName()); //$NON-NLS-1$
// IPentahoStreamSource ds2 = repo.getResourceDataSource(PentahoSystem.getApplicationContext().getSolutionPath(
// "test/dashboard/departments.rule.xaction")); //$NON-NLS-1$
// System.out.println("The datasource name is " + ds2.getName()); //$NON-NLS-1$
// Document doc1 = repo.getResourceAsDocument(PentahoSystem.getApplicationContext().getSolutionPath(
// "test/dashboard/departments.rule.xaction")); //$NON-NLS-1$
// System.out.println("Printing Resource as XML document" + doc1.asXML()); //$NON-NLS-1$
//
// Document doc2 = repo.getResourceAsDocument(resource);
// System.out.println("Printing Resource as XML document" + doc2.asXML()); //$NON-NLS-1$
// String str = repo.getResourceAsString(PentahoSystem.getApplicationContext().getSolutionPath(
// "test/dashboard/departments.rule.xaction")); //$NON-NLS-1$
// System.out.println("Printing Resource as XML document" + str); //$NON-NLS-1$
// String str2 = repo.getResourceAsString(resource);
// System.out.println("Printing Resource as XML document" + str2); //$NON-NLS-1$
// Reader reader = repo.getResourceReader(resource);
// System.out.println("Printing Resource as XML document" + reader.toString()); //$NON-NLS-1$
// Reader reader2 = repo.getResourceReader(PentahoSystem.getApplicationContext().getSolutionPath(
// "test/dashboard/departments.rule.xaction")); //$NON-NLS-1$
// System.out.println("Printing Resource as XML document" + reader2.toString()); //$NON-NLS-1$
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// // Now, get the samples solution
// Document doc = SolutionReposHelper
// .getActionSequences(
// new FileSolutionFile(new File(PentahoSystem.getApplicationContext().getSolutionPath(
// "test/dashboard/departments.rule.xaction")), ((FileSolutionFile) repo.getRootFolder()).getFile()), ISolutionRepository.ACTION_EXECUTE);//$NON-NLS-1$
// String docXml = doc.asXML();
// System.out.println("Xaction as XML" + docXml); //$NON-NLS-1$
// assertTrue(true);
//
// }
// public void testAddRemoveSolutionFile() {
// // ACL The first one...
// HibernateUtil.beginTransaction();
//
// defaultAcls.put(new SimpleRole("Admin"), new SimplePermissionMask(IPentahoAclEntry.PERM_FULL_CONTROL)); //$NON-NLS-
// defaultAcls.put(new SimpleRole("cto"), new SimplePermissionMask(IPentahoAclEntry.PERM_FULL_CONTROL)); //$NON-NLS
// defaultAcls.put(new SimpleRole("dev"), new SimplePermissionMask(IPentahoAclEntry.PERM_EXECUTE_SUBSCRIBE)); //$NON-NLS-1$
// defaultAcls.put(new SimpleRole("Authenticated"), new SimplePermissionMask(IPentahoAclEntry.PERM_EXECUTE)); //$NON-NLS-1$
//
// session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createJoe(session);
// repository = getSolutionRepository(session);
// file = (RepositoryFile) repository.getFileByPath("samples/reporting");
// publisher = new AclPublisher(defaultAcls);
// publisher.publishDefaultAcls(file);
//
// HibernateUtil.commitTransaction();
//
// RepositoryFile aFile = (RepositoryFile) repository
// .getFileByPath("samples/reporting/MDX_report.xaction"); //$NON-NLS-1$
// String publishPath = "samples/reporting"; //$NON-NLS-1$
// int status = 0;
// try {
// status = repository.addSolutionFile("", publishPath, "MDX_report19.xaction", aFile.getData(), false);
// } catch (Exception e) {
// assertFalse(false);
// e.printStackTrace();
// }
// assertEquals(ISolutionRepository.FILE_ADD_SUCCESSFUL, status);
//
// RepositoryFile aFile1 = (RepositoryFile) repository
// .getFileByPath("samples/reporting/MDX_report19.xaction"); //$NON-NLS-1$
// assertNotNull(aFile1);
// String solution = "samples";
// String path = "reporting";
// String action = "MDX_report19.xaction";
// boolean success = repository.removeSolutionFile(solution, path, action);
// assertEquals(Boolean.TRUE, Boolean.valueOf(success));
//
// status = 0;
// try {
// status = repository.addSolutionFile("", publishPath, "MDX_report19.xaction", aFile.getData(), true);
// } catch (Exception e) {
// assertFalse(false);
// e.printStackTrace();
// }
// assertEquals(status, ISolutionRepository.FILE_ADD_SUCCESSFUL);
//
// RepositoryFile aFile2 = (RepositoryFile) repository
// .getFileByPath("samples/reporting/MDX_report19.xaction"); //$NON-NLS-1$
// assertNotNull(aFile2);
// String solutionPath1 = "samples/reporting/MDX_report19.xaction";
// success = false;
// success = repository.removeSolutionFile(solutionPath1);
// assertEquals(Boolean.TRUE, Boolean.valueOf(success));
// }
// public void testIsPentahoAdministrator() {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createJoe(session);
// repository = getSolutionRepository(session);
// boolean isPentahoAdmin = repository.isPentahoAdministrator();
// assertEquals(Boolean.TRUE, Boolean.valueOf(isPentahoAdmin));
// }
//
// public void testGetSolutionDocument() {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createJoe(session);
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repository = getSolutionRepository(session);
// Document doc = SolutionReposHelper.getActionSequences(
// repository.getFileByPath("samples/reporting/MDX_report.xaction"), ISolutionRepository.ACTION_EXECUTE);//$NON-NLS-1$
//
//
// assertNotNull(doc);
// }
// public void testGetAllActionSequences() {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createPat(session);
// repository = getSolutionRepository(session);
// String allActionSequences[] = repository.getAllActionSequences();
// assertNotNull(allActionSequences);
// }
// public void testGetSolutionTree() {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createPat(session);
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repository = getSolutionRepository(session);
// Document doc = repository.getSolutionTree(ISolutionRepository.ACTION_ADMIN);
// assertNotNull(doc);
// }
// public void testGetSolutionFileLastModified() {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createPat(session);
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repository = getSolutionRepository(session);
// long time = repository.getSolutionFileLastModified("samples/reporting/MDX_report.xaction");
// assertTrue(true);
// // TODO compare date
// }
// public void testGetSetHasPermissions() {
// try {
// // ACL The first one...
// HibernateUtil.beginTransaction();
// String recipientNew = null;
// String permNew[] = null;
//
// defaultAcls.put(new SimpleRole("Admin"), new SimplePermissionMask(IPentahoAclEntry.PERM_FULL_CONTROL)); //$NON-NLS-
// defaultAcls.put(new SimpleRole("cto"), new SimplePermissionMask(IPentahoAclEntry.PERM_FULL_CONTROL)); //$NON-NLS
// defaultAcls.put(new SimpleRole("dev"), new SimplePermissionMask(IPentahoAclEntry.PERM_EXECUTE_SUBSCRIBE)); //$NON-NLS-1$
// defaultAcls.put(new SimpleRole("Authenticated"), new SimplePermissionMask(IPentahoAclEntry.PERM_EXECUTE)); //$NON-NLS-1$
//
// session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createJoe(session);
// repository = getSolutionRepository(session);
// file = (RepositoryFile) repository.getFileByPath("samples/reporting");
// publisher = new AclPublisher(defaultAcls);
// publisher.publishDefaultAcls(file);
//
// HibernateUtil.commitTransaction();
//
// RepositoryFile aFile = (RepositoryFile) repository
// .getFileByPath("samples/reporting/MDX_report.xaction"); //$NON-NLS-1$
// String publishPath = "samples/reporting"; //$NON-NLS-1$
// int status = 0;
// try {
// status = repository.addSolutionFile("", publishPath, "MDX_reportTest.xaction", aFile.getData(), false);
// } catch (Exception e) {
// assertFalse(false);
// e.printStackTrace();
// }
//
// // Get the repository
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// if (!repo.supportsAccessControls()) {
// assertFalse("ACLs are not supported by the repository", false);
// } else {
// HibernateUtil.beginTransaction();
// aFile = (RepositoryFile) repo.getFileByPath("samples/reporting/MDX_reportTest.xaction"); //$NON-NLS-1$
// Map permMap = new HashMap<IPermissionRecipient, IPermissionMask>();
// String recipient = "joe";
// IPermissionRecipient permissionRecipientUser = new SimpleUser(recipient);
// SimplePermissionMask permissionMask = new SimplePermissionMask();
// String perm[] = { "Update", "Execute", "Subscribe" };
// for (int i = 0; i < perm.length; i++) {
// permissionMask
// .addPermission(((Integer) PentahoAclEntry.getValidPermissionsNameMap().get(perm[i])).intValue());
// }
// permMap.put(permissionRecipientUser, permissionMask);
// if (aFile instanceof IAclSolutionFile) {
// repo.setPermissions(aFile, permMap);
// }
// HibernateUtil.commitTransaction();
// permNew = new String[perm.length];
// int i = 0;
// int j = 0;
// aFile = (RepositoryFile) repo.getFileByPath("samples/reporting/MDX_reportTest.xaction"); //$NON-NLS-1$
// Set<Map.Entry<IPermissionRecipient, IPermissionMask>> mapEntrySet = repo.getPermissions(aFile).entrySet();
// Map permissionsMap = PentahoAclEntry.getValidPermissionsNameMap();
//
// for (Iterator<Map.Entry<IPermissionRecipient, IPermissionMask>> iterator = mapEntrySet.iterator(); iterator
// .hasNext();) {
// Map.Entry<IPermissionRecipient, IPermissionMask> mapEntry = iterator.next();
// IPermissionRecipient permissionRecipient = mapEntry.getKey();
// if (permissionRecipient.getName().equals(recipient)) {
// recipientNew = permissionRecipient.getName();
// }
//
// for (Iterator keyIterator = permissionsMap.keySet().iterator(); keyIterator.hasNext();) {
// String permName = keyIterator.next().toString();
// int permMask = ((Integer) permissionsMap.get(permName)).intValue();
// boolean isPermitted = repo.hasAccess(aFile, permMask);
// System.out.println("For " + recipient + " permission " + permName + " is " + (isPermitted ? "" : " not ")
// + " set.");
// if ((isPermitted) && recipient.equals(permissionRecipient.getName()))
// permNew[j++] = permName;
// }
// }
// boolean gotPermissions = permNew.length == perm.length;
// assertEquals(Boolean.TRUE, Boolean.valueOf(gotPermissions));
// assertEquals(Boolean.TRUE, Boolean.valueOf(recipient.equals(recipientNew)));
// }
// HibernateUtil.beginTransaction();
// aFile = (RepositoryFile) repository.getFileByPath("samples/reporting/MDX_reportTest.xaction"); //$NON-NLS-1$
// String solution = "samples";
// String path = "reporting";
// String action = "MDX_reportTest.xaction";
// boolean isRemoved = repository.removeSolutionFile(solution, path, action);
// HibernateUtil.commitTransaction();
// assertEquals(Boolean.TRUE, Boolean.valueOf(isRemoved));
// } catch (Exception e) {
// e.printStackTrace();
// assertFalse("Permissions were not set successfully", false);
// }
//
// }
// public void testGetPermissionsNoAccess() {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createNoRolesGuy(session);
// int count = 0;
// // Get the repository
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// RepositoryFile aFile = (RepositoryFile) repo.getFileByPath("samples/reporting/MDX_report.xaction"); //$NON-NLS-1$
// Set<Map.Entry<IPermissionRecipient, IPermissionMask>> mapEntrySet = repo.getPermissions(aFile).entrySet();
// Map permissionsMap = PentahoAclEntry.getValidPermissionsNameMap();
// for (Iterator<Map.Entry<IPermissionRecipient, IPermissionMask>> iterator = mapEntrySet.iterator(); iterator
// .hasNext();) {
// Map.Entry<IPermissionRecipient, IPermissionMask> mapEntry = iterator.next();
// IPermissionRecipient permissionRecipient = mapEntry.getKey();
// String recipient = permissionRecipient.getName();
// for (Iterator keyIterator = permissionsMap.keySet().iterator(); keyIterator.hasNext();) {
// String permName = keyIterator.next().toString();
// int permMask = ((Integer) permissionsMap.get(permName)).intValue();
// boolean isPermitted = repo.hasAccess(aFile, permMask);
// if (isPermitted) {
// count++;
// }
// }
// }
// boolean gotPermissions = (count == 0);
// assertEquals(Boolean.TRUE, Boolean.valueOf(gotPermissions));
// }
// public void testPublish() {
// try {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// // Mock up credentials for ACL Testing
// HibernateUtil.beginTransaction();
// MockSecurityUtility.createJoe(session);
// // Get the repository
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// RepositoryFile aFile = (RepositoryFile) repo
// .getFileByPath("samples/reporting/MDX_report.xaction"); //$NON-NLS-1$
// String solutionPath = PentahoSystem.getApplicationContext().getSolutionPath(""); //$NON-NLS-1$
// String publishPath = "samples/reporting";
// int status = repo.publish(solutionPath, publishPath, "MDX_report_Test2.xaction", aFile.getData(), false);
// assertEquals(ISolutionRepository.FILE_ADD_SUCCESSFUL, status);
// status = repo.publish(solutionPath, publishPath, "MDX_report_Test2.xaction", aFile.getData(), false);
// assertNotSame(ISolutionRepository.FILE_ADD_SUCCESSFUL, status);
//
//
// } catch (Exception e) {
// assertFalse("Publish process did not completed successfully", false);
// }
// }
// public void testGetPermissions() {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createJoe(session);
// int count = 0;
// // Get the repository
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// RepositoryFile aFile = (RepositoryFile) repo
// .getFileByPath("samples/reporting/MDX_report_Test2.xaction"); //$NON-NLS-1$
// Set<Map.Entry<IPermissionRecipient, IPermissionMask>> mapEntrySet = repo.getPermissions(aFile).entrySet();
// Map permissionsMap = PentahoAclEntry.getValidPermissionsNameMap();
// for (Iterator<Map.Entry<IPermissionRecipient, IPermissionMask>> iterator = mapEntrySet.iterator(); iterator
// .hasNext();) {
// Map.Entry<IPermissionRecipient, IPermissionMask> mapEntry = iterator.next();
// IPermissionRecipient permissionRecipient = mapEntry.getKey();
// String recipient = permissionRecipient.getName();
// for (Iterator keyIterator = permissionsMap.keySet().iterator(); keyIterator.hasNext();) {
// String permName = keyIterator.next().toString();
// int permMask = ((Integer) permissionsMap.get(permName)).intValue();
// boolean isPermitted = repo.hasAccess(aFile, permMask);
// if (isPermitted) {
// count++;
// }
// }
// }
// boolean gotPermissions = count > 0;
// assertEquals(Boolean.TRUE, Boolean.valueOf(gotPermissions));
// String solution = "samples";
// String path = "reporting";
// String action = "MDX_report_Test2.xaction";
// boolean isRemoved = repo.removeSolutionFile(solution, path, action);
// HibernateUtil.commitTransaction();
// assertEquals(Boolean.TRUE, Boolean.valueOf(isRemoved));
//
// }
// public void testShare() {
// try {
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// // Mock up credentials for ACL Testing
// MockSecurityUtility.createJoe(session);
// // Get the repository
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// RepositoryFile aFile = (RepositoryFile) repo
// .getFileByPath("samples/reporting/MDX_report.xaction"); //$NON-NLS-1$
// IPermissionRecipient shareRecipient = new SimpleUser("suzy");
// IPermissionRecipient shareRecipient1 = new SimpleUser("pat");
// List<IPermissionRecipient> shareRecipientList = new ArrayList();
// shareRecipientList.add(shareRecipient);
// shareRecipientList.add(shareRecipient1);
// repo.share(aFile, shareRecipientList);
// session.destroy();
// session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// MockSecurityUtility.createPat(session);
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo1 = getSolutionRepository(session);
// RepositoryFile aFile1 = (RepositoryFile) repo
// .getFileByPath("samples/reporting/MDX_report.xaction"); //$NON-NLS-1$
// assertEquals(Boolean.TRUE, Boolean.valueOf(repo1.hasAccess(aFile1, ISolutionRepository.ACTION_EXECUTE)));
// } catch (Exception e) {
// assertFalse("Share Permission was not set successfully", false);
// }
// }
// public void testSetRepositoryName() {
// try {
// HibernateUtil.beginTransaction();
// StandaloneSession session = new StandaloneSession(Messages.getInstance().getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
// // Mock up credentials for ACL Testing
// MockSecurityUtility.createJoe(session);
// // Get the repository
// org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository repo = getSolutionRepository(session);
// String reposName = PentahoSystem.getSystemSetting("solution-repository/db-repository-name", null); //$NON-NLS-1$
// if (reposName != null) {
// repo.setRepositoryName(reposName);
// assertEquals(reposName, repo.getRepositoryName());
// } else {
// repo.setRepositoryName("pentaho-solutions");
// HibernateUtil.commitTransaction();
// assertEquals("solution", repo.getRepositoryName());
// }
//
// } catch (Exception e) {
// e.printStackTrace();
// assertFalse("Error setting the repository name", false);
// }
// }
public org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository getSolutionRepository(
StandaloneSession session) {
org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository rtn = new org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository();
rtn.init(session);
return rtn;
}
public org.pentaho.platform.repository.solution.filebased.FileBasedSolutionRepository getFileSolutionRepository(
StandaloneSession session) {
org.pentaho.platform.repository.solution.filebased.FileBasedSolutionRepository rtn = new org.pentaho.platform.repository.solution.filebased.FileBasedSolutionRepository();
rtn.init(session);
return rtn;
}
// public void testShowMessages() {
// this.showMessages();
// }
public static void main(String[] args) {
junit.textui.TestRunner.run(SolutionRepositoryTest.class);
SolutionRepositoryTest repoTest = new SolutionRepositoryTest();
repoTest.setup();
repoTest.atestSetAclsForPat();
// repoTest.testAclRepositoryLoadingForPat();
// repoTest.testAclRepositoryLoadingForSuzy();
// repoTest.testAddRemoveSolutionFile();
// repoTest.testFileRepository();
// repoTest.testGetAllActionSequences();
// repoTest.testGetPermissions();
// repoTest.testGetPermissionsNoAccess();
// repoTest.testGetSolutionDocument();
// repoTest.testGetSolutionFileLastModified();
// repoTest.testGetSolutionTree();
// repoTest.testGetSetHasPermissions();
// repoTest.testIsPentahoAdministrator();
// repoTest.testPublish();
// repoTest.testSetRepositoryName();
// repoTest.testShare();
// repoTest.testShowMessages();
System.exit(0);
}
@SuppressWarnings("unused")
private void showMessages() {
List messages = this.getMessages();
for (int i = 0; i < messages.size(); i++) {
System.out.println(messages.get(i));
}
}
}