Expose localAddress in WebFlux server

Closes gh-24174
This commit is contained in:
Rossen Stoyanchev
2019-12-10 15:10:13 +00:00
parent 2bd821c909
commit 1b172c1d20
14 changed files with 176 additions and 31 deletions

View File

@@ -61,7 +61,7 @@ import org.springframework.web.util.UriComponentsBuilder;
* @author Arjen Poutsma
* @since 5.0
*/
public class MockServerRequest implements ServerRequest {
public final class MockServerRequest implements ServerRequest {
private final HttpMethod method;
@@ -91,6 +91,9 @@ public class MockServerRequest implements ServerRequest {
@Nullable
private final InetSocketAddress remoteAddress;
@Nullable
private final InetSocketAddress localAddress;
private final List<HttpMessageReader<?>> messageReaders;
@Nullable
@@ -101,8 +104,8 @@ public class MockServerRequest implements ServerRequest {
MultiValueMap<String, HttpCookie> cookies, @Nullable Object body,
Map<String, Object> attributes, MultiValueMap<String, String> queryParams,
Map<String, String> pathVariables, @Nullable WebSession session, @Nullable Principal principal,
@Nullable InetSocketAddress remoteAddress, List<HttpMessageReader<?>> messageReaders,
@Nullable ServerWebExchange exchange) {
@Nullable InetSocketAddress remoteAddress, @Nullable InetSocketAddress localAddress,
List<HttpMessageReader<?>> messageReaders, @Nullable ServerWebExchange exchange) {
this.method = method;
this.uri = uri;
@@ -116,6 +119,7 @@ public class MockServerRequest implements ServerRequest {
this.session = session;
this.principal = principal;
this.remoteAddress = remoteAddress;
this.localAddress = localAddress;
this.messageReaders = messageReaders;
this.exchange = exchange;
}
@@ -161,6 +165,11 @@ public class MockServerRequest implements ServerRequest {
return Optional.ofNullable(this.remoteAddress);
}
@Override
public Optional<InetSocketAddress> localAddress() {
return Optional.ofNullable(this.localAddress);
}
@Override
public List<HttpMessageReader<?>> messageReaders() {
return this.messageReaders;
@@ -291,6 +300,7 @@ public class MockServerRequest implements ServerRequest {
Builder session(WebSession session);
/**
* Sets the request {@link Principal}.
* @deprecated in favor of {@link #principal(Principal)}
*/
@Deprecated
@@ -300,6 +310,8 @@ public class MockServerRequest implements ServerRequest {
Builder remoteAddress(InetSocketAddress remoteAddress);
Builder localAddress(InetSocketAddress localAddress);
Builder messageReaders(List<HttpMessageReader<?>> messageReaders);
Builder exchange(ServerWebExchange exchange);
@@ -340,6 +352,9 @@ public class MockServerRequest implements ServerRequest {
@Nullable
private InetSocketAddress remoteAddress;
@Nullable
private InetSocketAddress localAddress;
private List<HttpMessageReader<?>> messageReaders = HandlerStrategies.withDefaults().messageReaders();
@Nullable
@@ -467,6 +482,13 @@ public class MockServerRequest implements ServerRequest {
return this;
}
@Override
public Builder localAddress(InetSocketAddress localAddress) {
Assert.notNull(localAddress, "'localAddress' must not be null");
this.localAddress = localAddress;
return this;
}
@Override
public Builder messageReaders(List<HttpMessageReader<?>> messageReaders) {
Assert.notNull(messageReaders, "'messageReaders' must not be null");
@@ -486,16 +508,16 @@ public class MockServerRequest implements ServerRequest {
this.body = body;
return new MockServerRequest(this.method, this.uri, this.contextPath, this.headers,
this.cookies, this.body, this.attributes, this.queryParams, this.pathVariables,
this.session, this.principal, this.remoteAddress, this.messageReaders,
this.exchange);
this.session, this.principal, this.remoteAddress, this.localAddress,
this.messageReaders, this.exchange);
}
@Override
public MockServerRequest build() {
return new MockServerRequest(this.method, this.uri, this.contextPath, this.headers,
this.cookies, null, this.attributes, this.queryParams, this.pathVariables,
this.session, this.principal, this.remoteAddress, this.messageReaders,
this.exchange);
this.session, this.principal, this.remoteAddress, this.localAddress,
this.messageReaders, this.exchange);
}
}