| /** |
| * 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.camel.example.axis; |
| |
| import java.io.File; |
| import java.net.URL; |
| |
| import junit.framework.TestCase; |
| import org.apache.camel.example.reportincident.InputReportIncident; |
| import org.apache.camel.example.reportincident.OutputReportIncident; |
| import org.apache.camel.example.reportincident.ReportIncidentService_PortType; |
| import org.apache.camel.example.reportincident.ReportIncidentService_ServiceLocator; |
| import org.eclipse.jetty.server.Connector; |
| import org.eclipse.jetty.server.Server; |
| import org.eclipse.jetty.server.nio.SelectChannelConnector; |
| import org.eclipse.jetty.webapp.WebAppContext; |
| |
| /** |
| * Unit test with embedded Jetty to execute a webservice request using Axis |
| */ |
| public class AxisReportIncidentServiceTest extends TestCase { |
| |
| private Server server; |
| |
| private void startJetty() throws Exception { |
| // create an embedded Jetty server |
| server = new Server(); |
| |
| // add a listener on port 8080 on localhost (127.0.0.1) |
| Connector connector = new SelectChannelConnector(); |
| connector.setPort(9080); |
| connector.setHost("localhost"); |
| server.addConnector(connector); |
| |
| // add our web context path |
| WebAppContext wac = new WebAppContext(); |
| wac.setContextPath("/unittest"); |
| // set the location of the exploded webapp where WEB-INF is located |
| // this is a nice feature of Jetty where we can point to src/main/webapp |
| wac.setWar("./src/main/webapp"); |
| server.setHandler(wac); |
| |
| // then start Jetty |
| server.setStopAtShutdown(true); |
| server.start(); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| startJetty(); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| server.stop(); |
| } |
| |
| public void testReportIncidentWithAxis() throws Exception { |
| // the url to the axis webservice exposed by jetty |
| URL url = new URL("http://localhost:9080/unittest/services/ReportIncidentPort"); |
| |
| // Axis stuff to get the port where we can send the webservice request |
| ReportIncidentService_ServiceLocator locator = new ReportIncidentService_ServiceLocator(); |
| ReportIncidentService_PortType port = locator.getReportIncidentPort(url); |
| |
| // create input to send |
| InputReportIncident input = createDummyIncident(); |
| // send the webservice and get the response |
| OutputReportIncident output = port.reportIncident(input); |
| assertEquals("OK", output.getCode()); |
| |
| // should generate a file also |
| File file = new File("target/" + input.getIncidentId() + ".txt"); |
| assertTrue("File should exists", file.exists()); |
| } |
| |
| protected InputReportIncident createDummyIncident() { |
| InputReportIncident input = new InputReportIncident(); |
| input.setEmail("davsclaus@apache.org"); |
| input.setIncidentId("12345678"); |
| input.setIncidentDate("2008-07-13"); |
| input.setPhone("+45 2962 7576"); |
| input.setSummary("Failed operation"); |
| input.setDetails("The wrong foot was operated."); |
| input.setFamilyName("Ibsen"); |
| input.setGivenName("Claus"); |
| return input; |
| } |
| |
| } |