/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.impl.wsdl.support.wsrm; import com.eviware.soapui.impl.support.wsa.WsaRequest; import com.eviware.soapui.impl.wsdl.support.soap.SoapVersion; import com.eviware.soapui.utils.ModelItemFactory; import org.junit.Before; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.UUID; import static com.eviware.soapui.utils.CommonMatchers.compliantWithSchema; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; /** * Unit tests for WS-RM functionality in WsrmUtils */ public class WsrmUtilsTest { public static final String WSRM_1_0_SCHEMA_200502_LOCATION = "/xsds/wsrm-1.0-schema-200502.xsd"; public static final String WSRM_1_1_SCHEMA_200702_LOCATION = "/xsds/wsrm-1.1-schema-200702.xsd"; @Before public void setUp() throws Exception { } @Test public void buildsValidStartSequenceRequest() throws Exception { WsrmUtils requestBuilder = new WsrmUtils(SoapVersion.Soap12); WsaRequest wsaRequest = requestBuilder.buildStartSequenceRequest("http://example.com", SoapVersion.Soap12, WsrmUtils.WSRM_NS_1_1, "http://example.com", 0l, ModelItemFactory.makeWsdlOperation(), UUID.randomUUID().toString(), null); Document soapEnvelope = getContentAsDocument(wsaRequest); NodeList nodeList = soapEnvelope.getElementsByTagNameNS(WsrmUtils.WSRM_NS_1_1, "CreateSequence"); assertThat(nodeList.item(0), is(compliantWithSchema(WSRM_1_1_SCHEMA_200702_LOCATION))); } @Test public void buildsValidStartSequenceRequestWithVersion10() throws Exception { WsrmUtils requestBuilder = new WsrmUtils(SoapVersion.Soap12); WsaRequest wsaRequest = requestBuilder.buildStartSequenceRequest("http://example.com", SoapVersion.Soap12, WsrmUtils.WSRM_NS_1_0, "http://example.com", 0l, ModelItemFactory.makeWsdlOperation(), UUID.randomUUID().toString(), null); Document soapEnvelope = getContentAsDocument(wsaRequest); NodeList nodeList = soapEnvelope.getElementsByTagNameNS(WsrmUtils.WSRM_NS_1_0, "CreateSequence"); assertThat(nodeList.item(0), is(compliantWithSchema(WSRM_1_0_SCHEMA_200502_LOCATION))); } @Test public void buildsValidStartSequenceRequestWhenOfferEndpointIsSet() throws Exception { WsrmUtils requestBuilder = new WsrmUtils(SoapVersion.Soap12); WsaRequest wsaRequest = requestBuilder.buildStartSequenceRequest("http://example.com", SoapVersion.Soap12, WsrmUtils.WSRM_NS_1_1, "http://example.com", 0l, ModelItemFactory.makeWsdlOperation(), UUID.randomUUID().toString(), "http://some.endpoint.com"); Document soapEnvelope = getContentAsDocument(wsaRequest); NodeList nodeList = soapEnvelope.getElementsByTagNameNS(WsrmUtils.WSRM_NS_1_1, "CreateSequence"); assertThat(nodeList.item(0), is(compliantWithSchema(WSRM_1_1_SCHEMA_200702_LOCATION))); } @Test public void buildsValidStartSequenceRequestWhenOfferEndpointIsSetWithVersion10() throws Exception { WsrmUtils requestBuilder = new WsrmUtils(SoapVersion.Soap12); WsaRequest wsaRequest = requestBuilder.buildStartSequenceRequest("http://example.com", SoapVersion.Soap12, WsrmUtils.WSRM_NS_1_0, "http://example.com", 0l, ModelItemFactory.makeWsdlOperation(), UUID.randomUUID().toString(), "http://some.endpoint.com"); Document soapEnvelope = getContentAsDocument(wsaRequest); NodeList nodeList = soapEnvelope.getElementsByTagNameNS(WsrmUtils.WSRM_NS_1_0, "CreateSequence"); assertThat(nodeList.item(0), is(compliantWithSchema(WSRM_1_0_SCHEMA_200502_LOCATION))); } private Document getContentAsDocument(WsaRequest wsaRequest) throws ParserConfigurationException, SAXException, IOException { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setValidating(false); documentBuilderFactory.setNamespaceAware(true); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); return documentBuilder.parse( new ByteArrayInputStream(wsaRequest.getRequestContent().getBytes())); } }