parent
5b19f6249e
commit
a024e5985a
|
@ -89,6 +89,8 @@ class DefaultWebTestClient implements WebTestClient {
|
||||||
|
|
||||||
private final @Nullable MultiValueMap<String, String> defaultCookies;
|
private final @Nullable MultiValueMap<String, String> defaultCookies;
|
||||||
|
|
||||||
|
private final @Nullable Object defaultApiVersion;
|
||||||
|
|
||||||
private final @Nullable ApiVersionInserter apiVersionInserter;
|
private final @Nullable ApiVersionInserter apiVersionInserter;
|
||||||
|
|
||||||
private final Consumer<EntityExchangeResult<?>> entityResultConsumer;
|
private final Consumer<EntityExchangeResult<?>> entityResultConsumer;
|
||||||
|
@ -104,7 +106,8 @@ class DefaultWebTestClient implements WebTestClient {
|
||||||
ClientHttpConnector connector, ExchangeStrategies exchangeStrategies,
|
ClientHttpConnector connector, ExchangeStrategies exchangeStrategies,
|
||||||
Function<ClientHttpConnector, ExchangeFunction> exchangeFactory, UriBuilderFactory uriBuilderFactory,
|
Function<ClientHttpConnector, ExchangeFunction> exchangeFactory, UriBuilderFactory uriBuilderFactory,
|
||||||
@Nullable HttpHeaders headers, @Nullable MultiValueMap<String, String> cookies,
|
@Nullable HttpHeaders headers, @Nullable MultiValueMap<String, String> cookies,
|
||||||
@Nullable ApiVersionInserter apiVersionInserter, Consumer<EntityExchangeResult<?>> entityResultConsumer,
|
@Nullable Object defaultApiVersion, @Nullable ApiVersionInserter apiVersionInserter,
|
||||||
|
Consumer<EntityExchangeResult<?>> entityResultConsumer,
|
||||||
@Nullable Duration responseTimeout, DefaultWebTestClientBuilder clientBuilder) {
|
@Nullable Duration responseTimeout, DefaultWebTestClientBuilder clientBuilder) {
|
||||||
|
|
||||||
this.wiretapConnector = new WiretapConnector(connector);
|
this.wiretapConnector = new WiretapConnector(connector);
|
||||||
|
@ -114,6 +117,7 @@ class DefaultWebTestClient implements WebTestClient {
|
||||||
this.uriBuilderFactory = uriBuilderFactory;
|
this.uriBuilderFactory = uriBuilderFactory;
|
||||||
this.defaultHeaders = headers;
|
this.defaultHeaders = headers;
|
||||||
this.defaultCookies = cookies;
|
this.defaultCookies = cookies;
|
||||||
|
this.defaultApiVersion = defaultApiVersion;
|
||||||
this.apiVersionInserter = apiVersionInserter;
|
this.apiVersionInserter = apiVersionInserter;
|
||||||
this.entityResultConsumer = entityResultConsumer;
|
this.entityResultConsumer = entityResultConsumer;
|
||||||
this.responseTimeout = (responseTimeout != null ? responseTimeout : Duration.ofSeconds(5));
|
this.responseTimeout = (responseTimeout != null ? responseTimeout : Duration.ofSeconds(5));
|
||||||
|
@ -386,9 +390,10 @@ class DefaultWebTestClient implements WebTestClient {
|
||||||
if (!this.headers.isEmpty()) {
|
if (!this.headers.isEmpty()) {
|
||||||
headersToUse.putAll(this.headers);
|
headersToUse.putAll(this.headers);
|
||||||
}
|
}
|
||||||
if (this.apiVersion != null) {
|
Object version = getApiVersionOrDefault();
|
||||||
|
if (version != null) {
|
||||||
Assert.state(apiVersionInserter != null, "No ApiVersionInserter configured");
|
Assert.state(apiVersionInserter != null, "No ApiVersionInserter configured");
|
||||||
apiVersionInserter.insertVersion(this.apiVersion, headersToUse);
|
apiVersionInserter.insertVersion(version, headersToUse);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.cookies(cookiesToUse -> {
|
.cookies(cookiesToUse -> {
|
||||||
|
@ -404,13 +409,18 @@ class DefaultWebTestClient implements WebTestClient {
|
||||||
|
|
||||||
private URI initUri() {
|
private URI initUri() {
|
||||||
URI uriToUse = this.uri != null ? this.uri : DefaultWebTestClient.this.uriBuilderFactory.expand("");
|
URI uriToUse = this.uri != null ? this.uri : DefaultWebTestClient.this.uriBuilderFactory.expand("");
|
||||||
if (this.apiVersion != null) {
|
Object version = getApiVersionOrDefault();
|
||||||
|
if (version != null) {
|
||||||
Assert.state(apiVersionInserter != null, "No ApiVersionInserter configured");
|
Assert.state(apiVersionInserter != null, "No ApiVersionInserter configured");
|
||||||
uriToUse = apiVersionInserter.insertVersion(this.apiVersion, uriToUse);
|
uriToUse = apiVersionInserter.insertVersion(version, uriToUse);
|
||||||
}
|
}
|
||||||
return uriToUse;
|
return uriToUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private @Nullable Object getApiVersionOrDefault() {
|
||||||
|
return (this.apiVersion != null ? this.apiVersion : DefaultWebTestClient.this.defaultApiVersion);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,8 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder {
|
||||||
|
|
||||||
private @Nullable MultiValueMap<String, String> defaultCookies;
|
private @Nullable MultiValueMap<String, String> defaultCookies;
|
||||||
|
|
||||||
|
private @Nullable Object defaultApiVersion;
|
||||||
|
|
||||||
private @Nullable ApiVersionInserter apiVersionInserter;
|
private @Nullable ApiVersionInserter apiVersionInserter;
|
||||||
|
|
||||||
private @Nullable List<ExchangeFilterFunction> filters;
|
private @Nullable List<ExchangeFilterFunction> filters;
|
||||||
|
@ -145,6 +147,7 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder {
|
||||||
}
|
}
|
||||||
this.defaultCookies = (other.defaultCookies != null ?
|
this.defaultCookies = (other.defaultCookies != null ?
|
||||||
new LinkedMultiValueMap<>(other.defaultCookies) : null);
|
new LinkedMultiValueMap<>(other.defaultCookies) : null);
|
||||||
|
this.defaultApiVersion = other.defaultApiVersion;
|
||||||
this.apiVersionInserter = other.apiVersionInserter;
|
this.apiVersionInserter = other.apiVersionInserter;
|
||||||
this.filters = (other.filters != null ? new ArrayList<>(other.filters) : null);
|
this.filters = (other.filters != null ? new ArrayList<>(other.filters) : null);
|
||||||
this.entityResultConsumer = other.entityResultConsumer;
|
this.entityResultConsumer = other.entityResultConsumer;
|
||||||
|
@ -204,6 +207,12 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder {
|
||||||
return this.defaultCookies;
|
return this.defaultCookies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WebTestClient.Builder defaultApiVersion(Object version) {
|
||||||
|
this.defaultApiVersion = version;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WebTestClient.Builder apiVersionInserter(ApiVersionInserter apiVersionInserter) {
|
public WebTestClient.Builder apiVersionInserter(ApiVersionInserter apiVersionInserter) {
|
||||||
this.apiVersionInserter = apiVersionInserter;
|
this.apiVersionInserter = apiVersionInserter;
|
||||||
|
@ -297,7 +306,7 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder {
|
||||||
connectorToUse, exchangeStrategies, exchangeFactory, initUriBuilderFactory(),
|
connectorToUse, exchangeStrategies, exchangeFactory, initUriBuilderFactory(),
|
||||||
(this.defaultHeaders != null ? HttpHeaders.readOnlyHttpHeaders(this.defaultHeaders) : null),
|
(this.defaultHeaders != null ? HttpHeaders.readOnlyHttpHeaders(this.defaultHeaders) : null),
|
||||||
(this.defaultCookies != null ? CollectionUtils.unmodifiableMultiValueMap(this.defaultCookies) : null),
|
(this.defaultCookies != null ? CollectionUtils.unmodifiableMultiValueMap(this.defaultCookies) : null),
|
||||||
this.apiVersionInserter, this.entityResultConsumer,
|
this.defaultApiVersion, this.apiVersionInserter, this.entityResultConsumer,
|
||||||
this.responseTimeout, new DefaultWebTestClientBuilder(this));
|
this.responseTimeout, new DefaultWebTestClientBuilder(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -430,6 +430,15 @@ public interface WebTestClient {
|
||||||
*/
|
*/
|
||||||
Builder defaultCookies(Consumer<MultiValueMap<String, String>> cookiesConsumer);
|
Builder defaultCookies(Consumer<MultiValueMap<String, String>> cookiesConsumer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Global option to specify an API version to add to every request,
|
||||||
|
* if not already set.
|
||||||
|
* @param version the version to use
|
||||||
|
* @return this builder
|
||||||
|
* @since 7.0
|
||||||
|
*/
|
||||||
|
Builder defaultApiVersion(Object version);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure an {@link ApiVersionInserter} to abstract how an API version
|
* Configure an {@link ApiVersionInserter} to abstract how an API version
|
||||||
* specified via {@link RequestHeadersSpec#apiVersion(Object)}
|
* specified via {@link RequestHeadersSpec#apiVersion(Object)}
|
||||||
|
|
Loading…
Reference in New Issue