Merge branch '2.2.x'

This commit is contained in:
spencergibb
2021-03-12 15:39:35 -05:00
3 changed files with 44 additions and 3 deletions

View File

@@ -37,7 +37,9 @@ public class AddRequestHeaderGatewayFilterFactory extends AbstractNameValueGatew
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
String value = ServerWebExchangeUtils.expand(exchange, config.getValue());
ServerHttpRequest request = exchange.getRequest().mutate().header(config.getName(), value).build();
ServerHttpRequest request = exchange.getRequest().mutate()
.headers(httpHeaders -> httpHeaders.add(config.getName(), value))
.build();
return chain.filter(exchange.mutate().request(request).build());
}

View File

@@ -16,6 +16,7 @@
package org.springframework.cloud.gateway.filter.factory;
import java.util.Arrays;
import java.util.Map;
import org.junit.Test;
@@ -59,6 +60,18 @@ public class AddRequestHeaderGatewayFilterFactoryTests extends BaseWebClientTest
});
}
@Test
public void addRequestHeaderFilterWorksMultipleValues() {
testClient.get().uri("/multivalueheaders")
.header("Host", "www.addrequestheader.org").exchange()
.expectBody(Map.class).consumeWith(result -> {
Map<String, Object> headers = getMap(result.getResponseBody(),
"headers");
assertThat(headers).containsEntry("X-Request-Example",
Arrays.asList("ValueA", "ValueB"));
});
}
@Test
public void addRequestHeaderFilterWorksJavaDsl() {
testClient.get().uri("/headers").header("Host", "www.addrequestheaderjava.org").exchange().expectBody(Map.class)
@@ -68,6 +81,18 @@ public class AddRequestHeaderGatewayFilterFactoryTests extends BaseWebClientTest
});
}
@Test
public void addRequestHeaderFilterMultipleValuesWorksJavaDsl() {
testClient.get().uri("/multivalueheaders")
.header("Host", "www.addrequestheaderjava.org").exchange()
.expectBody(Map.class).consumeWith(result -> {
Map<String, Object> headers = getMap(result.getResponseBody(),
"headers");
assertThat(headers).containsEntry("X-Request-Acme",
Arrays.asList("ValueB-www", "ValueC-www"));
});
}
@Test
public void toStringFormat() {
NameValueConfig config = new NameValueConfig().setName("myname").setValue("myvalue");
@@ -89,6 +114,13 @@ public class AddRequestHeaderGatewayFilterFactoryTests extends BaseWebClientTest
r -> r.path("/headers").and().host("{sub}.addrequestheaderjava.org")
.filters(f -> f.prefixPath("/httpbin").addRequestHeader("X-Request-Acme", "ValueB-{sub}"))
.uri(uri))
.route("add_multiple_request_header_java_test", r -> r
.path("/multivalueheaders").and()
.host("{sub}.addrequestheaderjava.org")
.filters(f -> f.prefixPath("/httpbin")
.addRequestHeader("X-Request-Acme", "ValueB-{sub}")
.addRequestHeader("X-Request-Acme", "ValueC-{sub}"))
.uri(uri))
.build();
}

View File

@@ -5,6 +5,13 @@ spring:
- id: add_request_header_test
uri: ${test.uri}
predicates:
- Path=/headers
- Path=/headers
filters:
- AddRequestHeader=X-Request-Example, ValueA
- AddRequestHeader=X-Request-Example, ValueA
- id: add_multiple_request_header_test
uri: ${test.uri}
predicates:
- Path=/multivalueheaders
filters:
- AddRequestHeader=X-Request-Example, ValueA
- AddRequestHeader=X-Request-Example, ValueB