@Test public void exceptionInInvocation() { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("foo"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("wrongParam", Integer.class); try { listener.onMessage(message, channel); fail("Should have thrown an exception"); } catch (ListenerExecutionFailedException ex) { assertEquals(org.springframework.messaging.converter.MessageConversionException.class, ex.getCause().getClass()); } catch (Exception ex) { fail("Should not have thrown an " + ex.getClass().getSimpleName()); } }
@Test public void exceptionInListenerBadReturnExceptionSetting() { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("foo"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("fail", true, String.class); try { listener.onMessage(message, channel); fail("Should have thrown an exception"); } catch (ListenerExecutionFailedException ex) { assertEquals(IllegalArgumentException.class, ex.getCause().getClass()); assertEquals("Expected test exception", ex.getCause().getMessage()); } catch (Exception ex) { fail("Should not have thrown an " + ex.getClass().getSimpleName()); } }
@Test public void exceptionInListener() { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("foo"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("fail", String.class); try { listener.onMessage(message, channel); fail("Should have thrown an exception"); } catch (ListenerExecutionFailedException ex) { assertEquals(IllegalArgumentException.class, ex.getCause().getClass()); assertEquals("Expected test exception", ex.getCause().getMessage()); } catch (Exception ex) { fail("Should not have thrown an " + ex.getClass().getSimpleName()); } }
@Test public void genericMessageTest3() throws Exception { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("{ \"foo\" : \"bar\" }"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("withNonGenericMessage", Message.class); listener.setMessageConverter(new Jackson2JsonMessageConverter()); message.getMessageProperties().setContentType("application/json"); listener.onMessage(message, channel); assertEquals(LinkedHashMap.class, this.sample.payload.getClass()); }
@Test public void genericMessageTest2() throws Exception { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("{ \"foo\" : \"bar\" }"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("withGenericMessageFooType", Message.class); listener.setMessageConverter(new Jackson2JsonMessageConverter()); message.getMessageProperties().setContentType("application/json"); listener.onMessage(message, channel); assertEquals(Foo.class, this.sample.payload.getClass()); }
@Test public void genericMessageTest1() throws Exception { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("\"foo\""); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("withGenericMessageAnyType", Message.class); listener.setMessageConverter(new Jackson2JsonMessageConverter()); message.getMessageProperties().setContentType("application/json"); listener.onMessage(message, channel); assertEquals(String.class, this.sample.payload.getClass()); message = org.springframework.amqp.core.MessageBuilder .withBody("{ \"foo\" : \"bar\" }".getBytes()) .andProperties(message.getMessageProperties()) .build(); listener.onMessage(message, channel); assertEquals(LinkedHashMap.class, this.sample.payload.getClass()); }
@Test public void buildMessageWithStandardMessage() throws Exception { Message<String> result = MessageBuilder.withPayload("Response") .setHeader("foo", "bar") .setHeader(AmqpHeaders.TYPE, "msg_type") .setHeader(AmqpHeaders.REPLY_TO, "reply") .build(); Channel session = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("echo", Message.class); org.springframework.amqp.core.Message replyMessage = listener.buildMessage(session, result, null); assertNotNull("reply should never be null", replyMessage); assertEquals("Response", new String(replyMessage.getBody())); assertEquals("type header not copied", "msg_type", replyMessage.getMessageProperties().getType()); assertEquals("replyTo header not copied", "reply", replyMessage.getMessageProperties().getReplyTo()); assertEquals("custom header not copied", "bar", replyMessage.getMessageProperties().getHeaders().get("foo")); }