package org.pentaho.test.platform.engine.services; import java.io.ByteArrayOutputStream; import java.util.HashMap; import java.util.Map; import org.pentaho.platform.api.engine.IParameterProvider; import org.pentaho.platform.api.engine.IPentahoSession; import org.pentaho.platform.engine.core.solution.SimpleParameterProvider; import org.pentaho.platform.engine.core.system.PentahoSessionHolder; import org.pentaho.platform.engine.core.system.StandaloneSession; import org.pentaho.platform.engine.services.messages.Messages; import org.pentaho.platform.engine.services.solution.SolutionRepoLoadContentGenerator; import org.pentaho.platform.engine.services.solution.SolutionRepoSaveContentGenerator; import org.pentaho.test.platform.engine.core.BaseTest; import junit.framework.TestCase; @SuppressWarnings({"all"}) public class SolutionRepoLoadContentGeneratorTest extends BaseTest { private static final String SOLUTION_PATH = "test-src/solution"; public String getSolutionPath() { return SOLUTION_PATH; } public void testLogger() { SolutionRepoLoadContentGenerator cg = new SolutionRepoLoadContentGenerator(); assertNotNull( "Logger is null", cg.getLogger() ); } public void testMessages() { assertFalse( Messages.getInstance().getString("SolutionRepoSaveContentGenerator.ERROR_0001_NO_FILEPATH").startsWith("!") ); assertFalse( Messages.getInstance().getString("SolutionRepoSaveContentGenerator.ERROR_0003_BAD_PATH","").startsWith("!") ); assertFalse( Messages.getInstance().getString("SolutionRepoLoadContentGenerator.ERROR_0001_LOAD_FAILED").startsWith("!") ); } public void testNoFilepath() throws Exception { SolutionRepoLoadContentGenerator cg = new SolutionRepoLoadContentGenerator(); ByteArrayOutputStream out = new ByteArrayOutputStream(); SimpleParameterProvider request = new SimpleParameterProvider(); Map<String,IParameterProvider> parameterProviders = new HashMap<String,IParameterProvider>(); parameterProviders.put( "request" , request ); //$NON-NLS-1$ cg.setParameterProviders(parameterProviders); cg.createContent(out); assertEquals( "Mime type is wrong", "text/text", cg.getMimeType() ); String message = new String( out.toByteArray() ); assertEquals( "Message is wrong", message, Messages.getInstance().getErrorString("SolutionRepoSaveContentGenerator.ERROR_0001_NO_FILEPATH") ); } public void testBadPath() throws Exception { SolutionRepoLoadContentGenerator cg = new SolutionRepoLoadContentGenerator(); ByteArrayOutputStream out = new ByteArrayOutputStream(); SimpleParameterProvider request = new SimpleParameterProvider(); Map<String,IParameterProvider> parameterProviders = new HashMap<String,IParameterProvider>(); parameterProviders.put( "request" , request ); //$NON-NLS-1$ request.setParameter( "type" , "mytype"); request.setParameter( "filepath" , ""); cg.setParameterProviders(parameterProviders); cg.createContent(out); String message = new String( out.toByteArray() ); assertEquals( "Message is wrong", Messages.getInstance().getErrorString("SolutionRepoSaveContentGenerator.ERROR_0003_BAD_PATH", ""), message ); } public void testGoodLoad() throws Exception { // first do a save IPentahoSession session = new StandaloneSession(); PentahoSessionHolder.setSession(session); MockSolutionRepository.files.clear(); SolutionRepoSaveContentGenerator saver = new SolutionRepoSaveContentGenerator(); saver.setSession(session); ByteArrayOutputStream out = new ByteArrayOutputStream(); SimpleParameterProvider request = new SimpleParameterProvider(); Map<String,IParameterProvider> parameterProviders = new HashMap<String,IParameterProvider>(); parameterProviders.put( "request" , request ); //$NON-NLS-1$ String state = "state = { message : 'test state' };"; String path = "test/good/test1.state.mytype"; request.setParameter( "type" , "mytype"); request.setParameter( "filepath" , path); request.setParameter( "state" , state); request.setParameter( "replace" , "true"); saver.setParameterProviders(parameterProviders); saver.createContent(out); String message = new String( out.toByteArray() ); assertEquals( "Message is wrong", message, Messages.getInstance().getString("SolutionRepoSaveContentGenerator.USER_FILE_SAVE") ); assertTrue( "State is wrong", MockSolutionRepository.files.get(path).contains( state ) ); // now try to load it SolutionRepoLoadContentGenerator loader = new SolutionRepoLoadContentGenerator(); out = new ByteArrayOutputStream(); request = new SimpleParameterProvider(); parameterProviders = new HashMap<String,IParameterProvider>(); parameterProviders.put( "request" , request ); //$NON-NLS-1$ request.setParameter( "filepath" , "test/good/test1.state.mytype"); loader.setParameterProviders(parameterProviders); loader.createContent(out); message = new String( out.toByteArray() ); assertEquals( "State is wrong", state, message ); } public void testMissingDocument() throws Exception { // first do a save IPentahoSession session = new StandaloneSession(); PentahoSessionHolder.setSession(session); MockSolutionRepository.files.clear(); ByteArrayOutputStream out = new ByteArrayOutputStream(); SimpleParameterProvider request = new SimpleParameterProvider(); Map<String,IParameterProvider> parameterProviders = new HashMap<String,IParameterProvider>(); parameterProviders.put( "request" , request ); //$NON-NLS-1$ String path = "test/bad/test1.state.mytype"; request.setParameter( "type" , "mytype"); request.setParameter( "filepath" , path); SolutionRepoLoadContentGenerator loader = new SolutionRepoLoadContentGenerator(); out = new ByteArrayOutputStream(); loader.setParameterProviders(parameterProviders); loader.createContent(out); String message = new String( out.toByteArray() ); assertEquals( "Message is wrong", message, Messages.getInstance().getErrorString("SolutionRepoLoadContentGenerator.ERROR_0001_LOAD_FAILED", "test/bad/test1.state.mytype") ); } public void testBadDocument() throws Exception { // first do a save IPentahoSession session = new StandaloneSession(); PentahoSessionHolder.setSession(session); MockSolutionRepository.files.clear(); MockSolutionRepository.files.put("test/bad/test1.state.mytype", "<oops/>"); ByteArrayOutputStream out = new ByteArrayOutputStream(); SimpleParameterProvider request = new SimpleParameterProvider(); Map<String,IParameterProvider> parameterProviders = new HashMap<String,IParameterProvider>(); parameterProviders.put( "request" , request ); //$NON-NLS-1$ String path = "test/bad/test1.state.mytype"; request.setParameter( "type" , "mytype"); request.setParameter( "filepath" , path); SolutionRepoLoadContentGenerator loader = new SolutionRepoLoadContentGenerator(); out = new ByteArrayOutputStream(); loader.setParameterProviders(parameterProviders); loader.createContent(out); String message = new String( out.toByteArray() ); assertEquals( "Message is wrong", message, Messages.getInstance().getErrorString("SolutionRepoLoadContentGenerator.ERROR_0001_LOAD_FAILED", "test/bad/test1.state.mytype") ); } }