package nl.nn.adapterframework.pipes; import nl.nn.adapterframework.configuration.ConfigurationException; import nl.nn.adapterframework.core.IPipeLineSession; import nl.nn.adapterframework.core.PipeForward; import nl.nn.adapterframework.core.PipeRunException; import nl.nn.adapterframework.validation.XmlValidatorException; import org.junit.Test; import org.xml.sax.SAXException; import nl.nn.javax.wsdl.WSDLException; import java.io.IOException; import static org.mockito.Mockito.mock; /** * @author Michiel Meeuwissen */ public class WsdlXmlValidatorTest { private static final String SIMPLE = "test/simple.wsdl"; private static final String SIMPLE_WITH_INCLUDE = "test/simple_withinclude.wsdl"; private static final String SIMPLE_WITH_REFERENCE = "test/simple_withreference.wsdl"; private static final String TIBCO = "Tibco/wsdl/BankingCustomer_01_GetPartyBasicDataBanking_01_concrete1.wsdl"; private IPipeLineSession session = mock(IPipeLineSession.class); @Test public void wsdlValidate() throws IOException, PipeRunException, SAXException, WSDLException, ConfigurationException, XmlValidatorException { WsdlXmlValidator val = new WsdlXmlValidator(); val.setWsdl(SIMPLE); val.setSoapBody("TradePriceRequest"); val.setThrowException(true); val.registerForward(new PipeForward("success", null)); val.configure(); val.validate("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Body><TradePriceRequest xmlns=\"http://example.com/stockquote.xsd\"><tickerSymbol>foo</tickerSymbol></TradePriceRequest></Body></Envelope>", session); } @Test public void wsdlValidateWithInclude() throws IOException, PipeRunException, SAXException, WSDLException, ConfigurationException, XmlValidatorException { WsdlXmlValidator val = new WsdlXmlValidator(); val.setWsdl(SIMPLE_WITH_INCLUDE); val.setSoapBody("TradePriceRequest"); val.setThrowException(true); val.registerForward(new PipeForward("success", null)); val.configure(); val.validate("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Body><TradePriceRequest xmlns=\"http://example.com/stockquote.xsd\"><tickerSymbol>foo</tickerSymbol></TradePriceRequest></Body></Envelope>", session); } @Test public void wsdlValidateWithReference() throws IOException, PipeRunException, SAXException, WSDLException, ConfigurationException, XmlValidatorException { WsdlXmlValidator val = new WsdlXmlValidator(); val.setWsdl(SIMPLE_WITH_REFERENCE); val.setSoapBody("TradePriceRequest"); val.setThrowException(true); val.registerForward(new PipeForward("success", null)); val.configure(); val.validate("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Body><TradePriceRequest xmlns=\"http://example.com/stockquote.xsd\"><tickerSymbol>foo</tickerSymbol></TradePriceRequest></Body></Envelope>", session); } @Test(expected = XmlValidatorException.class) public void wsdlValidateWithReferenceFail() throws IOException, PipeRunException, SAXException, WSDLException, ConfigurationException, XmlValidatorException { WsdlXmlValidator val = new WsdlXmlValidator(); val.setWsdl(SIMPLE_WITH_REFERENCE); val.setThrowException(true); val.registerForward(new PipeForward("success", null)); val.configure(); val.validate("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"><Body><TradePriceRequest xmlns=\"http://example.com/stockquote.xsd\"><tickerSymbolERROR>foo</tickerSymbolERROR></TradePriceRequest></Body></Envelope>", session); } @Test public void wsdlTibco() throws IOException, PipeRunException, SAXException, WSDLException, ConfigurationException, XmlValidatorException { WsdlXmlValidator val = new WsdlXmlValidator(); val.setWsdl(TIBCO); val.setSoapHeader("MessageHeader"); val.setSoapBody("Request"); val.setThrowException(true); val.registerForward(new PipeForward("success", null)); val.configure(); val.validate("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" + " <Header>\n" + " <MessageHeader xmlns=\"http://www.ing.com/CSP/XSD/General/Message_2\">\n" + " <From>\n" + " <Id>Ibis4Toegang</Id>\n" + " </From>\n" + " <HeaderFields>\n" + " <ConversationId/>\n" + " <MessageId>WPNLD8921975_0a4ac029-7747a1ed_12da7d4b033_-7ff3</MessageId>\n" + " <ExternalRefToMessageId/>\n" + " <Timestamp>2001-12-17T09:30:47</Timestamp>\n" + " </HeaderFields>\n" + " </MessageHeader>\n" + " </Header>\n" + " <Body>\n" + " <Request xmlns=\"http://www.ing.com/nl/banking/coe/xsd/bankingcustomer_generate_01/getpartybasicdatabanking_01\">\n" + " <BankSparen xmlns=\"http://www.ing.com/bis/xsd/nl/banking/bankingcustomer_generate_01_getpartybasicdatabanking_request_01\">\n" + " <PRD>\n" + " <KLT>\n" + " <KLT_NA_RELNUM>181373377001</KLT_NA_RELNUM>\n" + " </KLT>\n" + " </PRD>\n" + " </BankSparen>\n" + " </Request>\n" + " </Body>\n" + "</Envelope>\n" + "", session); } @Test(expected = XmlValidatorException.class) public void wsdlTibcoFailEnvelop() throws IOException, PipeRunException, SAXException, WSDLException, ConfigurationException, XmlValidatorException { WsdlXmlValidator val = new WsdlXmlValidator(); val.setWsdl(TIBCO); val.setThrowException(true); val.registerForward(new PipeForward("success", null)); val.configure(); val.validate("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" + " <BodyERROR>\n" + " <MessageHeader xmlns=\"http://www.ing.com/CSP/XSD/General/Message_2\">\n" + " <From>\n" + " <Id>Ibis4Toegang</Id>\n" + " </From>\n" + " <HeaderFields>\n" + " <ConversationId/>\n" + " <MessageId>WPNLD8921975_0a4ac029-7747a1ed_12da7d4b033_-7ff3</MessageId>\n" + " <ExternalRefToMessageId/>\n" + " <Timestamp>2001-12-17T09:30:47</Timestamp>\n" + " </HeaderFields>\n" + " </MessageHeader>\n" + " <Request xmlns=\"http://www.ing.com/nl/banking/coe/xsd/bankingcustomer_generate_01/getpartybasicdatabanking_01\">\n" + " <BankSparen xmlns=\"http://www.ing.com/bis/xsd/nl/banking/bankingcustomer_generate_01_getpartybasicdatabanking_request_01\">\n" + " <PRD>\n" + " <KLT>\n" + " <KLT_NA_RELNUM>181373377001</KLT_NA_RELNUM>\n" + " </KLT>\n" + " </PRD>\n" + " </BankSparen>\n" + " </Request>\n" + " </BodyERROR>\n" + "</Envelope>\n" + "", session); } @Test(expected = XmlValidatorException.class) public void wsdlTibcoFailMessage() throws IOException, PipeRunException, SAXException, WSDLException, ConfigurationException, XmlValidatorException { WsdlXmlValidator val = new WsdlXmlValidator(); val.setWsdl(TIBCO); val.setThrowException(true); val.registerForward(new PipeForward("success", null)); val.configure(); val.validate("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" + " <Body>\n" + " <MessageHeader xmlns=\"http://www.ing.com/CSP/XSD/General/Message_2\">\n" + " <From>\n" + " <Id>Ibis4Toegang</Id>\n" + " </From>\n" + " <HeaderFields>\n" + " <ConversationId/>\n" + " <MessageId>WPNLD8921975_0a4ac029-7747a1ed_12da7d4b033_-7ff3</MessageId>\n" + " <ExternalRefToMessageId/>\n" + " <Timestamp>2001-12-17T09:30:47</Timestamp>\n" + " </HeaderFields>\n" + " </MessageHeader>\n" + " <Request xmlns=\"http://www.ing.com/nl/banking/coe/xsd/bankingcustomer_generate_01/getpartybasicdatabanking_01\">\n" + " <BankSparen xmlns=\"http://www.ing.com/bis/xsd/nl/banking/bankingcustomer_generate_01_getpartybasicdatabanking_request_01\">\n" + " <PRD>\n" + " <KLTERROR>\n" + " <KLT_NA_RELNUM>181373377001</KLT_NA_RELNUM>\n" + " </KLTERROR>\n" + " </PRD>\n" + " </BankSparen>\n" + " </Request>\n" + " </Body>\n" + "</Envelope>\n" + "", session); } }