Package org.jboss.soa.bpel.tests

Source Code of org.jboss.soa.bpel.tests.RiftSawTest

/*
* JBoss, Home of Professional Open Source.
* Copyright 2006, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.soa.bpel.tests;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

import javax.management.MBeanServerConnection;
import javax.naming.NamingException;

import junit.framework.TestCase;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.jboss.logging.Logger;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
import org.jboss.soa.esb.client.ServiceInvoker;

/**
* Base class for RiftSaw test cases. Based on
* equivalent class in JBossWS written by
* Thomas Diesler and Richard Opalka.
*
*/
public abstract class RiftSawTest extends TestCase {
 
   protected static Logger log = Logger.getLogger(RiftSawTest.class.getName());
   private RiftSawTestHelper delegate = new RiftSawTestHelper();
  
   private String m_testSuiteName=null;

   public RiftSawTest(String name) {
      super(name);
     
      m_testSuiteName = name;
   }
  
   public String getTestSuiteName() {
     return(m_testSuiteName);
   }

   public MBeanServerConnection getServer() throws NamingException {
      return RiftSawTestHelper.getServer();
   }
  
  protected void assertMessageFromFile(String message, String mesgFile) throws Exception {
    String mesgpath=System.getProperty("test.dir")+java.io.File.separator+getTestSuiteName()+
                  java.io.File.separator+mesgFile;

    java.io.FileInputStream is=new java.io.FileInputStream(mesgpath);
    byte[] b=new byte[is.available()];
    is.read(b);
    is.close();
   
    String comparison=new String(b).trim();
    message = message.trim();
   
    if (!comparison.equals(message)) {
      fail("Message in file '"+mesgFile+"' has content ["+comparison+
          "] which is not the same as ["+message+"], lengths "+comparison.length()+" to "+message.length());
    }
  }
 
  protected void assertMessage(String message, String comparison) throws Exception {
    message = message.trim();
   
    if (!comparison.equals(message)) {
      fail("Expected message has content ["+comparison+
          "] which is not the same as ["+message+"], lengths "+comparison.length()+" to "+message.length());
    }
  }
 
  protected String sendSOAPMessage(String mesgFile, String url) throws Exception {
    String mesgpath=System.getProperty("test.dir")+java.io.File.separator+getTestSuiteName()+
            java.io.File.separator+mesgFile;
   
    java.io.FileInputStream is=new java.io.FileInputStream(mesgpath);
    byte[] b=new byte[is.available()];
    is.read(b);
    is.close();
   
    java.net.URL u=new java.net.URL(url);
    String soapAction="";
    String request=new String(b);
       
    HttpClient httpClient = new HttpClient();
        PostMethod httpPostMethod = new PostMethod(u.toExternalForm());
        httpPostMethod.setRequestHeader("SOAPAction", "\"" + soapAction + "\"");
        httpPostMethod.setRequestHeader("Content-Type", "text/xml");
        httpPostMethod.setRequestEntity(new StringRequestEntity(request));
        httpClient.executeMethod(httpPostMethod);
        String result=httpPostMethod.getResponseBodyAsString();
   
    return(result);
  }
 
  protected String sendESBMessage(String message, String serviceCategory, String serviceName)
          throws Exception {
    return(sendESBMessage(message, serviceCategory, serviceName, 10000));
  }
 
  protected String sendESBMessage(String message, String serviceCategory, String serviceName, long timeout)
          throws Exception {
    String result=null;
   
        System.setProperty("javax.xml.registry.ConnectionFactoryClass",
              "org.apache.ws.scout.registry.ConnectionFactoryImpl");

        Message esbMessage = MessageFactory.getInstance().getMessage();

      esbMessage.getBody().add(message);
     
        Message respMessage = new ServiceInvoker(serviceCategory, serviceName).deliverSync(esbMessage, timeout);
     
        result = (String)respMessage.getBody().get();

        return(result);
  }
   
  protected String processResult(String result) {
    // If testing against cxf, then result is presented slightly differently
    if (result.indexOf("SOAP-ENV") != -1) {
      result = result.replaceAll("SOAP-ENV", "env");
      result = result.replaceAll(" xmlns=\"\"","");
      result = result.replaceAll("\"","'");
      result = result.replaceAll("<env:Header />","<env:Header></env:Header>");

      result = result.replaceAll("<env:Fault>","<env:Fault xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>");
      result = result.replaceAll("ns0","valueNS");
      result = result.replaceAll("<faultstring>Fault string, and possibly fault code, not set</faultstring>","");
    }

    return(result);
  }
}
TOP

Related Classes of org.jboss.soa.bpel.tests.RiftSawTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.