Polish
This commit is contained in:
@@ -24,6 +24,7 @@ import java.util.function.Consumer;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufAllocator;
|
||||
import io.rsocket.ConnectionSetupPayload;
|
||||
import io.rsocket.DuplexConnection;
|
||||
import io.rsocket.RSocketFactory;
|
||||
import io.rsocket.frame.decoder.PayloadDecoder;
|
||||
@@ -62,19 +63,21 @@ public class DefaultRSocketRequesterBuilderTests {
|
||||
|
||||
private ClientTransport transport;
|
||||
|
||||
private final MockConnection connection = new MockConnection();
|
||||
|
||||
private final TestRSocketFactoryConfigurer rsocketFactoryConfigurer = new TestRSocketFactoryConfigurer();
|
||||
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
this.transport = mock(ClientTransport.class);
|
||||
given(this.transport.connect(anyInt())).willReturn(Mono.just(new MockConnection()));
|
||||
given(this.transport.connect(anyInt())).willReturn(Mono.just(this.connection));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void shouldApplyCustomizationsAtSubscription() {
|
||||
public void rsocketFactoryConfigurerAppliesAtSubscription() {
|
||||
Consumer<RSocketStrategies.Builder> strategiesConfigurer = mock(Consumer.class);
|
||||
RSocketRequester.builder()
|
||||
.rsocketFactory(this.rsocketFactoryConfigurer)
|
||||
@@ -87,7 +90,7 @@ public class DefaultRSocketRequesterBuilderTests {
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void shouldApplyCustomizations() {
|
||||
public void rsocketFactoryConfigurer() {
|
||||
Consumer<RSocketStrategies.Builder> rsocketStrategiesConfigurer = mock(Consumer.class);
|
||||
RSocketRequester.builder()
|
||||
.rsocketFactory(this.rsocketFactoryConfigurer)
|
||||
@@ -109,12 +112,12 @@ public class DefaultRSocketRequesterBuilderTests {
|
||||
.block();
|
||||
|
||||
assertThat(requester.dataMimeType())
|
||||
.as("Default data MimeType, based on the first configured Decoder")
|
||||
.as("Default data MimeType, based on the first Decoder")
|
||||
.isEqualTo(MimeTypeUtils.TEXT_PLAIN);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultDataMimeTypeWithCustomDecoderRegitered() {
|
||||
public void defaultDataMimeTypeWithCustomDecoderRegistered() {
|
||||
RSocketStrategies strategies = RSocketStrategies.builder()
|
||||
.decoder(new TestJsonDecoder(MimeTypeUtils.APPLICATION_JSON))
|
||||
.build();
|
||||
@@ -130,15 +133,45 @@ public class DefaultRSocketRequesterBuilderTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dataMimeTypeSet() {
|
||||
public void dataMimeTypeExplicitlySet() {
|
||||
RSocketRequester requester = RSocketRequester.builder()
|
||||
.dataMimeType(MimeTypeUtils.APPLICATION_JSON)
|
||||
.connect(this.transport)
|
||||
.block();
|
||||
|
||||
ConnectionSetupPayload setupPayload = Mono.from(this.connection.sentFrames())
|
||||
.map(ConnectionSetupPayload::create)
|
||||
.block();
|
||||
|
||||
assertThat(setupPayload.dataMimeType()).isEqualTo("application/json");
|
||||
assertThat(requester.dataMimeType()).isEqualTo(MimeTypeUtils.APPLICATION_JSON);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mimeTypesCannotBeChangedAtRSocketFactoryLevel() {
|
||||
MimeType dataMimeType = MimeTypeUtils.APPLICATION_JSON;
|
||||
MimeType metaMimeType = MetadataExtractor.ROUTING;
|
||||
|
||||
RSocketRequester requester = RSocketRequester.builder()
|
||||
.metadataMimeType(metaMimeType)
|
||||
.dataMimeType(dataMimeType)
|
||||
.rsocketFactory(factory -> {
|
||||
factory.metadataMimeType("text/plain");
|
||||
factory.dataMimeType("application/xml");
|
||||
})
|
||||
.connect(this.transport)
|
||||
.block();
|
||||
|
||||
ConnectionSetupPayload setupPayload = Mono.from(this.connection.sentFrames())
|
||||
.map(ConnectionSetupPayload::create)
|
||||
.block();
|
||||
|
||||
assertThat(setupPayload.dataMimeType()).isEqualTo(dataMimeType.toString());
|
||||
assertThat(setupPayload.metadataMimeType()).isEqualTo(metaMimeType.toString());
|
||||
assertThat(requester.dataMimeType()).isEqualTo(dataMimeType);
|
||||
assertThat(requester.metadataMimeType()).isEqualTo(metaMimeType);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void frameDecoderMatchesDataBufferFactory() throws Exception {
|
||||
testFrameDecoder(new NettyDataBufferFactory(ByteBufAllocator.DEFAULT), PayloadDecoder.ZERO_COPY);
|
||||
@@ -170,8 +203,16 @@ public class DefaultRSocketRequesterBuilderTests {
|
||||
|
||||
static class MockConnection implements DuplexConnection {
|
||||
|
||||
private Publisher<ByteBuf> sentFrames;
|
||||
|
||||
|
||||
public Publisher<ByteBuf> sentFrames() {
|
||||
return this.sentFrames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mono<Void> send(Publisher<ByteBuf> frames) {
|
||||
this.sentFrames = frames;
|
||||
return Mono.empty();
|
||||
}
|
||||
|
||||
@@ -224,7 +265,7 @@ public class DefaultRSocketRequesterBuilderTests {
|
||||
|
||||
@Override
|
||||
public boolean canDecode(ResolvableType elementType, MimeType mimeType) {
|
||||
return false;
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -48,8 +48,6 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.springframework.messaging.rsocket.DefaultRSocketRequester.COMPOSITE_METADATA;
|
||||
import static org.springframework.messaging.rsocket.DefaultRSocketRequester.ROUTING;
|
||||
import static org.springframework.util.MimeTypeUtils.TEXT_PLAIN;
|
||||
|
||||
/**
|
||||
@@ -147,7 +145,7 @@ public class DefaultRSocketRequesterTests {
|
||||
public void metadataCompositeWithRoute() {
|
||||
|
||||
RSocketRequester requester = RSocketRequester.wrap(
|
||||
this.rsocket, TEXT_PLAIN, COMPOSITE_METADATA, this.strategies);
|
||||
this.rsocket, TEXT_PLAIN, MetadataExtractor.COMPOSITE_METADATA, this.strategies);
|
||||
|
||||
requester.route("toA").data("bodyA").send().block(Duration.ofSeconds(5));
|
||||
|
||||
@@ -156,7 +154,7 @@ public class DefaultRSocketRequesterTests {
|
||||
|
||||
assertThat(iterator.hasNext()).isTrue();
|
||||
CompositeMetadata.Entry entry = iterator.next();
|
||||
assertThat(entry.getMimeType()).isEqualTo(ROUTING.toString());
|
||||
assertThat(entry.getMimeType()).isEqualTo(MetadataExtractor.ROUTING.toString());
|
||||
assertThat(entry.getContent().toString(StandardCharsets.UTF_8)).isEqualTo("toA");
|
||||
|
||||
assertThat(iterator.hasNext()).isFalse();
|
||||
@@ -166,7 +164,7 @@ public class DefaultRSocketRequesterTests {
|
||||
public void metadataCompositeWithRouteAndTextEntry() {
|
||||
|
||||
RSocketRequester requester = RSocketRequester.wrap(
|
||||
this.rsocket, TEXT_PLAIN, COMPOSITE_METADATA, this.strategies);
|
||||
this.rsocket, TEXT_PLAIN, MetadataExtractor.COMPOSITE_METADATA, this.strategies);
|
||||
|
||||
requester.route("toA")
|
||||
.metadata("My metadata", TEXT_PLAIN).data("bodyA")
|
||||
@@ -178,7 +176,7 @@ public class DefaultRSocketRequesterTests {
|
||||
|
||||
assertThat(iterator.hasNext()).isTrue();
|
||||
CompositeMetadata.Entry entry = iterator.next();
|
||||
assertThat(entry.getMimeType()).isEqualTo(ROUTING.toString());
|
||||
assertThat(entry.getMimeType()).isEqualTo(MetadataExtractor.ROUTING.toString());
|
||||
assertThat(entry.getContent().toString(StandardCharsets.UTF_8)).isEqualTo("toA");
|
||||
|
||||
assertThat(iterator.hasNext()).isTrue();
|
||||
@@ -206,7 +204,7 @@ public class DefaultRSocketRequesterTests {
|
||||
@Test
|
||||
public void metadataMimeTypeMismatch() {
|
||||
RSocketRequester requester = RSocketRequester.wrap(this.rsocket, TEXT_PLAIN, TEXT_PLAIN, this.strategies);
|
||||
assertThatThrownBy(() -> requester.metadata("toA", ROUTING).data("bodyA").send().block())
|
||||
assertThatThrownBy(() -> requester.metadata("toA", MetadataExtractor.ROUTING).data("bodyA").send().block())
|
||||
.hasMessageStartingWith("Connection configured for metadata mime type");
|
||||
}
|
||||
|
||||
@@ -219,8 +217,8 @@ public class DefaultRSocketRequesterTests {
|
||||
|
||||
@Test
|
||||
public void supportedMetadataMimeTypes() {
|
||||
RSocketRequester.wrap(this.rsocket, TEXT_PLAIN, COMPOSITE_METADATA, this.strategies);
|
||||
RSocketRequester.wrap(this.rsocket, TEXT_PLAIN, ROUTING, this.strategies);
|
||||
RSocketRequester.wrap(this.rsocket, TEXT_PLAIN, MetadataExtractor.COMPOSITE_METADATA, this.strategies);
|
||||
RSocketRequester.wrap(this.rsocket, TEXT_PLAIN, MetadataExtractor.ROUTING, this.strategies);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user