/* * 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.axis2.jaxws.sample; import javax.xml.ws.BindingProvider; import junit.framework.Test; import junit.framework.TestSuite; import org.apache.axis2.jaxws.framework.AbstractTestCase; import org.apache.axis2.jaxws.sample.resourceinjection.sei.ResourceInjectionPortType; import org.apache.axis2.jaxws.sample.resourceinjection.sei.ResourceInjectionService; public class ResourceInjectionTests extends AbstractTestCase { String axisEndpoint = "http://localhost:6060/axis2/services/ResourceInjectionService.ResourceInjectionPortTypeImplPort"; public static Test suite() { return getTestSetup(new TestSuite(ResourceInjectionTests.class)); } public ResourceInjectionPortType getProxy() { ResourceInjectionService service = new ResourceInjectionService(); ResourceInjectionPortType proxy = service.getResourceInjectionPort(); BindingProvider p = (BindingProvider) proxy; p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, axisEndpoint); return proxy; } /** * This test ensures that an endpoint with an inject WebServiceContext * can successfully get and query the web service. */ public void testEchoWithResourceInjectionAndLifecycleMethods() throws Exception { ResourceInjectionPortType proxy = getProxy(); String response = proxy.testInjection("sample"); assertTrue("The response was null", response != null); assertTrue("The response was not succesful: " + response, response.indexOf("SUCCESS") >= 0); // Repeat to verify behavior response = proxy.testInjection("sample"); assertTrue("The response was null", response != null); assertTrue("The response was not succesful: " + response, response.indexOf("SUCCESS") >= 0); char[] chars = new char[] {0x15}; // 0x15 is not a valid xml character..and should be filtered String insert = new String(chars); assertTrue("Illegal characters were not filtered: " + response, response.indexOf(insert) < 0); } /* * TODO: This test is currently disabled. The path tested assumes the webcontainer will * receive the request for <EPR_address>/?wsdl and redirect appropriately to either * the on-disk WSDL or, if an on-disk WSDL does not exist, a generated WSDL. The * Axis2 test webserver/webcontainer has no such ability currently. To support this, * the test SimpleServer would have to be coded to detect inbound requests appended with * /?wsdl and redirect accordingly. * * See: jaxws/src/org/apache/axis2/jaxws/context/WebServiceContextImpl.java line 146 */ public void _testResourceInjectionEndpointReference() { ResourceInjectionPortType proxy = getProxy(); String response = proxy.testInjection("epr"); assertTrue("The response was null", response != null); assertTrue("The response was not succesful: " + response, response .indexOf("SUCCESS") >= 0); // Make sure the EPR contains the fields we expect assertTrue("The EPR did not contain EndpointReference", response .indexOf("EndpointReference") >= 0); assertTrue("The EPR did not contain ServiceName", response .indexOf("ServiceName") >= 0); assertTrue("The EPR did not contain wsdlLocation", response .indexOf("wsdlLocation") >= 0); } }