/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF 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.apache.cxf.aegis.integration; import javax.xml.namespace.QName; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.apache.cxf.aegis.AbstractAegisTest; import org.apache.cxf.aegis.services.ArrayService; import org.apache.cxf.aegis.services.BeanService; import org.junit.Before; import org.junit.Test; public class WrappedTest extends AbstractAegisTest { private ArrayService arrayService; private Document arrayWsdlDoc; @Before public void setUp() throws Exception { super.setUp(); setEnableJDOM(true); arrayService = new ArrayService(); createService(ArrayService.class, arrayService, "Array", new QName("urn:Array", "Array")); createService(BeanService.class, "BeanService"); arrayWsdlDoc = getWSDLDocument("Array"); } @Test public void testBeanService() throws Exception { Node response = invoke("BeanService", "bean11.xml"); addNamespace("sb", "http://services.aegis.cxf.apache.org"); addNamespace("beanz", "urn:beanz"); assertValid("/s:Envelope/s:Body/sb:getSimpleBeanResponse", response); assertValid("//sb:getSimpleBeanResponse/sb:return", response); assertValid("//sb:getSimpleBeanResponse/sb:return/beanz:howdy[text()=\"howdy\"]", response); assertValid("//sb:getSimpleBeanResponse/sb:return/beanz:bleh[text()=\"bleh\"]", response); } @Test public void testArrayWsdl() throws Exception { NodeList stuff = assertValid("//xsd:complexType[@name='ArrayOfString-2-50']", arrayWsdlDoc); assertEquals(1, stuff.getLength()); } @Test public void testXmlConfigurationOfParameterTypeSchema() throws Exception { assertValid( "/wsdl:definitions/wsdl:types" + "/xsd:schema[@targetNamespace='urn:Array']" + "/xsd:complexType[@name=\"takeNumber\"]/xsd:sequence/xsd:element" + "[@type=\"xsd:long\"]", arrayWsdlDoc); } @Test public void testXmlConfigurationOfParameterType() throws Exception { invoke("Array", "takeNumber.xml"); assertEquals(Long.valueOf(123456789), arrayService.getNumberValue()); } @Test public void testBeanServiceWSDL() throws Exception { Node doc = getWSDLDocument("BeanService"); assertValid("/wsdl:definitions/wsdl:types", doc); assertValid("/wsdl:definitions/wsdl:types/xsd:schema", doc); assertValid("/wsdl:definitions/wsdl:types/" + "xsd:schema[@targetNamespace='http://services.aegis.cxf.apache.org']", doc); assertValid("//xsd:schema[@targetNamespace='http://services.aegis.cxf.apache.org']/" + "xsd:element[@name='getSubmitBean']", doc); assertValid("//xsd:complexType[@name='getSubmitBean']/xsd:sequence" + "/xsd:element[@name='bleh'][@type='xsd:string'][@minOccurs='0']", doc); assertValid("//xsd:complexType[@name='getSubmitBean']/xsd:sequence" + "/xsd:element[@name='bean'][@type='ns0:SimpleBean'][@minOccurs='0']", doc); assertValid("/wsdl:definitions/wsdl:types" + "/xsd:schema[@targetNamespace='http://services.aegis.cxf.apache.org']", doc); assertValid("/wsdl:definitions/wsdl:types" + "/xsd:schema[@targetNamespace='urn:beanz']" + "/xsd:complexType[@name=\"SimpleBean\"]", doc); assertValid( "/wsdl:definitions/wsdl:types" + "/xsd:schema[@targetNamespace='urn:beanz']" + "/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element" + "[@name=\"bleh\"][@minOccurs='0']", doc); assertValid( "/wsdl:definitions/wsdl:types" + "/xsd:schema[@targetNamespace='urn:beanz']" + "/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element" + "[@name=\"howdy\"][@minOccurs='0']", doc); assertValid( "/wsdl:definitions/wsdl:types" + "/xsd:schema[@targetNamespace='urn:beanz']" + "/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element" + "[@type=\"xsd:string\"]", doc); } @org.junit.Ignore // uses Jaxen. @Test public void testSubmitJDOMArray() throws Exception { org.jdom.xpath.XPath jxpathWalrus = org.jdom.xpath.XPath.newInstance("/a:anyType/iam:walrus"); jxpathWalrus.addNamespace("a", "urn:Array"); jxpathWalrus.addNamespace("iam", "uri:iam"); jxpathWalrus.addNamespace("linux", "uri:linux"); jxpathWalrus.addNamespace("planets", "uri:planets"); invoke("Array", "/org/apache/cxf/aegis/integration/anyTypeArrayJDOM.xml"); assertEquals("before items", arrayService.getBeforeValue()); assertEquals(3, arrayService.getJdomArray().length); org.jdom.Element e = (org.jdom.Element) jxpathWalrus.selectSingleNode(arrayService.getJdomArray()[0]); assertNotNull(e); assertEquals("tusks", e.getText()); assertEquals("after items", arrayService.getAfterValue()); } @Test public void testSubmitW3CArray() throws Exception { addNamespace("a", "urn:Array"); addNamespace("iam", "uri:iam"); addNamespace("linux", "uri:linux"); addNamespace("planets", "uri:planets"); invoke("Array", "/org/apache/cxf/aegis/integration/anyTypeArrayW3C.xml"); assertEquals("before items", arrayService.getBeforeValue()); assertEquals(3, arrayService.getW3cArray().length); org.w3c.dom.Document e = arrayService.getW3cArray()[0]; assertValid("/iam:walrus", e); assertEquals("after items", arrayService.getAfterValue()); } }