final Message.Builder messageBuilder; messageBuilder = Message.builder().value(payload).mediaType(mediaType);
@Test public void splitByJson() throws Exception { CoreEvent jsonMessage = eventBuilder(muleContext).message(Message.builder().value("[1,2,3]").mediaType(APPLICATION_JSON).build()).build(); Iterator<TypedValue<?>> payload = expressionLanguage.split("payload", jsonMessage, BindingContext.builder().build()); assertThat(payload.hasNext(), is(true)); assertThat(payload.next().getValue().toString(), is("1")); assertThat(payload.hasNext(), is(true)); assertThat(payload.next().getValue().toString(), is("2")); assertThat(payload.hasNext(), is(true)); assertThat(payload.next().getValue().toString(), is("3")); assertThat(payload.hasNext(), is(false)); }
@Test public void updatesMimeTypeOnTransformation() throws Exception { Message message = Message.builder().value(TEST_PAYLOAD).mediaType(ANY.withCharset(CUSTOM_ENCODING)).build(); Transformer transformer = mock(Transformer.class); when(transformer.isSourceDataTypeSupported(any())).thenReturn(true); DataType outputDataType = DataType.builder().type(Integer.class).mediaType(APPLICATION_XML).build(); when(transformer.getReturnDataType()).thenReturn(outputDataType); when(transformer.transform(any(Message.class))).thenReturn(1); CoreEvent muleEvent = mock(CoreEvent.class); Message result = transformationService.applyTransformers(message, muleEvent, singletonList(transformer)); assertDataType(result, Integer.class, APPLICATION_XML, CUSTOM_ENCODING); }
@Test public void expectedOutputShouldBeUsed() throws Exception { CoreEvent jsonMessage = eventBuilder(muleContext).message(Message.builder().value("{\"student\": false}").mediaType(APPLICATION_JSON).build()) .build(); TypedValue result = expressionLanguage.evaluate("payload.student", BOOLEAN, jsonMessage, BindingContext.builder().build()); assertThat(result.getValue(), is(false)); }
return messageBuilder.mediaType(mediaType).build();
@Test public void regularToString() { Message message = Message.builder() .payload(TypedValue.of("test")) .attributes(new TypedValue<>("{}", JSON_STRING)) .mediaType(TEXT) .build(); assertThat(message.toString(), is(equalToIgnoringLineBreaks("\n" + "org.mule.runtime.core.internal.message.DefaultMessageBuilder$MessageImplementation\n" + "{\n" + " payload=test\n" + " mediaType=text/plain\n" + " attributes={}\n" + " attributesMediaType=application/json\n" + "}"))); }
@Test @Description("Verifies that XML content can be used for logging in DW.") public void parseLogXml() throws MuleException { CoreEvent event = getEventBuilder().message(Message.builder().value("<?xml version='1.0' encoding='US-ASCII'?>\n" + "<wsc_fields>\n" + " <operation>echo</operation>\n" + " <body_test>test</body_test>\n" + "</wsc_fields>") .mediaType(XML) .build()) .build(); assertThat(expressionManager.parseLogTemplate("this is #[payload.wsc_fields.operation]", event, TEST_CONNECTOR_LOCATION, NULL_BINDING_CONTEXT), is("this is \"echo\"")); }
@Test public void createNewAPIMessageViaMessageInterface() { org.mule.runtime.api.message.Message message; message = org.mule.runtime.api.message.Message.builder() .value(TEST_PAYLOAD) .mediaType(HTML_STRING_UTF8) .build(); assertThat(message.getPayload().getValue(), is(TEST_PAYLOAD)); assertThat(message.getPayload().getDataType().getType(), equalTo(String.class)); assertThat(message.getPayload().getDataType().getMediaType(), is(HTML_STRING_UTF8)); assertThat(message.getAttributes().getValue(), is(nullValue())); assertThat(message.getAttributes().getDataType().getMediaType(), is(OBJECT.getMediaType())); }
@Test public void maintainsDataTypeOnGetPayloadTransformation() throws Exception { InputStream payload = mock(InputStream.class); Message message = Message.builder().value(payload).mediaType(APPLICATION_XML_CUSTOM).build(); MuleRegistry muleRegistry = mock(MuleRegistry.class); when(muleContext.getRegistry()).thenReturn(muleRegistry); Transformer transformer = mock(Transformer.class); when(transformer.transform(anyObject(), anyObject())).thenReturn(TEST_PAYLOAD); when(muleRegistry.lookupTransformer(any(), any())).thenReturn(transformer); assertThat(message.getPayload().getDataType().getMediaType().getPrimaryType(), equalTo(APPLICATION_XML.getPrimaryType())); assertThat(message.getPayload().getDataType().getMediaType().getSubType(), equalTo(APPLICATION_XML.getSubType())); assertThat(message.getPayload().getDataType().getMediaType().getCharset().get(), equalTo(CUSTOM_ENCODING)); }
@Test public void expectedOutputShouldBeUsed() throws Exception { CoreEvent jsonMessage = eventBuilder(muleContext).message(Message.builder().value("{\"student\": false}").mediaType(APPLICATION_JSON).build()) .build(); TypedValue result = expressionLanguage.evaluate("payload.student", BOOLEAN, jsonMessage, BindingContext.builder().build()); assertThat(result.getValue(), is(false)); }
private CoreEvent newEvent(Object payload, MediaType applicationJson) throws MuleException { return CoreEvent.builder(this.<CoreEvent>newEvent()) .message(Message.builder() .value(payload) .mediaType(applicationJson) .build()) .build(); }
@Test @Description("Test that repeatable stream in the payload is consumed into another fully in memory stream provider while maintaining " + "the original media type") public void consumeJsonRepeatableInputStreamPayload() throws Exception { CursorStreamProvider payload = asCursorProvider(TEST_PAYLOAD); CoreEvent event = consumeRepeatablePayload(getEventBuilder().message(Message.builder() .payload(TypedValue.of(payload)) .mediaType(APPLICATION_JSON) .build()) .build()); assertConsumedRepeatableInputStream(payload, event); assertThat(event.getMessage().getPayload().getDataType().getMediaType(), is(APPLICATION_JSON)); }
@Benchmark public Message createMessageWithDataType() { return Message.builder().value(PAYLOAD).mediaType(MediaType.TEXT).build(); }
@Benchmark public Message mutateMessagePayloadWithDataType() { return Message.builder(message).value(VALUE).mediaType(MediaType.TEXT).build(); }
@Test public void usesCustomEncodingWithNoProperty() throws Exception { Message message = Message.builder().value(TEST_PAYLOAD).mediaType(ANY.withCharset(CUSTOM_ENCODING)).build(); assertThat(message.getPayload().getDataType().getMediaType().getCharset().get(), equalTo(CUSTOM_ENCODING)); assertCustomEncoding(message); }
@Test public void updatesEncodingOnTransformation() throws Exception { Message message = Message.builder().value(TEST_PAYLOAD).mediaType(APPLICATION_XML_DEFAULT).build(); Transformer transformer = mock(Transformer.class); when(transformer.isSourceDataTypeSupported(any())).thenReturn(true); DataType outputDataType = DataType.builder().type(Integer.class).charset(CUSTOM_ENCODING).build(); when(transformer.getReturnDataType()).thenReturn(outputDataType); when(transformer.transform(anyObject())).thenReturn(Integer.valueOf(1)); CoreEvent muleEvent = mock(CoreEvent.class); Message result = transformationService.applyTransformers(message, muleEvent, singletonList(transformer)); assertDataType(result, Integer.class, APPLICATION_XML, CUSTOM_ENCODING); }
@Override public TestLegacyMessageBuilder mediaType(MediaType mediaType) { checkInternalState(); builder.mediaType(mediaType); return this; }
@Test public void updatesTypeOnTransformation() throws Exception { Message message = Message.builder().value(1).mediaType(APPLICATION_XML_DEFAULT).build(); Transformer transformer = mock(Transformer.class); when(transformer.isSourceDataTypeSupported(any())).thenReturn(true); DataType outputDataType = DataType.builder().type(Integer.class).mediaType(ANY).charset(DEFAULT_ENCODING).build(); when(transformer.getReturnDataType()).thenReturn(outputDataType); when(transformer.transform(anyObject())).thenReturn(1); CoreEvent muleEvent = mock(CoreEvent.class); Message result = transformationService.applyTransformers(message, muleEvent, singletonList(transformer)); assertDataType(result, Integer.class, APPLICATION_XML, DEFAULT_ENCODING); }
@Test public void setsDataTypeFromPreviousMessageOnCreation() throws Exception { Message message = Message.builder().value(1).mediaType(APPLICATION_XML_CUSTOM).build(); assertDataType(InternalMessage.builder(message).build(), message.getPayload().getDataType()); }
@Test public void overridesDataTypeFromPreviousMessageOnCreation() throws Exception { Message message = Message.builder().value(1).mediaType(APPLICATION_XML_CUSTOM).build(); assertDataType(InternalMessage.builder(message).value("TEST").build(), String.class, APPLICATION_XML, CUSTOM_ENCODING); }