|
21 | 21 | import java.util.HashMap;
|
22 | 22 | import java.util.Map;
|
23 | 23 | import java.util.function.Consumer;
|
| 24 | +import java.util.function.Function; |
24 | 25 | import java.util.function.Predicate;
|
25 | 26 |
|
26 | 27 | import org.junit.jupiter.api.BeforeEach;
|
@@ -110,7 +111,7 @@ public void uriBuilderWithUriTemplate() {
|
110 | 111 |
|
111 | 112 | ClientRequest request = verifyAndGetRequest();
|
112 | 113 | assertThat(request.url().toString()).isEqualTo("/base/path/identifier?q=12");
|
113 |
| - assertThat(request.attribute(WebClient.class.getName() + ".uriTemplate")).contains("/path/{id}"); |
| 114 | + assertThat(request.attribute(WebClient.class.getName() + ".uriTemplate")).contains("/base/path/{id}"); |
114 | 115 | }
|
115 | 116 |
|
116 | 117 | @Test
|
@@ -363,6 +364,30 @@ public void withNullAttribute() {
|
363 | 364 | assertThat(request.attribute("foo")).isNotPresent();
|
364 | 365 | }
|
365 | 366 |
|
| 367 | + @Test |
| 368 | + public void uriTemplateAttribute() { |
| 369 | + testUriTemplateAttribute(client -> client.get().uri("/{id}", 1), "/base/{id}"); |
| 370 | + testUriTemplateAttribute(client -> client.get().uri("/{id}", Map.of("id", 1)), "/base/{id}"); |
| 371 | + testUriTemplateAttribute(client -> client.get().uri("/{id}", builder -> builder.build(1)), "/base/{id}"); |
| 372 | + } |
| 373 | + |
| 374 | + private void testUriTemplateAttribute( |
| 375 | + Function<WebClient, WebClient.RequestHeadersSpec<?>> requestFn, String expectedPath) { |
| 376 | + |
| 377 | + Map<String, Object> actual = new HashMap<>(); |
| 378 | + ExchangeFilterFunction filter = (request, next) -> { |
| 379 | + actual.putAll(request.attributes()); |
| 380 | + return next.exchange(request); |
| 381 | + }; |
| 382 | + |
| 383 | + requestFn.apply(this.builder.filter(filter).build()) |
| 384 | + .retrieve().bodyToMono(Void.class) |
| 385 | + .block(Duration.ofSeconds(10)); |
| 386 | + |
| 387 | + String key = WebClient.class.getName() + ".uriTemplate"; |
| 388 | + assertThat(actual.get(key)).isEqualTo(expectedPath); |
| 389 | + } |
| 390 | + |
366 | 391 | @Test
|
367 | 392 | public void apply() {
|
368 | 393 | WebClient client = this.builder
|
|
0 commit comments