/* *Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * *WSO2 Inc. licenses this file to you under the Apache License, *Version 2.0 (the "License"); you may not use this file except *in compliance with the License. *You may obtain a copy of the License at * *http://www.apache.org/licenses/LICENSE-2.0 * *Unless required by applicable law or agreed to in writing, *software distributed under the License is distributed on an *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *KIND, either express or implied. See the License for the *specific language governing permissions and limitations *under the License. */ package org.wso2.carbon.esb.mediator.test.smooks; import org.apache.axiom.om.util.AXIOMUtil; import org.apache.commons.io.FileUtils; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import org.wso2.esb.integration.common.clients.registry.ResourceAdminServiceClient; import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment; import org.wso2.carbon.automation.engine.annotations.SetEnvironment; import org.wso2.carbon.integration.common.utils.mgt.ServerConfigurationManager;import org.wso2.esb.integration.common.utils.ESBIntegrationTest; import javax.activation.DataHandler; import java.io.File; import java.io.IOException; import java.net.URL; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; public class SmooksMediatorXMLtoXMLTransformTestCase extends ESBIntegrationTest { private ServerConfigurationManager serverConfigurationManager; private ResourceAdminServiceClient resourceAdminServiceStub; private final String COMMON_FILE_LOCATION = getClass().getResource(File.separator + "artifacts" + File.separator + "ESB" + File.separator + "synapseconfig" + File.separator + "vfsTransport" + File.separator).getPath(); private final String ORDER_ID = "332"; private final String TARGET_FILE_LOCATION = COMMON_FILE_LOCATION + "test" + File.separator + "xmlOut"; private final String[] ORDER_ITEMS = {"Pen", "Book", "Bottle", "Note Book", "Pencil", "Chocolate", "Bun", "Banana", "Hat", "Toffee"}; private boolean isProxyDeployed = false; // @BeforeClass(alwaysRun = true) public void init() throws Exception { super.init(); loadESBConfigurationFromClasspath("/artifacts/ESB/synapseconfig/vfsTransport/vfs_xml_to_xml.xml"); resourceAdminServiceStub = new ResourceAdminServiceClient(contextUrls.getBackEndUrl(), context.getContextTenant().getContextUser().getUserName() , context.getContextTenant().getContextUser().getPassword()); serverConfigurationManager = new ServerConfigurationManager(context); serverConfigurationManager.applyConfiguration(new File(COMMON_FILE_LOCATION + "axis2.xml")); super.init(); setSmooksSampleConfigFileLocations(); uploadResourcesToConfigRegistry(); addVFSProxy(); } /* Commenting out this test as it is incomplete and its purpose is unclear. */ /* IMPORTANT: Do not uncomment this test case if do not know how to fix it. */ // @SetEnvironment(executionEnvironments = {ExecutionEnvironment.ALL // @Test(groups = {"wso2.esb", "local only"}, description = "XML to XML transformation using smooks mediator") public void testXMLtoXMLTransformationUsingSmooksMeidator() throws Exception { new File(COMMON_FILE_LOCATION + "test" + File.separator + "out" + File.separator).mkdir(); new File(COMMON_FILE_LOCATION + "test" + File.separator + "xmlOut" + File.separator).mkdir(); Thread.sleep(2000); File afile = new File(COMMON_FILE_LOCATION + File.separator + "synapse_sample_658_input.xml"); File bfile = new File(COMMON_FILE_LOCATION + "test" + File.separator + "in" + File.separator + "synapse_sample_658_input.xml"); FileUtils.copyFile(afile, bfile); Thread.sleep(30000); String fileContents; for (int i = 0; i < 10; i++) { fileContents = FileUtils.readFileToString(new File(TARGET_FILE_LOCATION + File.separator + "order-" + ORDER_ID + "-" + (i + 1) + ".xml")); assertNotNull(fileContents, "File contents in null"); assertTrue(fileContents.toString().contains(ORDER_ITEMS[i]), ORDER_ITEMS[i] + fileContents); } } private void setSmooksSampleConfigFileLocations() throws IOException, InterruptedException { String fileContents = FileUtils.readFileToString(new File(COMMON_FILE_LOCATION + "synapse_config_658.xml")); fileContents = fileContents.replace("/home/harsha/smooks", TARGET_FILE_LOCATION); FileUtils.writeStringToFile(new File(COMMON_FILE_LOCATION + "synapse_config_658.xml"), fileContents); Thread.sleep(2000); } private void addVFSProxy() throws Exception { addProxyService(AXIOMUtil.stringToOM("<proxy xmlns=\"http://ws.apache.org/ns/synapse\" name=\"StockQuoteProxy\" transports=\"vfs\">\n" + " <parameter name=\"transport.vfs.ContentType\">text/plain</parameter>\n" + " <!--CHANGE-->\n" + " <parameter name=\"transport.vfs.FileURI\">file://" + COMMON_FILE_LOCATION + "test" + File.separator + "in" + File.separator + "</parameter>\n" + " <parameter name=\"transport.vfs.ContentType\">application/xml</parameter>\n" + " <parameter name=\"transport.vfs.FileNamePattern\">.*\\.xml</parameter>\n" + " <parameter name=\"transport.PollInterval\">5</parameter>\n" + " <!--CHANGE-->\n" + " <parameter name=\"transport.vfs.MoveAfterProcess\">file://" + COMMON_FILE_LOCATION + "test" + File.separator + "out" + File.separator + "</parameter>\n" + " <!--CHANGE-->\n" + " <parameter name=\"transport.vfs.MoveAfterFailure\">file://" + COMMON_FILE_LOCATION + "test" + File.separator + "out" + File.separator + "</parameter>\n" + " <parameter name=\"transport.vfs.ActionAfterProcess\">MOVE</parameter>\n" + " <parameter name=\"transport.vfs.ActionAfterFailure\">MOVE</parameter>\n" + " <parameter name=\"Operation\">urn:placeOrder</parameter>\n" + " <target>\n" + " <inSequence>\n" + " <smooks config-key=\"conf:/smooks/synapse_config_658.xml\">\n" + " <input type=\"xml\"/>\n" + " <output type=\"xml\"/>\n" + " </smooks>\n" + " <log level=\"full\"/>\n" + " </inSequence>\n" + " <outSequence/>\n" + " </target>\n" + " </proxy>\n")); isProxyDeployed = true; } private void uploadResourcesToConfigRegistry() throws Exception { resourceAdminServiceStub.deleteResource("/_system/config/smooks"); resourceAdminServiceStub.addCollection("/_system/config/", "smooks", "", "Contains smooks config files"); resourceAdminServiceStub.addResource( "/_system/config/smooks/synapse_config_658.xml", "application/xml", "xml files", new DataHandler(new URL("file:///" + COMMON_FILE_LOCATION + "synapse_config_658.xml"))); } // @AfterClass(alwaysRun = true) public void restoreServerConfiguration() throws Exception { try { if (isProxyDeployed) { deleteProxyService("StockQuoteProxy"); } resourceAdminServiceStub.deleteResource("/_system/config/smooks"); } finally { super.cleanup(); serverConfigurationManager.restoreToLastConfiguration(); resourceAdminServiceStub = null; serverConfigurationManager = null; } } }