public void testProcessValidMessageOnFault() throws SequenceFault, RMException {
interceptor = new RMInInterceptor();
manager = control.createMock(RMManager.class);
Message message = control.createMock(Message.class);
Exchange exchange = control.createMock(Exchange.class);
AddressingPropertiesImpl maps = control.createMock(AddressingPropertiesImpl.class);
interceptor.setManager(manager);
// test 1. a normal sequence fault case without non-anonymous faultTo
EasyMock.expect(message.get(JAXWSAConstants.ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps);
EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
.andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
EasyMock.expect(message.getContent(Exception.class)).andReturn(new SequenceFault("test")).anyTimes();
exchange.setOneWay(false);
EasyMock.expectLastCall();
control.replay();
try {
interceptor.handleFault(message);
} catch (Exception e) {
fail("unexpected exception thrown from handleFault: " + e);
}
control.verify();
// 2. a sequence fault case with non anonymous faultTo
control.reset();
Destination d = control.createMock(Destination.class);
Endpoint ep = control.createMock(Endpoint.class);
EndpointInfo epi = control.createMock(EndpointInfo.class);
EasyMock.expect(ep.getEndpointInfo()).andReturn(epi).anyTimes();
EasyMock.expect(exchange.get(Endpoint.class)).andReturn(ep).anyTimes();
EasyMock.expect(maps.getFaultTo())
.andReturn(RMUtils.createReference("http://localhost:9999/decoupled")).anyTimes();
EasyMock.expect(message.get(JAXWSAConstants.ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps);
EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
.andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
EasyMock.expect(message.getContent(Exception.class)).andReturn(new SequenceFault("test")).anyTimes();
exchange.setOneWay(false);
EasyMock.expectLastCall();
exchange.setDestination(EasyMock.anyObject(org.apache.cxf.transport.Destination.class));
EasyMock.expectLastCall();
control.replay();
try {
interceptor.handleFault(message);
} catch (Exception e) {
fail("unexpected exception thrown from handleFault: " + e);
}
control.verify();
// 3. a robust oneway case
control.reset();
EasyMock.expect(maps.getFaultTo())
.andReturn(RMUtils.createAnonymousReference()).anyTimes();
EasyMock.expect(message.get(JAXWSAConstants.ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps).anyTimes();
EasyMock.expect(manager.getDestination(message)).andReturn(d);
EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.DELIVERING_ROBUST_ONEWAY)).andReturn(true).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
.andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
control.replay();
try {
interceptor.handleFault(message);
} catch (Exception e) {
fail("unexpected exception thrown from handleFault: " + e);
}
// 4. a runtime exception case
control.reset();
EasyMock.expect(maps.getFaultTo())
.andReturn(RMUtils.createAnonymousReference()).anyTimes();
EasyMock.expect(message.get(JAXWSAConstants.ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps).anyTimes();
EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
.andReturn(ProtocolVariation.RM10WSA200408).anyTimes();