/** * Copyright 2009-2010 the original author or authors. * * Licensed 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 net.javacrumbs.smock.springws.server; import static org.easymock.EasyMock.createControl; import static org.easymock.EasyMock.expect; import java.util.Locale; import net.javacrumbs.smock.springws.common.AbstractSmockTest; import org.easymock.IMocksControl; import org.junit.Test; import org.springframework.ws.client.support.interceptor.ClientInterceptor; import org.springframework.ws.context.DefaultMessageContext; import org.springframework.ws.context.MessageContext; import org.springframework.ws.soap.saaj.SaajSoapMessage; import org.springframework.ws.transport.WebServiceMessageReceiver; public class InterceptingMessageReceiverTest extends AbstractSmockTest{ @Test public void testInterceptOne() throws Exception { MessageContext messageContext = new DefaultMessageContext(getMessageFactory()); IMocksControl control = createControl(); WebServiceMessageReceiver wrappedMessageReceiver = new WebServiceMessageReceiver(){ public void receive(MessageContext messageContext) throws Exception { messageContext.setResponse(getMessageFactory().createWebServiceMessage()); } }; ClientInterceptor interceptor1 = control.createMock(ClientInterceptor.class); ClientInterceptor[] interceptors = new ClientInterceptor[]{interceptor1}; expect(interceptor1.handleRequest(messageContext)).andReturn(true); expect(interceptor1.handleResponse(messageContext)).andReturn(true); wrappedMessageReceiver.receive(messageContext); control.replay(); InterceptingMessageReceiver receiver = new InterceptingMessageReceiver(wrappedMessageReceiver, interceptors); receiver.receive(messageContext); control.verify(); } @Test public void testInterceptOneFault() throws Exception { MessageContext messageContext = new DefaultMessageContext(getMessageFactory()); IMocksControl control = createControl(); WebServiceMessageReceiver wrappedMessageReceiver = new WebServiceMessageReceiver(){ public void receive(MessageContext messageContext) throws Exception { SaajSoapMessage message = getMessageFactory().createWebServiceMessage(); message.getSoapBody().addServerOrReceiverFault("TestFault", Locale.ENGLISH); messageContext.setResponse(message); } }; ClientInterceptor interceptor1 = control.createMock(ClientInterceptor.class); ClientInterceptor[] interceptors = new ClientInterceptor[]{interceptor1}; expect(interceptor1.handleRequest(messageContext)).andReturn(true); expect(interceptor1.handleFault(messageContext)).andReturn(true); wrappedMessageReceiver.receive(messageContext); control.replay(); InterceptingMessageReceiver receiver = new InterceptingMessageReceiver(wrappedMessageReceiver, interceptors); receiver.receive(messageContext); control.verify(); } @Test public void testInterceptTwo() throws Exception { MessageContext messageContext = new DefaultMessageContext(getMessageFactory()); IMocksControl control = createControl(); WebServiceMessageReceiver wrappedMessageReceiver = new WebServiceMessageReceiver(){ public void receive(MessageContext messageContext) throws Exception { messageContext.setResponse(getMessageFactory().createWebServiceMessage()); } }; ClientInterceptor interceptor1 = control.createMock(ClientInterceptor.class); ClientInterceptor interceptor2 = control.createMock(ClientInterceptor.class); ClientInterceptor[] interceptors = new ClientInterceptor[]{interceptor1, interceptor2}; expect(interceptor1.handleRequest(messageContext)).andReturn(true); expect(interceptor1.handleResponse(messageContext)).andReturn(true); expect(interceptor2.handleRequest(messageContext)).andReturn(true); expect(interceptor2.handleResponse(messageContext)).andReturn(true); wrappedMessageReceiver.receive(messageContext); control.replay(); InterceptingMessageReceiver receiver = new InterceptingMessageReceiver(wrappedMessageReceiver, interceptors); receiver.receive(messageContext); control.verify(); } @Test public void testInterceptTwoInterrupt() throws Exception { MessageContext messageContext = new DefaultMessageContext(getMessageFactory()); IMocksControl control = createControl(); WebServiceMessageReceiver wrappedMessageReceiver = new WebServiceMessageReceiver(){ public void receive(MessageContext messageContext) throws Exception { messageContext.setResponse(getMessageFactory().createWebServiceMessage()); } }; ClientInterceptor interceptor1 = control.createMock(ClientInterceptor.class); ClientInterceptor interceptor2 = control.createMock(ClientInterceptor.class); ClientInterceptor[] interceptors = new ClientInterceptor[]{interceptor1, interceptor2}; expect(interceptor1.handleRequest(messageContext)).andReturn(false); expect(interceptor1.handleResponse(messageContext)).andReturn(true); wrappedMessageReceiver.receive(messageContext); control.replay(); InterceptingMessageReceiver receiver = new InterceptingMessageReceiver(wrappedMessageReceiver, interceptors); receiver.receive(messageContext); control.verify(); } }