Package org.jboss.test.ws.jaxws.wsaddressing

Source Code of org.jboss.test.ws.jaxws.wsaddressing.SOAPAddressingPropertiesTestCase

/*
* 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.test.ws.jaxws.wsaddressing;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.net.URI;

import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.addressing.AddressingBuilder;
import javax.xml.ws.addressing.AddressingException;
import javax.xml.ws.addressing.soap.SOAPAddressingBuilder;
import javax.xml.ws.addressing.soap.SOAPAddressingProperties;

import org.jboss.util.xml.DOMUtils;
import org.jboss.wsf.test.JBossWSTest;
import org.jboss.ws.extensions.addressing.soap.SOAPAddressingPropertiesImpl;

/**
* Test the SOAPAddressingProperties
*
* @author Thomas.Diesler@jboss.org
* @since 13-Nov-2005
*/
public class SOAPAddressingPropertiesTestCase extends JBossWSTest
{
  private SOAPAddressingProperties addrProps;

  private String reqEnvStr = "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>"
      + "  <env:Header xmlns:wsa='http://www.w3.org/2005/08/addressing'>"
      + "    <wsa:To>http://fabrikam123.example/Purchasing</wsa:To>"
      + "    <wsa:ReplyTo>"
      + "      <wsa:Address>http://business456.example/client1</wsa:Address>"
      + "      <wsa:ReferenceParameters>"
      + "        <ns1:sessionid xmlns:ns1='http://somens'>someuniqueid</ns1:sessionid>"
      + "      </wsa:ReferenceParameters>"
      + "    </wsa:ReplyTo>"
      + "    <wsa:Action>http://fabrikam123.example/SubmitPO</wsa:Action>"
      + "    <wsa:MessageID>uuid:6B29FC40-CA47-1067-B31D-00DD010662DA</wsa:MessageID>"
      + "  </env:Header>"
      + "  <env:Body/>"
      + "</env:Envelope>";

  private String resEnvStr = "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
      "  <env:Header xmlns:wsa='http://www.w3.org/2005/08/addressing'>" +
      "    <wsa:To>http://business456.example/client1</wsa:To>" +
      "    <wsa:Action>http://fabrikam123.example/ReplyPO</wsa:Action>" +
      "    <wsa:RelatesTo>uuid:6B29FC40-CA47-1067-B31D-00DD010662DA</wsa:RelatesTo>" +
      "    <ns1:sessionid wsa:IsReferenceParameter='true' xmlns:ns1='http://somens'>someuniqueid</ns1:sessionid>" +
      "  </env:Header>" +
      "  <env:Body/>" +
      "</env:Envelope>";

  private String ERRORNOUS_XML = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>\n" +
      " <soap:Header xmlns:wsa='http://www.w3.org/2005/08/addressing'>" +
      "<wsa:Action></wsa:Action>\n" +
      "<wsa:MessageID>urn:uuid:1fa5a31f-bbe7-4ad5-8b92-d765f4a32dc9</wsa:MessageID>\n" +
      "<wsa:ReplyTo>\n" +
      "<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>\n" +
      "<wsa:ReferenceParameters>\n" +
      "<ns1:clientid xmlns:ns1=\"http://somens\">clientid-1</ns1:clientid>\n" +
      "</wsa:ReferenceParameters>\n" +
      "</wsa:ReplyTo>\n" +
      "<wsa:To>http://mycomp:8080/testws</wsa:To>\n" +
      "</soap:Header>" +
      " <soap:Body/>\n" +
      "</soap:Envelope>";
 
  public void setUp() throws Exception
  {
    super.setUp();

    MessageFactory factory = MessageFactory.newInstance();
    SOAPMessage soapMessage = factory.createMessage(null, new ByteArrayInputStream(reqEnvStr.getBytes()));

    AddressingBuilder addrBuilder = SOAPAddressingBuilder.getAddressingBuilder();
    addrProps = (SOAPAddressingProperties)addrBuilder.newAddressingProperties();
    addrProps.readHeaders(soapMessage);
  }

  public void testReadHeaders() throws Exception
  {
    assertEquals(new URI("uuid:6B29FC40-CA47-1067-B31D-00DD010662DA"), addrProps.getMessageID().getURI());
    assertEquals(new URI("http://business456.example/client1"), addrProps.getReplyTo().getAddress().getURI());
    assertEquals(new URI("http://fabrikam123.example/Purchasing"), addrProps.getTo().getURI());
    assertEquals(new URI("http://fabrikam123.example/SubmitPO"), addrProps.getAction().getURI());
  }

  public void testWriteHeaders() throws Exception
  {
    MessageFactory factory = MessageFactory.newInstance();
    SOAPMessage wasMsg = factory.createMessage();
    addrProps.writeHeaders(wasMsg);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    wasMsg.writeTo(baos);
    String wasEnv = new String(baos.toByteArray());

    SOAPMessage expMsg = factory.createMessage(null, new ByteArrayInputStream(reqEnvStr.getBytes()));
    baos = new ByteArrayOutputStream();
    expMsg.writeTo(baos);
    String expEnv = new String(baos.toByteArray());

    assertEquals(DOMUtils.parse(expEnv), DOMUtils.parse(wasEnv));
  }

  public void testReplyToHeaders() throws Exception
  {
    AddressingBuilder addrBuilder = SOAPAddressingBuilder.getAddressingBuilder();
    SOAPAddressingProperties replyProps = (SOAPAddressingProperties)addrBuilder.newAddressingProperties();
    replyProps.initializeAsReply(addrProps, false);
    replyProps.setAction(addrBuilder.newURI("http://fabrikam123.example/ReplyPO"));

    MessageFactory factory = MessageFactory.newInstance();
    SOAPMessage wasMsg = factory.createMessage();
    replyProps.writeHeaders(wasMsg);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    wasMsg.writeTo(baos);
    String wasEnv = new String(baos.toByteArray());

    SOAPMessage expMsg = factory.createMessage(null, new ByteArrayInputStream(resEnvStr.getBytes()));
    baos = new ByteArrayOutputStream();
    expMsg.writeTo(baos);
    String expEnv = new String(baos.toByteArray());

    assertEquals(DOMUtils.parse(expEnv), DOMUtils.parse(wasEnv));
  }

  public void testReplyToWithoutAction() throws Exception
  {
    MessageFactory mf = MessageFactory.newInstance();
    SOAPMessage message = mf.createMessage(null, new ByteArrayInputStream(ERRORNOUS_XML.getBytes()));

    SOAPAddressingPropertiesImpl props = new SOAPAddressingPropertiesImpl();
    try
    {
      props.readHeaders(message);
      fail("ERRORNOUS_XML should cause a parsing exception due to missing wsa:Action value");
    }
    catch (AddressingException e)
    {
      // expected an exception
    }

  }
}
TOP

Related Classes of org.jboss.test.ws.jaxws.wsaddressing.SOAPAddressingPropertiesTestCase

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.