WebTestClient.mutate() should not impact future .mutate() invocations

Issue: SPR-16059
This commit is contained in:
Arjen Poutsma
2017-10-13 16:54:30 +02:00
parent 6e71664a60
commit 24ca8ccf5a
3 changed files with 45 additions and 8 deletions

View File

@@ -24,6 +24,7 @@ import org.springframework.http.ResponseCookie;
import org.springframework.web.server.WebHandler;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.*;
/**
* Mock server integration test scenarios.
@@ -68,4 +69,39 @@ public class MockServerIntegrationTests {
.expectBody(String.class).isEqualTo("bar");
}
@Test
public void mutateDoesCopy() throws Exception {
WebTestClient.Builder builder = WebTestClient.bindToWebHandler(exchange -> exchange.getResponse().setComplete()).configureClient();
builder.filter((request, next) -> next.exchange(request));
builder.defaultHeader("foo", "bar");
builder.defaultCookie("foo", "bar");
WebTestClient client1 = builder.build();
builder.filter((request, next) -> next.exchange(request));
builder.defaultHeader("baz", "qux");
builder.defaultCookie("baz", "qux");
WebTestClient client2 = builder.build();
WebTestClient.Builder mutatedBuilder = client1.mutate();
mutatedBuilder.filter((request, next) -> next.exchange(request));
mutatedBuilder.defaultHeader("baz", "qux");
mutatedBuilder.defaultCookie("baz", "qux");
WebTestClient clientFromMutatedBuilder = mutatedBuilder.build();
client1.mutate().filters(filters -> assertEquals(1, filters.size()));
client1.mutate().defaultHeaders(headers -> assertEquals(1, headers.size()));
client1.mutate().defaultCookies(cookies -> assertEquals(1, cookies.size()));
client2.mutate().filters(filters -> assertEquals(2, filters.size()));
client2.mutate().defaultHeaders(headers -> assertEquals(2, headers.size()));
client2.mutate().defaultCookies(cookies -> assertEquals(2, cookies.size()));
clientFromMutatedBuilder.mutate().filters(filters -> assertEquals(2, filters.size()));
clientFromMutatedBuilder.mutate().defaultHeaders(headers -> assertEquals(2, headers.size()));
clientFromMutatedBuilder.mutate().defaultCookies(cookies -> assertEquals(2, cookies.size()));
}
}