Polish "Fix NullPointerException with empty X-Forwarded-For header"

Closes gh-16046
This commit is contained in:
Stephane Nicoll 2019-02-28 14:56:42 +01:00
parent 64a74c3bbb
commit c224eebef3
2 changed files with 15 additions and 15 deletions

View File

@ -50,6 +50,12 @@ class ServerWebExchangeTraceableRequest implements TraceableRequest {
this.remoteAddress = getRemoteAddress(request); this.remoteAddress = getRemoteAddress(request);
} }
private static String getRemoteAddress(ServerHttpRequest request) {
InetSocketAddress remoteAddress = request.getRemoteAddress();
InetAddress address = (remoteAddress != null) ? remoteAddress.getAddress() : null;
return (address != null) ? address.toString() : null;
}
@Override @Override
public String getMethod() { public String getMethod() {
return this.method; return this.method;
@ -70,10 +76,4 @@ class ServerWebExchangeTraceableRequest implements TraceableRequest {
return this.remoteAddress; return this.remoteAddress;
} }
private static String getRemoteAddress(ServerHttpRequest request) {
InetSocketAddress remoteAddress = request.getRemoteAddress();
InetAddress address = (remoteAddress != null) ? remoteAddress.getAddress() : null;
return (address != null) ? address.toString() : null;
}
} }

View File

@ -28,7 +28,7 @@ import org.springframework.web.server.ServerWebExchange;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry; import static org.assertj.core.api.Assertions.entry;
import static org.mockito.Mockito.doReturn; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
/** /**
@ -46,13 +46,13 @@ public class ServerWebExchangeTraceableRequestTests {
public void setUp() { public void setUp() {
this.exchange = mock(ServerWebExchange.class); this.exchange = mock(ServerWebExchange.class);
this.request = mock(ServerHttpRequest.class); this.request = mock(ServerHttpRequest.class);
doReturn(this.request).when(this.exchange).getRequest(); given(this.exchange.getRequest()).willReturn(this.request);
} }
@Test @Test
public void getMethod() { public void getMethod() {
String method = "POST"; String method = "POST";
doReturn(method).when(this.request).getMethodValue(); given(this.request.getMethodValue()).willReturn(method);
ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest( ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest(
this.exchange); this.exchange);
assertThat(traceableRequest.getMethod()).isSameAs(method); assertThat(traceableRequest.getMethod()).isSameAs(method);
@ -61,7 +61,7 @@ public class ServerWebExchangeTraceableRequestTests {
@Test @Test
public void getUri() { public void getUri() {
URI uri = URI.create("http://localhost:8080/"); URI uri = URI.create("http://localhost:8080/");
doReturn(uri).when(this.request).getURI(); given(this.request.getURI()).willReturn(uri);
ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest( ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest(
this.exchange); this.exchange);
assertThat(traceableRequest.getUri()).isSameAs(uri); assertThat(traceableRequest.getUri()).isSameAs(uri);
@ -71,7 +71,7 @@ public class ServerWebExchangeTraceableRequestTests {
public void getHeaders() { public void getHeaders() {
HttpHeaders httpHeaders = new HttpHeaders(); HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("name", "value"); httpHeaders.add("name", "value");
doReturn(httpHeaders).when(this.request).getHeaders(); given(this.request.getHeaders()).willReturn(httpHeaders);
ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest( ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest(
this.exchange); this.exchange);
assertThat(traceableRequest.getHeaders()) assertThat(traceableRequest.getHeaders())
@ -80,18 +80,18 @@ public class ServerWebExchangeTraceableRequestTests {
@Test @Test
public void getUnresolvedRemoteAddress() { public void getUnresolvedRemoteAddress() {
InetSocketAddress socketAddress = InetSocketAddress.createUnresolved("", 0); InetSocketAddress socketAddress = InetSocketAddress
doReturn(socketAddress).when(this.request).getRemoteAddress(); .createUnresolved("unresolved.example.com", 8080);
given(this.request.getRemoteAddress()).willReturn(socketAddress);
ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest( ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest(
this.exchange); this.exchange);
assertThat(traceableRequest.getRemoteAddress()).isNull(); assertThat(traceableRequest.getRemoteAddress()).isNull();
} }
@Test @Test
public void getRemoteAddress() { public void getRemoteAddress() {
InetSocketAddress socketAddress = new InetSocketAddress(0); InetSocketAddress socketAddress = new InetSocketAddress(0);
doReturn(socketAddress).when(this.request).getRemoteAddress(); given(this.request.getRemoteAddress()).willReturn(socketAddress);
ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest( ServerWebExchangeTraceableRequest traceableRequest = new ServerWebExchangeTraceableRequest(
this.exchange); this.exchange);
assertThat(traceableRequest.getRemoteAddress()) assertThat(traceableRequest.getRemoteAddress())