Enhance test to validate HTTP header propagation

This commit is contained in:
Oleg Zhurakousky
2020-04-21 14:13:35 +02:00
parent defd2b962a
commit 4ffb25a3b5

View File

@@ -16,6 +16,8 @@
package org.springframework.cloud.function.test; package org.springframework.cloud.function.test;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import org.junit.AfterClass; import org.junit.AfterClass;
@@ -44,7 +46,7 @@ import static org.assertj.core.api.Assertions.assertThat;
/** /**
* @author Dave Syer * @author Dave Syer
* * @author Oleg Zhurakousky
*/ */
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@FunctionalSpringBootTest(classes = ApplicationConfiguration.class, webEnvironment = WebEnvironment.NONE, properties = { @FunctionalSpringBootTest(classes = ApplicationConfiguration.class, webEnvironment = WebEnvironment.NONE, properties = {
@@ -63,8 +65,11 @@ public class FunctionalExporterTests {
private static ConfigurableApplicationContext context; private static ConfigurableApplicationContext context;
private static Map<String, Object> headers = new HashMap<>();
@BeforeClass @BeforeClass
public static void init() throws Exception { public static void init() throws Exception {
headers.clear();
String port = "" + SocketUtils.findAvailableTcpPort(); String port = "" + SocketUtils.findAvailableTcpPort();
System.setProperty("server.port", port); System.setProperty("server.port", port);
System.setProperty("my.port", port); System.setProperty("my.port", port);
@@ -77,6 +82,7 @@ public class FunctionalExporterTests {
@AfterClass @AfterClass
public static void close() { public static void close() {
headers.clear();
System.clearProperty("server.port"); System.clearProperty("server.port");
if (context != null) { if (context != null) {
context.close(); context.close();
@@ -92,6 +98,8 @@ public class FunctionalExporterTests {
// It completed // It completed
assertThat(FunctionalExporterTests.app.inputs).contains("HELLO"); assertThat(FunctionalExporterTests.app.inputs).contains("HELLO");
assertThat(this.forwarder.isOk()).isTrue(); assertThat(this.forwarder.isOk()).isTrue();
assertThat(headers.containsKey("scf-sink-url"));
assertThat(headers.containsKey("scf-func-name"));
} }
@SpringBootConfiguration @SpringBootConfiguration
@@ -99,8 +107,11 @@ public class FunctionalExporterTests {
implements ApplicationContextInitializer<GenericApplicationContext> { implements ApplicationContextInitializer<GenericApplicationContext> {
Function<Message<Person>, Message<String>> uppercase() { Function<Message<Person>, Message<String>> uppercase() {
return value -> MessageBuilder.withPayload(value.getPayload().getName().toUpperCase()) return value -> {
headers.putAll(value.getHeaders());
return MessageBuilder.withPayload(value.getPayload().getName().toUpperCase())
.copyHeaders(value.getHeaders()).build(); .copyHeaders(value.getHeaders()).build();
};
} }
@Override @Override