@Test public void chainWithOutputChannel() { List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(producer3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setOutputChannel(outputChannel); chain.setBeanFactory(mock(BeanFactory.class)); chain.handleMessage(message); Mockito.verify(outputChannel).send(Mockito.eq(message)); }
@Test public void chainWithoutOutputChannelButLastHandlerDoesNotProduceReplies() { List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(handler3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setBeanFactory(mock(BeanFactory.class)); chain.handleMessage(message); }
@Test(expected = IllegalArgumentException.class) public void chainWithOutputChannelButLastHandlerDoesNotProduceReplies() { List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(handler3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setOutputChannel(outputChannel); chain.setBeanFactory(mock(BeanFactory.class)); chain.afterPropertiesSet(); }
@Test public void chainForwardsToReplyChannel() { Message<String> message = MessageBuilder.withPayload("test").setReplyChannel(outputChannel).build(); List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(producer3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setBeanFactory(mock(BeanFactory.class)); chain.handleMessage(message); Mockito.verify(outputChannel).send(Mockito.any(Message.class)); }
@Test(expected = IllegalArgumentException.class) // INT-1175 public void chainRejectsDuplicateHandlers() { DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); beanFactory.registerSingleton("testChannel", outputChannel); List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(producer1); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setBeanFactory(beanFactory); chain.afterPropertiesSet(); }
@Test public void chainResolvesReplyChannelName() { Message<String> message = MessageBuilder.withPayload("test").setReplyChannelName("testChannel").build(); DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); beanFactory.registerSingleton("testChannel", outputChannel); List<MessageHandler> handlers = new ArrayList<MessageHandler>(); handlers.add(producer1); handlers.add(producer2); handlers.add(producer3); MessageHandlerChain chain = new MessageHandlerChain(); chain.setBeanName("testChain"); chain.setHandlers(handlers); chain.setBeanFactory(beanFactory); chain.handleMessage(message); Mockito.verify(outputChannel).send(Mockito.eq(message)); }