Fix un-ignored test - content-length should not be propagated
This commit is contained in:
@@ -96,8 +96,8 @@ public class FunctionController {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Handled POST with function");
|
||||
}
|
||||
return ResponseEntity.ok().body(
|
||||
debug ? result.log() : response(request, function, single, result));
|
||||
return ResponseEntity.ok()
|
||||
.body(response(request, function, single, result));
|
||||
}
|
||||
|
||||
if (consumer != null) {
|
||||
@@ -157,7 +157,7 @@ public class FunctionController {
|
||||
|
||||
@GetMapping(path = "/**")
|
||||
@ResponseBody
|
||||
public Publisher<?> get(WebRequest request) {
|
||||
public ResponseEntity<Publisher<?>> get(WebRequest request) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Function<Publisher<?>, Publisher<?>> function = (Function<Publisher<?>, Publisher<?>>) request
|
||||
.getAttribute(WebRequestConstants.FUNCTION, WebRequest.SCOPE_REQUEST);
|
||||
@@ -167,10 +167,19 @@ public class FunctionController {
|
||||
String argument = (String) request.getAttribute(WebRequestConstants.ARGUMENT,
|
||||
WebRequest.SCOPE_REQUEST);
|
||||
|
||||
Publisher<?> result;
|
||||
if (function != null) {
|
||||
return value(function, argument);
|
||||
result = value(function, argument);
|
||||
}
|
||||
return response(request, supplier, true, supplier(supplier));
|
||||
else {
|
||||
result = response(request, supplier, true, supplier(supplier));
|
||||
}
|
||||
if (inspector.isMessage(function)) {
|
||||
if (inspector.isMessage(function)) {
|
||||
result = Flux.from(result).map(message -> MessageUtils.unpack(function, message));
|
||||
}
|
||||
}
|
||||
return ResponseEntity.ok().body(result);
|
||||
}
|
||||
|
||||
private Publisher<?> supplier(Supplier<Publisher<?>> supplier) {
|
||||
|
||||
@@ -17,8 +17,10 @@ package org.springframework.cloud.function.web.util;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.messaging.MessageHeaders;
|
||||
@@ -29,12 +31,19 @@ import org.springframework.messaging.MessageHeaders;
|
||||
*/
|
||||
public class HeaderUtils {
|
||||
|
||||
private static HttpHeaders IGNORED = new HttpHeaders();
|
||||
|
||||
static {
|
||||
IGNORED.add(MessageHeaders.ID, "");
|
||||
IGNORED.add(HttpHeaders.CONTENT_LENGTH, "0");
|
||||
}
|
||||
|
||||
public static HttpHeaders fromMessage(MessageHeaders headers, HttpHeaders request) {
|
||||
HttpHeaders result = new HttpHeaders();
|
||||
for (String name : headers.keySet()) {
|
||||
Object value = headers.get(name);
|
||||
name = name.toLowerCase();
|
||||
if (!MessageHeaders.ID.equals(name)) {
|
||||
if (!IGNORED.containsKey(name)) {
|
||||
Collection<?> values = multi(value);
|
||||
for (Object object : values) {
|
||||
result.set(name, object.toString());
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||
@@ -262,7 +263,7 @@ public class RestApplicationTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore("FIXME")
|
||||
// @Ignore("FIXME")
|
||||
public void messages() throws Exception {
|
||||
ResponseEntity<String> result = rest.exchange(RequestEntity
|
||||
.post(new URI("/messages")).contentType(MediaType.APPLICATION_JSON)
|
||||
@@ -349,9 +350,11 @@ public class RestApplicationTests {
|
||||
|
||||
@Test
|
||||
public void singleValuedText() throws Exception {
|
||||
ResponseEntity<String> result = rest.exchange(RequestEntity
|
||||
.post(new URI("/bareUppercase")).contentType(MediaType.TEXT_PLAIN)
|
||||
.body("foo"), String.class);
|
||||
ResponseEntity<String> result = rest
|
||||
.exchange(
|
||||
RequestEntity.post(new URI("/bareUppercase"))
|
||||
.contentType(MediaType.TEXT_PLAIN).body("foo"),
|
||||
String.class);
|
||||
assertThat(result.getBody()).isEqualTo("(FOO)");
|
||||
}
|
||||
|
||||
@@ -471,6 +474,11 @@ public class RestApplicationTests {
|
||||
|
||||
private List<String> list = new ArrayList<>();
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
SpringApplication.run(RestApplicationTests.ApplicationConfiguration.class,
|
||||
args);
|
||||
}
|
||||
|
||||
@Bean({ "uppercase", "transform", "post/more" })
|
||||
public Function<Flux<String>, Flux<String>> uppercase() {
|
||||
return flux -> flux.log()
|
||||
|
||||
Reference in New Issue
Block a user