@Test public void testSendBuilderWithDictionary() { final DataDictionary dictionary = new NodeMappingDataDictionary(); reset(applicationContextMock); when(applicationContextMock.getBean(TestActionListeners.class)) .thenReturn(new TestActionListeners()); when(applicationContextMock.getBeansOfType(SequenceBeforeTest.class)) .thenReturn(new HashMap<String, SequenceBeforeTest>()); when(applicationContextMock.getBeansOfType(SequenceAfterTest.class)) .thenReturn(new HashMap<String, SequenceAfterTest>()); MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .payload("{ \"TestRequest\": { \"Message\": \"?\" }}") .dictionary(dictionary); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getDataDictionary(), dictionary); }
@Test public void testSendBuilderWithMessageInstance() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .message(new DefaultMessage("Foo").setHeader("operation", "foo")) .header("additional", "additionalValue"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), StaticMessageContentBuilder.class); StaticMessageContentBuilder messageBuilder = (StaticMessageContentBuilder) action.getMessageBuilder(); Assert.assertEquals(messageBuilder.getMessage().getPayload(String.class), "Foo"); Assert.assertEquals(messageBuilder.getMessage().getHeader("operation"), "foo"); Assert.assertEquals(messageBuilder.getMessageHeaders().get("additional"), "additionalValue"); }
@Test public void testSendBuilderWithHeaders() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .payload("<TestRequest><Message>Hello World!</Message></TestRequest>") .header("operation", "foo") .header("language", "eng"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), PayloadTemplateMessageBuilder.class); PayloadTemplateMessageBuilder messageBuilder = (PayloadTemplateMessageBuilder) action.getMessageBuilder(); Assert.assertEquals( messageBuilder.getPayloadData(), "<TestRequest><Message>Hello World!</Message></TestRequest>"); Assert.assertEquals(messageBuilder.getMessageHeaders().size(), 2L); Assert.assertEquals(messageBuilder.getMessageHeaders().get("operation"), "foo"); Assert.assertEquals(messageBuilder.getMessageHeaders().get("language"), "eng"); }
@Test public void testSendBuilderWithEndpointName() { reset(applicationContextMock); when(applicationContextMock.getBean(TestActionListeners.class)) .thenReturn(new TestActionListeners()); when(applicationContextMock.getBeansOfType(SequenceBeforeTest.class)) .thenReturn(new HashMap<String, SequenceBeforeTest>()); when(applicationContextMock.getBeansOfType(SequenceAfterTest.class)) .thenReturn(new HashMap<String, SequenceAfterTest>()); MockTestDesigner builder = new MockTestDesigner(applicationContextMock) { @Override public void configure() { send("fooMessageEndpoint") .payload("<TestRequest><Message>Hello World!</Message></TestRequest>"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpointUri(), "fooMessageEndpoint"); }
@Test public void testSendBuilderWithPayloadResource() throws IOException { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint).payload(resource); } }; reset(resource); when(resource.getInputStream()) .thenReturn(new ByteArrayInputStream("somePayloadData".getBytes())); builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), PayloadTemplateMessageBuilder.class); PayloadTemplateMessageBuilder messageBuilder = (PayloadTemplateMessageBuilder) action.getMessageBuilder(); Assert.assertEquals(messageBuilder.getPayloadData(), "somePayloadData"); Assert.assertEquals(messageBuilder.getMessageHeaders().size(), 0L); }
@Test public void testSendBuilderWithPayloadModelExplicitMarshaller() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint).payload(new TestRequest("Hello Citrus!"), marshaller); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), PayloadTemplateMessageBuilder.class); PayloadTemplateMessageBuilder messageBuilder = (PayloadTemplateMessageBuilder) action.getMessageBuilder(); Assert.assertEquals( messageBuilder.getPayloadData(), "<TestRequest><Message>Hello Citrus!</Message></TestRequest>"); Assert.assertEquals(messageBuilder.getMessageHeaders().size(), 0L); }
@Test public void testSendBuilderWithObjectMessageInstance() { final Message message = new DefaultMessage(new Integer(10)).setHeader("operation", "foo"); MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint).message(message); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), StaticMessageContentBuilder.class); StaticMessageContentBuilder messageBuilder = (StaticMessageContentBuilder) action.getMessageBuilder(); Assert.assertEquals(messageBuilder.getMessage().getPayload(), 10); Assert.assertEquals(messageBuilder.getMessageHeaders().size(), 0L); Assert.assertEquals( messageBuilder.getMessage().copyHeaders().size(), message.copyHeaders().size()); Assert.assertEquals( messageBuilder.getMessage().getHeader(MessageHeaders.ID), message.getHeader(MessageHeaders.ID)); Assert.assertEquals(messageBuilder.getMessage().getHeader("operation"), "foo"); Message constructed = messageBuilder.buildMessageContent(new TestContext(), MessageType.PLAINTEXT.name()); Assert.assertEquals(constructed.copyHeaders().size(), message.copyHeaders().size()); Assert.assertEquals(constructed.getHeader("operation"), "foo"); Assert.assertEquals( constructed.getHeader(MessageHeaders.ID), message.getHeader(MessageHeaders.ID)); }
@Test public void testJsonPathSupport() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .payload("{ \"TestRequest\": { \"Message\": \"?\" }}") .jsonPath("$.TestRequest.Message", "Hello World!"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertTrue(action.getMessageBuilder() instanceof AbstractMessageContentBuilder); Assert.assertEquals( ((AbstractMessageContentBuilder) action.getMessageBuilder()) .getMessageInterceptors() .size(), 1); Assert.assertTrue( ((AbstractMessageContentBuilder) action.getMessageBuilder()).getMessageInterceptors().get(0) instanceof JsonPathMessageConstructionInterceptor); Assert.assertEquals( ((JsonPathMessageConstructionInterceptor) ((AbstractMessageContentBuilder) action.getMessageBuilder()) .getMessageInterceptors() .get(0)) .getJsonPathExpressions() .get("$.TestRequest.Message"), "Hello World!"); }
@Test public void testXpathSupport() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .payload("<TestRequest><Message lang=\"ENG\">Hello World!</Message></TestRequest>") .xpath("/TestRequest/Message", "Hello World!"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertTrue(action.getMessageBuilder() instanceof AbstractMessageContentBuilder); Assert.assertEquals( ((AbstractMessageContentBuilder) action.getMessageBuilder()) .getMessageInterceptors() .size(), 1); Assert.assertTrue( ((AbstractMessageContentBuilder) action.getMessageBuilder()).getMessageInterceptors().get(0) instanceof XpathMessageConstructionInterceptor); Assert.assertEquals( ((XpathMessageConstructionInterceptor) ((AbstractMessageContentBuilder) action.getMessageBuilder()) .getMessageInterceptors() .get(0)) .getXPathExpressions() .get("/TestRequest/Message"), "Hello World!"); }
@Test public void testSendBuilderExtractJsonPathFromPayload() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .messageType(MessageType.JSON) .payload( "{\"text\":\"Hello World!\", \"person\":{\"name\":\"John\",\"surname\":\"Doe\"}, \"index\":5, \"id\":\"x123456789x\"}") .extractFromPayload("$.text", "text") .extractFromPayload("$.person", "language"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getVariableExtractors().size(), 1); Assert.assertTrue(action.getVariableExtractors().get(0) instanceof JsonPathVariableExtractor); Assert.assertTrue( ((JsonPathVariableExtractor) action.getVariableExtractors().get(0)) .getJsonPathExpressions() .containsKey("$.text")); Assert.assertTrue( ((JsonPathVariableExtractor) action.getVariableExtractors().get(0)) .getJsonPathExpressions() .containsKey("$.person")); }
@Test public void testSendBuilderWithPayloadModelExplicitMarshallerName() { reset(applicationContextMock); when(applicationContextMock.getBean(TestActionListeners.class)) .thenReturn(new TestActionListeners()); when(applicationContextMock.getBeansOfType(SequenceBeforeTest.class)) .thenReturn(new HashMap<String, SequenceBeforeTest>()); when(applicationContextMock.getBeansOfType(SequenceAfterTest.class)) .thenReturn(new HashMap<String, SequenceAfterTest>()); when(applicationContextMock.getBean("myMarshaller", Marshaller.class)).thenReturn(marshaller); MockTestDesigner builder = new MockTestDesigner(applicationContextMock) { @Override public void configure() { send(messageEndpoint).payload(new TestRequest("Hello Citrus!"), "myMarshaller"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), PayloadTemplateMessageBuilder.class); PayloadTemplateMessageBuilder messageBuilder = (PayloadTemplateMessageBuilder) action.getMessageBuilder(); Assert.assertEquals( messageBuilder.getPayloadData(), "<TestRequest><Message>Hello Citrus!</Message></TestRequest>"); Assert.assertEquals(messageBuilder.getMessageHeaders().size(), 0L); }
@Test public void testSendBuilderExtractFromHeader() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .payload("<TestRequest><Message lang=\"ENG\">Hello World!</Message></TestRequest>") .extractFromHeader("operation", "ops") .extractFromHeader("requestId", "id"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getVariableExtractors().size(), 1); Assert.assertTrue( action.getVariableExtractors().get(0) instanceof MessageHeaderVariableExtractor); Assert.assertTrue( ((MessageHeaderVariableExtractor) action.getVariableExtractors().get(0)) .getHeaderMappings() .containsKey("operation")); Assert.assertTrue( ((MessageHeaderVariableExtractor) action.getVariableExtractors().get(0)) .getHeaderMappings() .containsKey("requestId")); }
@Test public void testSendBuilderExtractFromPayload() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .payload("<TestRequest><Message lang=\"ENG\">Hello World!</Message></TestRequest>") .extractFromPayload("/TestRequest/Message", "text") .extractFromPayload("/TestRequest/Message/@lang", "language"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 1); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getVariableExtractors().size(), 1); Assert.assertTrue( action.getVariableExtractors().get(0) instanceof XpathPayloadVariableExtractor); Assert.assertTrue( ((XpathPayloadVariableExtractor) action.getVariableExtractors().get(0)) .getXpathExpressions() .containsKey("/TestRequest/Message")); Assert.assertTrue( ((XpathPayloadVariableExtractor) action.getVariableExtractors().get(0)) .getXpathExpressions() .containsKey("/TestRequest/Message/@lang")); }
@Test public void testSendBuilderWithHeaderDataResource() throws IOException { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .payload("<TestRequest><Message>Hello World!</Message></TestRequest>") .header(resource); send(messageEndpoint) .message( new DefaultMessage( "<TestRequest><Message>Hello World!</Message></TestRequest>")) .header(resource); } }; reset(resource); when(resource.getInputStream()) .thenReturn(new ByteArrayInputStream("someHeaderData".getBytes())) .thenReturn(new ByteArrayInputStream("otherHeaderData".getBytes())); builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 2); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); Assert.assertEquals(test.getActions().get(1).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), PayloadTemplateMessageBuilder.class); PayloadTemplateMessageBuilder messageBuilder = (PayloadTemplateMessageBuilder) action.getMessageBuilder(); Assert.assertEquals( messageBuilder.getPayloadData(), "<TestRequest><Message>Hello World!</Message></TestRequest>"); Assert.assertEquals(messageBuilder.getMessageHeaders().size(), 0L); Assert.assertEquals(messageBuilder.getHeaderData().size(), 1L); Assert.assertEquals(messageBuilder.getHeaderData().get(0), "someHeaderData"); Assert.assertEquals(messageBuilder.getHeaderResources().size(), 0L); action = ((SendMessageAction) test.getActions().get(1)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), StaticMessageContentBuilder.class); StaticMessageContentBuilder staticMessageBuilder = (StaticMessageContentBuilder) action.getMessageBuilder(); Assert.assertEquals( staticMessageBuilder.getMessage().getPayload(String.class), "<TestRequest><Message>Hello World!</Message></TestRequest>"); Assert.assertEquals(staticMessageBuilder.getMessageHeaders().size(), 0L); Assert.assertEquals(staticMessageBuilder.getHeaderData().size(), 1L); Assert.assertEquals(staticMessageBuilder.getHeaderData().get(0), "otherHeaderData"); Assert.assertEquals(staticMessageBuilder.getHeaderResources().size(), 0L); }
@Test public void testSendBuilderWithMultipleHeaderData() { MockTestDesigner builder = new MockTestDesigner(applicationContext) { @Override public void configure() { send(messageEndpoint) .payload("<TestRequest><Message>Hello World!</Message></TestRequest>") .header("<Header><Name>operation</Name><Value>foo1</Value></Header>") .header("<Header><Name>operation</Name><Value>foo2</Value></Header>"); send(messageEndpoint) .message( new DefaultMessage( "<TestRequest><Message>Hello World!</Message></TestRequest>")) .header("<Header><Name>operation</Name><Value>foo1</Value></Header>") .header("<Header><Name>operation</Name><Value>foo2</Value></Header>"); } }; builder.configure(); TestCase test = builder.getTestCase(); Assert.assertEquals(test.getActionCount(), 2); Assert.assertEquals(test.getActions().get(0).getClass(), SendMessageAction.class); Assert.assertEquals(test.getActions().get(1).getClass(), SendMessageAction.class); SendMessageAction action = ((SendMessageAction) test.getActions().get(0)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), PayloadTemplateMessageBuilder.class); PayloadTemplateMessageBuilder messageBuilder = (PayloadTemplateMessageBuilder) action.getMessageBuilder(); Assert.assertEquals( messageBuilder.getPayloadData(), "<TestRequest><Message>Hello World!</Message></TestRequest>"); Assert.assertEquals(messageBuilder.getMessageHeaders().size(), 0L); Assert.assertEquals(messageBuilder.getHeaderData().size(), 2L); Assert.assertEquals( messageBuilder.getHeaderData().get(0), "<Header><Name>operation</Name><Value>foo1</Value></Header>"); Assert.assertEquals( messageBuilder.getHeaderData().get(1), "<Header><Name>operation</Name><Value>foo2</Value></Header>"); Assert.assertEquals(messageBuilder.getHeaderResources().size(), 0L); action = ((SendMessageAction) test.getActions().get(1)); Assert.assertEquals(action.getName(), "send"); Assert.assertEquals(action.getEndpoint(), messageEndpoint); Assert.assertEquals(action.getMessageBuilder().getClass(), StaticMessageContentBuilder.class); StaticMessageContentBuilder staticMessageBuilder = (StaticMessageContentBuilder) action.getMessageBuilder(); Assert.assertEquals( staticMessageBuilder.getMessage().getPayload(String.class), "<TestRequest><Message>Hello World!</Message></TestRequest>"); Assert.assertEquals(staticMessageBuilder.getMessageHeaders().size(), 0L); Assert.assertEquals(staticMessageBuilder.getHeaderData().size(), 2L); Assert.assertEquals( staticMessageBuilder.getHeaderData().get(0), "<Header><Name>operation</Name><Value>foo1</Value></Header>"); Assert.assertEquals( staticMessageBuilder.getHeaderData().get(1), "<Header><Name>operation</Name><Value>foo2</Value></Header>"); Assert.assertEquals(staticMessageBuilder.getHeaderResources().size(), 0L); }