Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java?view=diff&rev=518627&r1=518626&r2=518627 ============================================================================== --- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java (original) +++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java Thu Mar 15 06:44:47 2007 @@ -20,38 +20,22 @@ package org.apache.cxf.transport.servlet; import java.io.IOException; -import java.io.OutputStream; -import java.net.HttpURLConnection; import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.cxf.Bus; -import org.apache.cxf.helpers.HttpHeaderHelper; -import org.apache.cxf.io.AbstractWrappedOutputStream; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageImpl; import org.apache.cxf.service.model.EndpointInfo; -import org.apache.cxf.transport.AbstractDestination; -import org.apache.cxf.transport.Conduit; import org.apache.cxf.transport.ConduitInitiator; import org.apache.cxf.transport.MessageObserver; import org.apache.cxf.transport.http.AbstractHTTPDestination; public class ServletDestination extends AbstractHTTPDestination { - - public static final String HTTP_REQUEST = - "HTTP_SERVLET_REQUEST"; - public static final String HTTP_RESPONSE = - "HTTP_SERVLET_RESPONSE"; static final Logger LOG = Logger.getLogger(ServletDestination.class.getName()); @@ -81,48 +65,9 @@ protected Logger getLogger() { return LOG; } - - /** - * @param inMessage the incoming message - * @return the inbuilt backchannel - */ - protected Conduit getInbuiltBackChannel(Message inMessage) { - HttpServletResponse response = (HttpServletResponse)inMessage.get(HTTP_RESPONSE); - return new BackChannelConduit(response); - } + - - - /** - * Copy the request headers into the message. - * - * @param message the current message - * @param headers the current set of headers - */ - protected void copyRequestHeaders(Message message, Map<String, List<String>> headers) { - HttpServletRequest req = (HttpServletRequest)message.get(HTTP_REQUEST); - for (Enumeration e = req.getHeaderNames(); e.hasMoreElements();) { - String fname = (String)e.nextElement(); - - List<String> values; - if (headers.containsKey(fname)) { - values = headers.get(fname); - } else { - values = new ArrayList<String>(); - headers.put(HttpHeaderHelper.getHeaderKey(fname), values); - } - for (Enumeration e2 = req.getHeaders(fname); e2.hasMoreElements();) { - String val = (String)e2.nextElement(); - values.add(val); - } - } - } - /** - * Copy the response headers into the response. - * - * @param message the current message - * @param headers the current set of headers - */ + protected void copyResponseHeaders(Message message, HttpServletResponse response) { String ct = (String) message.get(Message.CONTENT_TYPE); String enc = (String) message.get(Message.ENCODING); @@ -135,9 +80,7 @@ } else if (enc != null) { response.setContentType("text/xml; charset=" + enc); } - - } - + } protected void doMessage(MessageImpl inMessage) throws IOException { @@ -155,104 +98,7 @@ } } - } - - protected class BackChannelConduit - extends AbstractDestination.AbstractBackChannelConduit { - - protected HttpServletResponse response; - - BackChannelConduit(HttpServletResponse resp) { - response = resp; - } - - /** - * Send an outbound message, assumed to contain all the name-value - * mappings of the corresponding input message (if any). - * - * @param message the message to be sent. - */ - public void send(Message message) throws IOException { - message.put(HTTP_RESPONSE, response); - message.setContent(OutputStream.class, - new WrappedOutputStream(message, response)); - } - } - - private class WrappedOutputStream extends AbstractWrappedOutputStream { - - protected HttpServletResponse response; - - WrappedOutputStream(Message m, HttpServletResponse resp) { - super(m); - response = resp; - } - - /** - * Perform any actions required on stream flush (freeze headers, - * reset output stream ... etc.) - */ - protected void doFlush() throws IOException { - OutputStream responseStream = flushHeaders(outMessage); - if (null != responseStream && !alreadyFlushed()) { - resetOut(responseStream, true); - } - } - - /** - * Perform any actions required on stream closure (handle response etc.) - */ - protected void doClose() { - commitResponse(); - } - - protected void onWrite() throws IOException { - } - - private void commitResponse() { - try { - response.flushBuffer(); - } catch (IOException e) { - LOG.severe(e.getMessage()); - } - } - } - - protected OutputStream flushHeaders(Message outMessage) throws IOException { - updateResponseHeaders(outMessage); - Object responseObj = outMessage.get(HTTP_RESPONSE); - OutputStream responseStream = null; - if (responseObj instanceof HttpServletResponse) { - HttpServletResponse response = (HttpServletResponse)responseObj; - - Integer i = (Integer)outMessage.get(Message.RESPONSE_CODE); - if (i != null) { - int status = i.intValue(); - response.setStatus(status); - } else { - response.setStatus(HttpURLConnection.HTTP_OK); - } - - copyResponseHeaders(outMessage, response); - responseStream = response.getOutputStream(); - - if (isOneWay(outMessage)) { - response.flushBuffer(); - } - } else { - LOG.log(Level.WARNING, "UNEXPECTED_RESPONSE_TYPE_MSG", responseObj.getClass()); - throw new IOException("UNEXPECTED_RESPONSE_TYPE_MSG" + responseObj.getClass()); - } - - if (isOneWay(outMessage)) { - outMessage.remove(HTTP_RESPONSE); - } - return responseStream; - } - - protected boolean isOneWay(Message message) { - return message.getExchange() != null && message.getExchange().isOneWay(); - } + } public MessageObserver getMessageObserver() { return this.incomingObserver;
Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java?view=diff&rev=518627&r1=518626&r2=518627 ============================================================================== --- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java (original) +++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java Thu Mar 15 06:44:47 2007 @@ -33,6 +33,9 @@ import java.util.List; import java.util.Map; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletOutputStream; + import junit.framework.TestCase; import org.apache.cxf.bus.CXFBusImpl; @@ -63,8 +66,8 @@ private Proxy proxy; private Message inMessage; private MessageObserver observer; - private OutputStream os; - private InputStream is; + private ServletOutputStream os; + private ServletInputStream is; private IMocksControl control; public void setUp() throws Exception { @@ -139,7 +142,8 @@ contentTypes.add("text/xml"); contentTypes.add("charset=utf8"); headers.put("content-type", contentTypes); - message.put(Message.PROTOCOL_HEADERS, headers); + message.put(Message.PROTOCOL_HEADERS, headers); + AuthorizationPolicy authPolicy = new AuthorizationPolicy(); authPolicy.setUserName("BJ"); @@ -199,9 +203,9 @@ ((HttpURLConnection)connection).setChunkedStreamingMode(2048); EasyMock.expectLastCall(); } - } + } } - + CXFBusImpl bus = new CXFBusImpl(); URL decoupledURL = null; if (decoupled) { @@ -222,13 +226,14 @@ } control.replay(); - + HTTPConduit conduit = new HTTPConduit(bus, endpointInfo, null, connectionFactory); conduit.retrieveConnectionFactory(); + if (send) { conduit.getClient().setConnectionTimeout(303030); conduit.getClient().setReceiveTimeout(404040); @@ -239,14 +244,14 @@ } } } - + if (decoupled) { conduit.getClient().setDecoupledEndpoint(decoupledURL.toString()); assertNotNull("expected back channel", conduit.getBackChannel()); } else { assertNull("unexpected back channel", conduit.getBackChannel()); } - + observer = new MessageObserver() { public void onMessage(Message m) { inMessage = m; @@ -284,7 +289,7 @@ } - os = EasyMock.createMock(OutputStream.class); + os = EasyMock.createMock(ServletOutputStream.class); connection.getOutputStream(); EasyMock.expectLastCall().andReturn(os); os.write(PAYLOAD.getBytes(), 0, PAYLOAD.length()); @@ -298,9 +303,9 @@ EasyMock.expectLastCall(); verifyHandleResponse(decoupled); - - control.replay(); + control.replay(); + wrappedOS.flush(); wrappedOS.flush(); wrappedOS.close(); @@ -370,7 +375,7 @@ String responseString = Integer.toString(responseCode); EasyMock.expectLastCall().andReturn(responseString).times(2); } - is = EasyMock.createMock(InputStream.class); + is = EasyMock.createMock(ServletInputStream.class); connection.getInputStream(); EasyMock.expectLastCall().andReturn(is); } @@ -390,10 +395,10 @@ inMessage.get(DECOUPLED_CHANNEL_MESSAGE)); assertEquals("unexpected HTTP_REQUEST set", false, - inMessage.containsKey(HTTPConduit.HTTP_REQUEST)); + inMessage.containsKey(AbstractHTTPDestination.HTTP_REQUEST)); assertEquals("unexpected HTTP_RESPONSE set", false, - inMessage.containsKey(HTTPConduit.HTTP_RESPONSE)); + inMessage.containsKey(AbstractHTTPDestination.HTTP_RESPONSE)); assertEquals("unexpected Message.ASYNC_POST_RESPONSE_DISPATCH set", false, inMessage.containsKey(Message.ASYNC_POST_RESPONSE_DISPATCH)); Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java?view=diff&rev=518627&r1=518626&r2=518627 ============================================================================== --- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java (original) +++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java Thu Mar 15 06:44:47 2007 @@ -23,17 +23,17 @@ import org.easymock.classextension.EasyMock; import org.easymock.classextension.IMocksControl; -import org.mortbay.http.HttpContext; +import org.mortbay.jetty.handler.ContextHandler; public class JettyContextInspectorTest extends TestCase { private static final String CONTEXT_PATH = "/foo/bar"; - private HttpContext context; + private ContextHandler context; private IMocksControl control; public void setUp() throws Exception { control = EasyMock.createNiceControl(); - context = control.createMock(HttpContext.class); + context = control.createMock(ContextHandler.class); context.getContextPath(); EasyMock.expectLastCall().andReturn(CONTEXT_PATH); control.replay(); Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java?view=diff&rev=518627&r1=518626&r2=518627 ============================================================================== --- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java (original) +++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java Thu Mar 15 06:44:47 2007 @@ -21,15 +21,16 @@ import java.io.ByteArrayOutputStream; -import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.util.ArrayList; -import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletOutputStream; + import junit.framework.TestCase; import org.apache.cxf.Bus; @@ -37,23 +38,25 @@ import org.apache.cxf.common.util.Base64Utility; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.configuration.security.AuthorizationPolicy; +import org.apache.cxf.configuration.security.SSLServerPolicy; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.io.AbstractCachedOutputStream; import org.apache.cxf.message.ExchangeImpl; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageImpl; +import org.apache.cxf.security.transport.TLSSessionInfo; import org.apache.cxf.service.model.EndpointInfo; import org.apache.cxf.transport.Conduit; import org.apache.cxf.transport.ConduitInitiator; import org.apache.cxf.transport.MessageObserver; -import org.apache.cxf.transports.http.QueryHandler; -import org.apache.cxf.transports.http.QueryHandlerRegistry; import org.apache.cxf.transports.http.configuration.HTTPServerPolicy; import org.apache.cxf.ws.addressing.EndpointReferenceType; import org.apache.cxf.wsdl.EndpointReferenceUtils; import org.easymock.classextension.EasyMock; -import org.easymock.classextension.IMocksControl; -import org.mortbay.http.handler.AbstractHttpHandler; +import org.mortbay.jetty.HttpFields; +import org.mortbay.jetty.Request; +import org.mortbay.jetty.Response; +import org.mortbay.jetty.handler.AbstractHandler; public class JettyHTTPDestinationTest extends TestCase { protected static final String AUTH_HEADER = "Authorization"; @@ -77,26 +80,21 @@ private ServerEngine engine; private HTTPServerPolicy policy; private JettyHTTPDestination destination; - private TestHttpRequest request; - private TestHttpResponse response; + private Request request; + private Response response; private Message inMessage; private Message outMessage; private MessageObserver observer; - private InputStream is; - private OutputStream os; - private IMocksControl control; - private WSDLQueryHandler wsdlQueryHandler; - private QueryHandlerRegistry queryHandlerRegistry; - private List<QueryHandler> queryHandlerList; + private ServletInputStream is; + private ServletOutputStream os; + public void setUp() throws Exception { - control = EasyMock.createNiceControl(); + //control = EasyMock.createNiceControl(); } public void tearDown() { - //control.verify(); - control = null; bus = null; conduitInitiator = null; decoupledBackChannel = null; @@ -126,35 +124,25 @@ } public void testDoServiceRedirectURL() throws Exception { - destination = setUpDestination(false, false); + destination = setUpDestination(false); setUpDoService(true); - destination.doService(request, response); - - assertEquals("unexpected sendRedirect calls", - 1, - response.getSendRedirectCallCount()); - assertEquals("unexpected commit calls", - 1, - response.getCommitCallCount()); - assertEquals("unexpected setHandled calls", - 1, - request.getHandledCallCount()); + destination.doService(request, response); } public void testDoService() throws Exception { - destination = setUpDestination(false, false); + destination = setUpDestination(false); setUpDoService(false); destination.doService(request, response); verifyDoService(); } public void testDoServiceWithHttpGET() throws Exception { - destination = setUpDestination(false, false); + destination = setUpDestination(false); setUpDoService(false, false, false, "GET", - "?customerId=abc&cutomerAdd=def"); + "?customerId=abc&cutomerAdd=def", 200); destination.doService(request, response); assertNotNull("unexpected null message", inMessage); @@ -163,29 +151,15 @@ "GET"); assertEquals("unexpected path", inMessage.get(Message.PATH_INFO), - "bar/foo"); + "/bar/foo"); assertEquals("unexpected query", inMessage.get(Message.QUERY_STRING), "?customerId=abc&cutomerAdd=def"); } - - public void testDoServiceWithHttpGETandQueryWSDL() throws Exception { - destination = setUpDestination(false, true); - setUpDoService(false, - false, - false, - "GET", - "?wsdl"); - - destination.doService(request, response); - assertNotNull("unexpected null response", response); - assertEquals("text/xml", response.getContentType()); - - } public void testGetAnonBackChannel() throws Exception { - destination = setUpDestination(false, false); + destination = setUpDestination(false); setUpDoService(false); destination.doService(request, response); setUpInMessage(); @@ -200,7 +174,7 @@ } public void testGetBackChannelSend() throws Exception { - destination = setUpDestination(false, false); + destination = setUpDestination(false); setUpDoService(false, true); destination.doService(request, response); setUpInMessage(); @@ -212,8 +186,8 @@ } public void testGetBackChannelSendFault() throws Exception { - destination = setUpDestination(false, false); - setUpDoService(false, true); + destination = setUpDestination(false); + setUpDoService(false, true, 500); destination.doService(request, response); setUpInMessage(); Conduit backChannel = @@ -224,8 +198,8 @@ } public void testGetBackChannelSendOneway() throws Exception { - destination = setUpDestination(false, false); - setUpDoService(false, true); + destination = setUpDestination(false); + setUpDoService(false, true, 500); destination.doService(request, response); setUpInMessage(); Conduit backChannel = @@ -236,9 +210,9 @@ } public void testGetBackChannelSendDecoupled() throws Exception { - destination = setUpDestination(false, false); + destination = setUpDestination(false); replyTo = getEPR(NOWHERE + "response/foo"); - setUpDoService(false, true, true); + setUpDoService(false, true, true, 202); destination.doService(request, response); setUpInMessage(); @@ -262,56 +236,56 @@ public void testServerPolicyInServiceModel() throws Exception { + policy = new HTTPServerPolicy(); address = getEPR("bar/foo"); bus = new CXFBusImpl(); - conduitInitiator = control.createMock(ConduitInitiator.class); - engine = control.createMock(ServerEngine.class); + conduitInitiator = EasyMock.createMock(ConduitInitiator.class); endpointInfo = new EndpointInfo(); endpointInfo.setAddress(NOWHERE + "bar/foo"); - - HTTPServerPolicy customPolicy = new HTTPServerPolicy(); - endpointInfo.addExtensor(customPolicy); - - control.replay(); + endpointInfo.addExtensor(policy); + endpointInfo.addExtensor(new SSLServerPolicy()); - JettyHTTPDestination dest = new JettyHTTPDestination(bus, + engine = EasyMock.createMock(ServerEngine.class); + EasyMock.replay(); + + AbstractHTTPDestination dest = new JettyHTTPDestination(bus, conduitInitiator, endpointInfo, engine); - assertEquals(customPolicy, dest.getServer()); + assertEquals(policy, dest.getServer()); } - + private JettyHTTPDestination setUpDestination() throws Exception { - return setUpDestination(false, false); + return setUpDestination(false); }; - private JettyHTTPDestination setUpDestination(boolean contextMatchOnStem, boolean mockedBus) - throws Exception { + private JettyHTTPDestination setUpDestination(boolean contextMatchOnStem) + throws Exception { + + policy = new HTTPServerPolicy(); address = getEPR("bar/foo"); - if (!mockedBus) { - bus = new CXFBusImpl(); - } else { - bus = control.createMock(Bus.class); - } + bus = new CXFBusImpl(); + conduitInitiator = EasyMock.createMock(ConduitInitiator.class); - conduitInitiator = control.createMock(ConduitInitiator.class); - engine = control.createMock(ServerEngine.class); + engine = EasyMock.createMock(ServerEngine.class); endpointInfo = new EndpointInfo(); endpointInfo.setAddress(NOWHERE + "bar/foo"); - - engine.addServant(EasyMock.eq(new URL(NOWHERE + "bar/foo")), - EasyMock.isA(AbstractHttpHandler.class)); + endpointInfo.addExtensor(policy); + endpointInfo.getExtensor(SSLServerPolicy.class); + endpointInfo.addExtensor(new SSLServerPolicy()); - control.replay(); + engine.addServant(EasyMock.eq(new URL(NOWHERE + "bar/foo")), + EasyMock.isA(AbstractHandler.class)); + EasyMock.expectLastCall(); + EasyMock.replay(engine); JettyHTTPDestination dest = new JettyHTTPDestination(bus, conduitInitiator, endpointInfo, engine); - dest.retrieveEngine(); - policy = dest.getServer(); + dest.retrieveEngine(); observer = new MessageObserver() { public void onMessage(Message m) { inMessage = m; @@ -322,11 +296,10 @@ } private void setUpRemoveServant() throws Exception { - control.verify(); - control.reset(); + EasyMock.reset(engine); engine.removeServant(EasyMock.eq(new URL(NOWHERE + "bar/foo"))); EasyMock.expectLastCall(); - control.replay(); + EasyMock.replay(engine); } private void setUpDoService(boolean setRedirectURL) throws Exception { @@ -338,67 +311,97 @@ setUpDoService(setRedirectURL, sendResponse, false); - } + } + + private void setUpDoService(boolean setRedirectURL, + boolean sendResponse, int status) throws Exception { + String method = "POST"; + String query = "?name"; + setUpDoService(setRedirectURL, sendResponse, false, method, query, status); + } + + private void setUpDoService(boolean setRedirectURL, + boolean sendResponse, boolean decoupled, int status) throws Exception { + String method = "POST"; + String query = "?name"; + setUpDoService(setRedirectURL, sendResponse, decoupled, method, query, status); + } private void setUpDoService(boolean setRedirectURL, boolean sendResponse, boolean decoupled) throws Exception { String method = "POST"; String query = "?name"; - setUpDoService(setRedirectURL, sendResponse, decoupled, method, query); + setUpDoService(setRedirectURL, sendResponse, decoupled, method, query, 200); } - + private void setUpDoService(boolean setRedirectURL, boolean sendResponse, boolean decoupled, String method, - String query) throws Exception { - - control.verify(); - control.reset(); - - is = EasyMock.createMock(InputStream.class); - os = EasyMock.createMock(OutputStream.class); + String query, + int status) throws Exception { + is = EasyMock.createMock(ServletInputStream.class); + os = EasyMock.createMock(ServletOutputStream.class); + request = EasyMock.createMock(Request.class); + response = EasyMock.createMock(Response.class); + + request.getMethod(); + EasyMock.expectLastCall().andReturn(method); - // EasyMock does not seem able to properly mock calls to HttpRequest - // or HttpResponse - expectations set seem to be ignored. - // Hence we use hand-crafted sub-classes instead of mocks. - // - //request = EasyMock.createMock(HttpRequest.class); - //response = EasyMock.createMock(HttpResponse.class); - request = new TestHttpRequest(method, is, "bar/foo", query); - response = new TestHttpResponse(os); + if ("GET".equals(method)) { + request.getQueryString(); + EasyMock.expectLastCall().andReturn(query); + } if (setRedirectURL) { policy.setRedirectURL(NOWHERE + "foo/bar"); - //response.sendRedirect(EasyMock.eq(NOWHERE + "foo/bar")); - //EasyMock.expectLastCall(); - //response.commit(); - //EasyMock.expectLastCall(); - //request.setHandled(true); - //EasyMock.expectLastCall(); - } else { - //request.getMethod(); - //EasyMock.expectLastCall().andReturn("POST").times(2); - //request.getInputStream(); - //EasyMock.expectLastCall().andReturn(is); - //request.getPath(); - //EasyMock.expectLastCall().andReturn("bar/foo"); - //request.getQuery(); - //EasyMock.expectLastCall().andReturn(QUERY); - //request.setHandled(true); - //EasyMock.expectLastCall(); - //response.commit(); - //EasyMock.expectLastCall(); - //if (sendResponse) { - // response.getOutputStream(); - // EasyMock.expectLastCall().andReturn(os); - // response.commit(); - // EasyMock.expectLastCall(); - //} - if ("GET".equals(method) && "?wsdl".equals(query)) { - verifyGetWSDLQuery(); + response.sendRedirect(EasyMock.eq(NOWHERE + "foo/bar")); + EasyMock.expectLastCall(); + response.flushBuffer(); + EasyMock.expectLastCall(); + request.setHandled(true); + EasyMock.expectLastCall(); + } else { // method is POST + EasyMock.expect(request.getMethod()).andReturn(method); + EasyMock.expect(request.getInputStream()).andReturn(is); + EasyMock.expect(request.getContextPath()).andReturn("/bar"); + EasyMock.expect(request.getPathInfo()).andReturn("/foo"); + EasyMock.expect(request.getQueryString()).andReturn(query); + EasyMock.expect(request.getContentType()).andReturn("text/xml charset=utf8"); + + HttpFields httpFields = new HttpFields(); + httpFields.add("content-type", "text/xml"); + httpFields.add("content-type", "charset=utf8"); + httpFields.put(JettyHTTPDestinationTest.AUTH_HEADER, JettyHTTPDestinationTest.BASIC_AUTH); + + EasyMock.expect(request.getHeaderNames()).andReturn(httpFields.getFieldNames()); + request.getHeaders("content-type"); + EasyMock.expectLastCall().andReturn(httpFields.getValues("content-type")); + request.getHeaders(JettyHTTPDestinationTest.AUTH_HEADER); + EasyMock.expectLastCall().andReturn(httpFields.getValues(JettyHTTPDestinationTest.AUTH_HEADER)); + + EasyMock.expect(request.getInputStream()).andReturn(is); + request.setHandled(true); + EasyMock.expectLastCall(); + response.flushBuffer(); + EasyMock.expectLastCall(); + if (sendResponse) { + response.setStatus(status); + EasyMock.expectLastCall(); + response.setContentType("text/xml charset=utf8"); + EasyMock.expectLastCall(); + response.addHeader(EasyMock.isA(String.class), EasyMock.isA(String.class)); + EasyMock.expectLastCall().anyTimes(); + response.getOutputStream(); + EasyMock.expectLastCall().andReturn(os); + response.getStatus(); + EasyMock.expectLastCall().andReturn(status).anyTimes(); + response.flushBuffer(); + EasyMock.expectLastCall(); } + request.getAttribute("javax.net.ssl.session"); + EasyMock.expectLastCall().andReturn(null); } if (decoupled) { @@ -406,11 +409,15 @@ conduitInitiator.getConduit(EasyMock.isA(EndpointInfo.class), EasyMock.eq(replyTo)); EasyMock.expectLastCall().andReturn(decoupledBackChannel); - decoupledBackChannel.send(EasyMock.eq(outMessage)); + decoupledBackChannel.setMessageObserver(EasyMock.isA(MessageObserver.class)); + EasyMock.expectLastCall(); + decoupledBackChannel.send(EasyMock.isA(Message.class)); EasyMock.expectLastCall(); + EasyMock.replay(conduitInitiator); + EasyMock.replay(decoupledBackChannel); } - - control.replay(); + EasyMock.replay(response); + EasyMock.replay(request); } private void setUpInMessage() { @@ -436,23 +443,6 @@ challenges.add(CUSTOM_CHALLENGE); responseHeaders.put(CHALLENGE_HEADER, challenges); } - - private void verifyGetWSDLQuery() throws Exception { - wsdlQueryHandler = control.createMock(WSDLQueryHandler.class); - queryHandlerRegistry = control.createMock(QueryHandlerRegistry.class); - queryHandlerList = new ArrayList<QueryHandler>(); - queryHandlerList.add(wsdlQueryHandler); - bus.getExtension(QueryHandlerRegistry.class); - EasyMock.expectLastCall().andReturn(queryHandlerRegistry); - queryHandlerRegistry.getHandlers(); - EasyMock.expectLastCall().andReturn(queryHandlerList); - wsdlQueryHandler.isRecognizedQuery("http://localhost/bar/foo?wsdl", endpointInfo); - EasyMock.expectLastCall().andReturn(true); - wsdlQueryHandler.getResponseContentType("http://localhost/bar/foo?wsdl"); - EasyMock.expectLastCall().andReturn("text/xml"); - wsdlQueryHandler.writeResponse("http://localhost/bar/foo?wsdl", endpointInfo, os); - EasyMock.expectLastCall().once(); - } private void verifyDoService() throws Exception { assertNotNull("unexpected null message", inMessage); @@ -467,38 +457,22 @@ "POST"); assertEquals("unexpected path", inMessage.get(Message.PATH_INFO), - "bar/foo"); + "/bar/foo"); assertEquals("unexpected query", inMessage.get(Message.QUERY_STRING), "?name"); - verifyRequestHeaders(); - + assertNull("unexpected query", + inMessage.get(TLSSessionInfo.class)); + verifyRequestHeaders(); - assertEquals("unexpected getMethod calls", - 1, - request.getMethodCallCount()); - assertEquals("unexpected getInputStream calls", - 1, - request.getInputStreamCallCount()); - assertEquals("unexpected getPath calls", - 1, - request.getPathCallCount()); - assertEquals("unexpected getQuery calls", - 1, - request.getQueryCallCount()); - assertEquals("unexpected setHandled calls", - 1, - request.getHandledCallCount()); + } private void verifyRequestHeaders() throws Exception { Map<String, List<String>> requestHeaders = CastUtils.cast((Map<?, ?>)inMessage.get(Message.PROTOCOL_HEADERS)); assertNotNull("expected request headers", - requestHeaders); - assertEquals("expected getFieldNames", - 1, - request.getFieldNamesCallCount()); + requestHeaders); List<String> values = requestHeaders.get("content-type"); assertNotNull("expected field", values); assertEquals("unexpected values", 2, values.size()); @@ -525,10 +499,10 @@ CastUtils.cast((Map<?, ?>)outMsg.get(Message.PROTOCOL_HEADERS)); assertNotNull("expected response headers", responseHeaders); - assertEquals("expected addField", + /*assertEquals("expected addField", 3, response.getAddFieldCallCount()); - Enumeration e = response.getFieldValues(CHALLENGE_HEADER); + Enumeration e = response.getHeaders(CHALLENGE_HEADER); List<String> challenges = new ArrayList<String>(); while (e.hasMoreElements()) { challenges.add((String)e.nextElement()); @@ -538,7 +512,7 @@ assertTrue("expected challenge", challenges.contains(DIGEST_CHALLENGE)); assertTrue("expected challenge", - challenges.contains(CUSTOM_CHALLENGE)); + challenges.contains(CUSTOM_CHALLENGE));*/ } private void verifyBackChannelSend(Conduit backChannel, @@ -558,10 +532,7 @@ OutputStream responseOS = outMsg.getContent(OutputStream.class); assertNotNull("expected output stream", responseOS); assertTrue("unexpected output stream type", - responseOS instanceof AbstractCachedOutputStream); - assertEquals("expected commit", - 1, - response.getCommitCallCount()); + responseOS instanceof AbstractCachedOutputStream); outMsg.put(Message.RESPONSE_CODE, status); responseOS.write(PAYLOAD.getBytes()); @@ -571,44 +542,28 @@ OutputStream underlyingOS = ((AbstractCachedOutputStream)responseOS).getOut(); assertTrue("unexpected underlying output stream type", - underlyingOS instanceof ByteArrayOutputStream); - assertEquals("expected getOutputStream", - 0, - response.getOutputStreamCallCount()); + underlyingOS instanceof ByteArrayOutputStream); outMsg.getExchange().setOneWay(oneway); responseOS.flush(); - assertEquals("expected setStatus", - 1, - response.getStatusCallCount()); + assertEquals("unexpected status", status, response.getStatus()); - if (status == 500) { - assertEquals("unexpected status message", - "Internal Server Error", - response.getReason()); - } + verifyResponseHeaders(outMsg); - assertEquals("expected getOutputStream", - 1, - response.getOutputStreamCallCount()); + underlyingOS = ((AbstractCachedOutputStream)responseOS).getOut(); assertFalse("unexpected underlying output stream type: " + underlyingOS.getClass(), underlyingOS instanceof ByteArrayOutputStream); - assertEquals("expected commit", - oneway ? 2 : 1, - response.getCommitCallCount()); + if (oneway) { assertNull("unexpected HTTP response", outMsg.get(JettyHTTPDestination.HTTP_RESPONSE)); } else { assertNotNull("expected HTTP response", outMsg.get(JettyHTTPDestination.HTTP_RESPONSE)); - responseOS.close(); - assertEquals("expected commit", - 2, - response.getCommitCallCount()); + responseOS.close(); } } Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/https/HttpsURLConnectionFactoryTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/https/HttpsURLConnectionFactoryTest.java?view=diff&rev=518627&r1=518626&r2=518627 ============================================================================== --- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/https/HttpsURLConnectionFactoryTest.java (original) +++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/https/HttpsURLConnectionFactoryTest.java Thu Mar 15 06:44:47 2007 @@ -27,8 +27,6 @@ import junit.framework.TestCase; -import org.apache.cxf.configuration.security.FiltersType; -import org.apache.cxf.configuration.security.ObjectFactory; import org.apache.cxf.configuration.security.SSLClientPolicy; @@ -37,11 +35,6 @@ protected static final String DROP_BACK_SRC_DIR = "../../../../../../../" + "src/test/java/org/apache/cxf/transport/https/"; - - private static final String[] EXPORT_CIPHERS = - {"SSL_RSA_WITH_NULL_MD5", "SSL_RSA_EXPORT_WITH_RC4_40_MD5", "SSL_RSA_WITH_DES_CBC_SHA"}; - private static final String[] NON_EXPORT_CIPHERS = - {"SSL_RSA_WITH_RC4_128_MD5", "SSL_RSA_WITH_3DES_EDE_CBC_SHA"}; private TestHttpsURLConnection connection; @@ -131,7 +124,7 @@ */ public void testSetAllData() throws Exception { - + String keyStoreStr = getPath("resources/defaultkeystore"); SSLClientPolicy sslClientPolicy = new SSLClientPolicy(); sslClientPolicy.setKeystore(keyStoreStr); @@ -148,13 +141,7 @@ sslClientPolicy.setCertValidator("Anything"); sslClientPolicy.setProxyHost("Anything"); sslClientPolicy.setProxyPort(new Long(1234)); - for (int i = 0; i < EXPORT_CIPHERS.length; i++) { - sslClientPolicy.getCiphersuites().add(EXPORT_CIPHERS[i]); - } - for (int i = 0; i < NON_EXPORT_CIPHERS.length; i++) { - sslClientPolicy.getCiphersuites().add(NON_EXPORT_CIPHERS[i]); - } - + String trustStoreStr = getPath("resources/defaulttruststore"); sslClientPolicy.setTrustStore(trustStoreStr); TestLogHandler handler = new TestLogHandler(); @@ -195,16 +182,8 @@ + "algorithm has not been set in configuration " + "so the default value PKIX will be used.")); - assertFalse("Ciphersuites config not picked up", handler - .checkLogContainsString("The cipher suites have not been configured, " - + "default values will be used.")); - assertFalse("Unexpected included ciphersuite filter", - handler.checkLogContainsString("suite is included by the filter.")); - assertFalse("Unexpected excluded ciphersuite fuilter", - handler.checkLogContainsString("suite is excluded by the filter.")); - assertFalse("Unexpected ciphersuite filtering", - handler.checkLogContainsString("The enabled cipher suites have been filtered down to")); - + assertTrue("Ciphersuites is being being read from somewhere unknown", handler + .checkLogContainsString("The cipher suite has not been set, default values " + "will be used.")); assertTrue("Truststore type not being read", handler .checkLogContainsString("The key store type has been set in " + "configuration to JKS")); @@ -218,100 +197,6 @@ .checkLogContainsString("Unsupported SSLClientPolicy property : MaxChainLength")); assertTrue("CertValidator caching set but no warning about not supported", handler .checkLogContainsString("Unsupported SSLClientPolicy property : CertValidator")); - } - - public void testDefaultedCipherSuiteFilters() throws Exception { - - String keyStoreStr = getPath("resources/defaultkeystore"); - SSLClientPolicy sslClientPolicy = new SSLClientPolicy(); - sslClientPolicy.setKeystore(keyStoreStr); - sslClientPolicy.setKeystoreType("JKS"); - - sslClientPolicy.setKeyPassword("defaultkeypass"); - sslClientPolicy.setKeystorePassword("defaultkeypass"); - sslClientPolicy.setTrustStoreType("JKS"); - sslClientPolicy.setSecureSocketProtocol("TLSv1"); - - String trustStoreStr = getPath("resources/defaulttruststore"); - sslClientPolicy.setTrustStore(trustStoreStr); - TestLogHandler handler = new TestLogHandler(); - HttpsURLConnectionFactory factory = createFactory(sslClientPolicy, - "https://dummyurl", - handler); - - factory.decorate(connection); - - assertTrue("Ciphersuites is being being read from somewhere unknown", - handler.checkLogContainsString("The cipher suites have not been configured," - + " falling back to cipher suite filters.")); - assertTrue("Expected defaulted ciphersuite filters", - handler.checkLogContainsString("The cipher suite filters have not been configured," - + " falling back to default filters.")); - for (int i = 0; i < EXPORT_CIPHERS.length; i++) { - assertTrue("Expected included ciphersuite not included: " + EXPORT_CIPHERS[i], - handler.checkLogContainsString(EXPORT_CIPHERS[i] - + " cipher suite is included by the filter.")); - } - for (int i = 0; i < NON_EXPORT_CIPHERS.length; i++) { - assertTrue("Expected excluded ciphersuite not included: " + NON_EXPORT_CIPHERS[i], - handler.checkLogContainsString(NON_EXPORT_CIPHERS[i] - + " cipher suite is excluded by the filter.")); - } - assertTrue("Expected excluded ciphersuite not included", - handler.checkLogContainsString("The enabled cipher suites have been filtered down to")); - - } - - public void testNonDefaultedCipherSuiteFilters() throws Exception { - - String keyStoreStr = getPath("resources/defaultkeystore"); - SSLClientPolicy sslClientPolicy = new SSLClientPolicy(); - sslClientPolicy.setKeystore(keyStoreStr); - sslClientPolicy.setKeystoreType("JKS"); - - sslClientPolicy.setKeyPassword("defaultkeypass"); - sslClientPolicy.setKeystorePassword("defaultkeypass"); - sslClientPolicy.setTrustStoreType("JKS"); - sslClientPolicy.setSecureSocketProtocol("TLSv1"); - - // reverse default sense of include/exlcude - FiltersType filters = new ObjectFactory().createFiltersType(); - for (int i = 0; i < NON_EXPORT_CIPHERS.length; i++) { - filters.getInclude().add(NON_EXPORT_CIPHERS[i]); - } - for (int i = 0; i < EXPORT_CIPHERS.length; i++) { - filters.getExclude().add(EXPORT_CIPHERS[i]); - } - sslClientPolicy.setCiphersuiteFilters(filters); - - String trustStoreStr = getPath("resources/defaulttruststore"); - sslClientPolicy.setTrustStore(trustStoreStr); - TestLogHandler handler = new TestLogHandler(); - HttpsURLConnectionFactory factory = createFactory(sslClientPolicy, - "https://dummyurl", - handler); - - factory.decorate(connection); - - assertTrue("Ciphersuites is being being read from somewhere unknown", - handler.checkLogContainsString("The cipher suites have not been configured," - + " falling back to cipher suite filters.")); - assertFalse("Unexpected defaulted ciphersuite filters", - handler.checkLogContainsString("The cipher suite filters have not been configured," - + " falling back to default filters.")); - for (int i = 0; i < NON_EXPORT_CIPHERS.length; i++) { - assertTrue("Expected included ciphersuite not included: " + NON_EXPORT_CIPHERS[i], - handler.checkLogContainsString(NON_EXPORT_CIPHERS[i] - + " cipher suite is included by the filter.")); - } - for (int i = 0; i < EXPORT_CIPHERS.length; i++) { - assertTrue("Expected excluded ciphersuite not included: " + EXPORT_CIPHERS[i], - handler.checkLogContainsString(EXPORT_CIPHERS[i] - + " cipher suite is excluded by the filter.")); - } - assertTrue("Expected excluded ciphersuite not included", - handler.checkLogContainsString("The enabled cipher suites have been filtered down to")); - } public void testAllValidDataJKS() throws Exception { Modified: incubator/cxf/trunk/systests/pom.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/pom.xml?view=diff&rev=518627&r1=518626&r2=518627 ============================================================================== --- incubator/cxf/trunk/systests/pom.xml (original) +++ incubator/cxf/trunk/systests/pom.xml Thu Mar 15 06:44:47 2007 @@ -102,7 +102,7 @@ </dependency> <dependency> <groupId>org.apache.cxf</groupId> - <artifactId>cxf-rt-transports-http2</artifactId> + <artifactId>cxf-rt-transports-http</artifactId> <version>${project.version}</version> </dependency> <dependency>
