Add dataMimeType to RSocketRequestBuilder

Closes gh-23012
This commit is contained in:
Rossen Stoyanchev
2019-05-29 17:05:25 -04:00
parent 64f3dbbee8
commit eacc531cf7
4 changed files with 75 additions and 24 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.messaging.rsocket;
import java.lang.reflect.Field;
import java.util.function.Consumer;
import io.netty.buffer.ByteBuf;
@@ -28,6 +29,13 @@ import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import org.springframework.core.codec.CharSequenceEncoder;
import org.springframework.core.codec.StringDecoder;
import org.springframework.util.MimeType;
import org.springframework.util.MimeTypeUtils;
import org.springframework.util.ReflectionUtils;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.BDDMockito.given;
@@ -67,9 +75,14 @@ public class DefaultRSocketRequesterBuilderTests {
@Test
@SuppressWarnings("unchecked")
public void shouldApplyCustomizations() {
RSocketStrategies strategies = RSocketStrategies.builder()
.encoder(CharSequenceEncoder.allMimeTypes())
.decoder(StringDecoder.allMimeTypes())
.build();
Consumer<RSocketFactory.ClientRSocketFactory> factoryConfigurer = mock(Consumer.class);
Consumer<RSocketStrategies.Builder> strategiesConfigurer = mock(Consumer.class);
RSocketRequester.builder()
.rsocketStrategies(strategies)
.rsocketFactory(factoryConfigurer)
.rsocketStrategies(strategiesConfigurer)
.connect(this.transport)
@@ -79,6 +92,25 @@ public class DefaultRSocketRequesterBuilderTests {
verify(strategiesConfigurer).accept(any(RSocketStrategies.Builder.class));
}
@Test
public void dataMimeType() throws NoSuchFieldException {
RSocketStrategies strategies = RSocketStrategies.builder()
.encoder(CharSequenceEncoder.allMimeTypes())
.decoder(StringDecoder.allMimeTypes())
.build();
RSocketRequester requester = RSocketRequester.builder()
.rsocketStrategies(strategies)
.dataMimeType(MimeTypeUtils.APPLICATION_JSON)
.connect(this.transport)
.block();
Field field = DefaultRSocketRequester.class.getDeclaredField("dataMimeType");
ReflectionUtils.makeAccessible(field);
MimeType dataMimeType = (MimeType) ReflectionUtils.getField(field, requester);
assertThat(dataMimeType).isEqualTo(MimeTypeUtils.APPLICATION_JSON);
}
static class MockConnection implements DuplexConnection {
@@ -99,7 +131,6 @@ public class DefaultRSocketRequesterBuilderTests {
@Override
public void dispose() {
}
}