@Factory public static Matcher<DataType> like(DataType dataType) { return new DataTypeMatcher(dataType.getType(), dataType.getMediaType(), dataType.getMediaType().getCharset().orElse(null)); } }
@Test public void buildSimple() { final DataType dataType = DataType.fromType(String.class); assertThat(dataType, instanceOf(SimpleDataType.class)); assertThat(dataType.getType(), is(equalTo(String.class))); }
@Test public void createsDataTypeForNonCollection() { final DataType dataType = DataType.builder().collectionType(List.class).itemType(type).itemMediaType(mimeType).build(); assertThat(dataType.getType(), equalTo(List.class)); assertThat(dataType, instanceOf(DefaultCollectionDataType.class)); final DataType itemDataType = ((DefaultCollectionDataType) dataType).getItemDataType(); assertThat(itemDataType.getType(), equalTo(type)); assertThat(itemDataType.getMediaType().getPrimaryType(), is(mimeType.split("/")[0])); assertThat(itemDataType.getMediaType().getSubType(), is(mimeType.split("/")[1])); } }
@Test public void buildCollection() { final DataType dataType = DataType.fromType(Set.class); assertThat(dataType, instanceOf(DefaultCollectionDataType.class)); assertThat(dataType.getType(), is(equalTo(Set.class))); assertThat(((DefaultCollectionDataType) dataType).getItemDataType(), is(OBJECT)); }
@Test public void authenticationBinding() throws Exception { CoreEvent event = spy(testEvent()); Authentication authentication = new DefaultMuleAuthentication(new DefaultMuleCredentials("username", "password".toCharArray())); when(event.getAuthentication()).thenReturn(of(authentication)); TypedValue result = expressionLanguage.evaluate(AUTHENTICATION, event, BindingContext.builder().build()); assertThat(result.getValue(), is(instanceOf(Authentication.class))); assertThat(result.getValue(), is(authentication)); assertThat(result.getDataType().getType(), is(equalTo(Authentication.class))); }
@Test public void buildTypedMapFromImplementationClass() { final DataType dataType = DataType.builder().mapType(SpecificMap.class).build(); assertThat(dataType, instanceOf(DefaultMapDataType.class)); assertThat(dataType.getType(), is(equalTo(SpecificMap.class))); assertThat(((DefaultMapDataType) dataType).getKeyDataType(), is(STRING)); assertThat(((DefaultMapDataType) dataType).getValueDataType(), is(NUMBER)); }
private void assertMessage(Message message) { assertThat(message.getPayload().getValue(), is("")); assertThat(message.getAttributes().getValue(), is(attributes)); assertThat(message.getPayload().getDataType().getType().equals(String.class), is(true)); } }
@Test public void wholePayload() { Message message = Message.builder().payload(new TypedValue<>(EMPTY_JSON, JSON_STRING)).build(); assertThat(message.getPayload().getValue(), equalTo(EMPTY_JSON)); assertThat(message.getPayload().getDataType().getType(), equalTo(String.class)); assertThat(message.getPayload().getDataType().getMediaType(), is(APPLICATION_JSON)); }
@Test public void mutatePayloadSameTypeConserveTypeAndMimeType() { Message message = createTestMessage(); Message copy = new DefaultMessageBuilder(message).value(NEW_PAYLOAD).build(); assertThat(copy.getPayload().getValue(), equalTo(NEW_PAYLOAD)); assertThat(copy.getPayload().getDataType().getType(), equalTo(String.class)); assertThat(copy.getPayload().getDataType().getMediaType(), is(TEXT)); }
@Test public void mutatePayloadDifferentTypeUpdateTypeAndConserveMimeType() { Message copy = new DefaultMessageBuilder(createTestMessage()).value(1).build(); assertThat(copy.getPayload().getValue(), equalTo(1)); assertThat(copy.getPayload().getDataType().getType(), equalTo(Integer.class)); assertThat(copy.getPayload().getDataType().getMediaType(), is(TEXT)); }
@Test public void mutateEntirePayload() { Message message = createTestMessage(); Message copy = new DefaultMessageBuilder(message).payload(new TypedValue<>(EMPTY_JSON, JSON_STRING)).build(); assertThat(copy.getPayload().getValue(), equalTo(EMPTY_JSON)); assertThat(copy.getPayload().getDataType().getType(), equalTo(String.class)); assertThat(copy.getPayload().getDataType().getMediaType(), is(APPLICATION_JSON)); }
@Test public void wholeAttributes() { Message message = Message.builder().nullValue().attributes(new TypedValue<>(EMPTY_JSON, JSON_STRING)).build(); assertThat(message.getAttributes().getValue(), equalTo(EMPTY_JSON)); assertThat(message.getAttributes().getDataType().getType(), equalTo(String.class)); assertThat(message.getAttributes().getDataType().getMediaType(), is(APPLICATION_JSON)); }
@Test public void testStreamPayloadSerialization() throws Exception { InputStream stream = new ByteArrayInputStream(TEST_MESSAGE.getBytes()); final Message message = InternalMessage.builder().value(stream).addOutboundProperty("foo", "bar").build(); currentMuleContext.set(muleContext); InternalMessage deserializedMessage = serializationRoundtrip(message); assertEquals(byte[].class, deserializedMessage.getPayload().getDataType().getType()); byte[] payload = (byte[]) deserializedMessage.getPayload().getValue(); assertTrue(Arrays.equals(TEST_MESSAGE.getBytes(), payload)); }
@Test public void operationReturnsOperationResultThatOnlySpecifiesPayload() throws Exception { Object payload = "hello world!"; when(operationExecutor.execute(any(ExecutionContext.class))).thenReturn(just(builder().output(payload).build())); event = CoreEvent.builder(event).message(Message.builder().value("").attributesValue(mock(Object.class)).build()).build(); Message message = messageProcessor.process(event).getMessage(); assertThat(message, is(notNullValue())); assertThat(message.getPayload().getValue(), is(sameInstance(payload))); assertThat(message.getAttributes().getValue(), is(nullValue())); assertThat(message.getPayload().getDataType().getType().equals(String.class), is(true)); }
@Test public void returnsSingleValue() { byte[] value = new byte[] {}; CoreEvent result = delegate.asReturnValue(value, operationContext); Message message = getOutputMessage(result); assertThat(message.getPayload().getValue(), is(sameInstance(value))); assertThat(message.getPayload().getDataType().getType().equals(byte[].class), is(true)); }
@Test public void typedValueForObject() throws Exception { CoreEvent event = flowRunner("typedValueForObject").keepStreamsOpen().run(); TypedValue jsonObject = (TypedValue) event.getMessage().getPayload().getValue(); InputStream content = (InputStream) jsonObject.getValue(); assertThat(IOUtils.toString(content), is(JSON_OBJECT)); assertThat(jsonObject.getDataType(), is(like(jsonObject.getDataType().getType(), APPLICATION_JSON, UTF8))); }
@Test public void operationReturnsOperationResultThatOnlySpecifiesPayload() throws Exception { Object payload = "hello world!"; CoreEvent result = delegate.asReturnValue(Result.builder().output(payload).build(), operationContext); Message message = getOutputMessage(result); assertThat(message.getPayload().getValue(), is(sameInstance(payload))); assertThat(message.getAttributes().getValue(), is(nullValue())); assertThat(message.getPayload().getDataType().getType().equals(String.class), is(true)); }
@Test public void getDataTypeFromList() { Class<List> listClass = List.class; Class<Integer> integerClass = Integer.class; ArrayTypeBuilder arrayTypeBuilder = BaseTypeBuilder.create(JAVA) .arrayType() .with(new ClassInformationAnnotation(listClass)); arrayTypeBuilder.of().numberType().integer(); CollectionDataType dataType = (CollectionDataType) toDataType(arrayTypeBuilder.build()); assertThat(dataType.getType(), is(equalTo(listClass))); assertThat(dataType.getItemDataType().getType(), is(equalTo(integerClass))); }
@Test public void testListArg() throws MuleException, Exception { invoker.setMethodName("testListArg"); invoker.setArguments(Collections.singletonList(Collections.singletonList("#[mel:'1']"))); invoker.initialise(); CoreEvent result = invoker.process(testEvent()); assertTrue(List.class.isAssignableFrom(result.getMessage().getPayload().getDataType().getType())); assertEquals("1", ((List) result.getMessage().getPayload().getValue()).get(0)); }
@Test public void operationReturnsOperationResultThatOnlySpecifiesPayloadAndAttributes() throws Exception { Object payload = "hello world!"; Object newAttributes = mock(Object.class); CoreEvent result = delegate.asReturnValue(Result.builder().output(payload).attributes(newAttributes).build(), operationContext); Message message = getOutputMessage(result); assertThat(message.getPayload().getValue(), is(sameInstance(payload))); assertThat(message.getAttributes().getValue(), is(sameInstance(newAttributes))); assertThat(message.getPayload().getDataType().getType().equals(String.class), is(true)); }