|
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