Refactor DefaultApiVersionInserter

This commit is contained in:
rstoyanchev
2025-05-06 20:36:56 +01:00
parent 22e7f24731
commit e5d4d7c13c
6 changed files with 179 additions and 121 deletions

View File

@@ -59,45 +59,45 @@ public class RestClientVersionTests {
@Test
void header() {
performRequest(DefaultApiVersionInserter.fromHeader("X-API-Version"));
performRequest(ApiVersionInserter.fromHeader("X-API-Version"));
expectRequest(request -> assertThat(request.getHeader("X-API-Version")).isEqualTo("1.2"));
}
@Test
void queryParam() {
performRequest(DefaultApiVersionInserter.fromQueryParam("api-version"));
performRequest(ApiVersionInserter.fromQueryParam("api-version"));
expectRequest(request -> assertThat(request.getPath()).isEqualTo("/path?api-version=1.2"));
}
@Test
void pathSegmentIndexLessThanSize() {
performRequest(DefaultApiVersionInserter.fromPathSegment(0).withVersionFormatter(v -> "v" + v));
performRequest(ApiVersionInserter.fromPathSegment(0).withVersionFormatter(v -> "v" + v));
expectRequest(request -> assertThat(request.getPath()).isEqualTo("/v1.2/path"));
}
@Test
void pathSegmentIndexEqualToSize() {
performRequest(DefaultApiVersionInserter.fromPathSegment(1).withVersionFormatter(v -> "v" + v));
performRequest(ApiVersionInserter.fromPathSegment(1).withVersionFormatter(v -> "v" + v));
expectRequest(request -> assertThat(request.getPath()).isEqualTo("/path/v1.2"));
}
@Test
void pathSegmentIndexGreaterThanSize() {
assertThatIllegalStateException()
.isThrownBy(() -> performRequest(DefaultApiVersionInserter.fromPathSegment(2)))
.isThrownBy(() -> performRequest(ApiVersionInserter.fromPathSegment(2)))
.withMessage("Cannot insert version into '/path' at path segment index 2");
}
@Test
void defaultVersion() {
ApiVersionInserter inserter = DefaultApiVersionInserter.fromHeader("X-API-Version").build();
ApiVersionInserter inserter = ApiVersionInserter.fromHeader("X-API-Version").build();
RestClient restClient = restClientBuilder.defaultApiVersion(1.2).apiVersionInserter(inserter).build();
restClient.get().uri("/path").retrieve().body(String.class);
expectRequest(request -> assertThat(request.getHeader("X-API-Version")).isEqualTo("1.2"));
}
private void performRequest(DefaultApiVersionInserter.Builder builder) {
private void performRequest(ApiVersionInserter.Builder builder) {
ApiVersionInserter versionInserter = builder.build();
RestClient restClient = restClientBuilder.apiVersionInserter(versionInserter).build();

View File

@@ -49,7 +49,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.client.DefaultApiVersionInserter;
import org.springframework.web.client.ApiVersionInserter;
import org.springframework.web.client.RestClient;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
@@ -274,7 +274,7 @@ class RestClientAdapterTests {
void apiVersion() throws Exception {
RestClient restClient = RestClient.builder()
.baseUrl(anotherServer.url("/").toString())
.apiVersionInserter(DefaultApiVersionInserter.fromHeader("X-API-Version").build())
.apiVersionInserter(ApiVersionInserter.fromHeader("X-API-Version").build())
.build();
RestClientAdapter adapter = RestClientAdapter.create(restClient);