Fix empty payload handling in RSocketRequester

Closes gh-24088
This commit is contained in:
Rossen Stoyanchev
2019-11-27 07:35:45 +00:00
parent 5a552f1670
commit 26d800cc93
2 changed files with 47 additions and 37 deletions

View File

@@ -145,15 +145,6 @@ public class DefaultRSocketRequesterTests {
assertThat(this.rsocket.getSavedPayload().getDataUtf8()).isEqualTo("");
}
@Test
public void sendMonoWithoutData() {
this.requester.route("toA").retrieveMono(String.class).block(Duration.ofSeconds(5));
assertThat(this.rsocket.getSavedMethodName()).isEqualTo("requestResponse");
assertThat(this.rsocket.getSavedPayload().getMetadataUtf8()).isEqualTo("toA");
assertThat(this.rsocket.getSavedPayload().getDataUtf8()).isEqualTo("");
}
@Test
public void testSendWithAsyncMetadata() {
@@ -205,6 +196,15 @@ public class DefaultRSocketRequesterTests {
assertThat(this.rsocket.getSavedMethodName()).isEqualTo("requestResponse");
}
@Test
public void retrieveMonoWithoutData() {
this.requester.route("toA").retrieveMono(String.class).block(Duration.ofSeconds(5));
assertThat(this.rsocket.getSavedMethodName()).isEqualTo("requestResponse");
assertThat(this.rsocket.getSavedPayload().getMetadataUtf8()).isEqualTo("toA");
assertThat(this.rsocket.getSavedPayload().getDataUtf8()).isEqualTo("");
}
@Test
public void retrieveFlux() {
String[] values = new String[] {"bodyA", "bodyB", "bodyC"};
@@ -227,11 +227,20 @@ public class DefaultRSocketRequesterTests {
assertThat(this.rsocket.getSavedMethodName()).isEqualTo("requestStream");
}
@Test
public void retrieveFluxWithoutData() {
this.requester.route("toA").retrieveFlux(String.class).blockLast(Duration.ofSeconds(5));
assertThat(this.rsocket.getSavedMethodName()).isEqualTo("requestStream");
assertThat(this.rsocket.getSavedPayload().getMetadataUtf8()).isEqualTo("toA");
assertThat(this.rsocket.getSavedPayload().getDataUtf8()).isEqualTo("");
}
@Test
public void fluxToMonoIsRejected() {
assertThatIllegalStateException()
.isThrownBy(() -> this.requester.route("").data(Flux.just("a", "b")).retrieveMono(String.class))
.withMessage("No RSocket interaction model for Flux request to Mono response.");
.withMessage("No RSocket interaction with Flux request and Mono response.");
}
private Payload toPayload(String value) {