Skip to content

Commit d65f5d4

Browse files
committed
Expose MockMvc in API
Fixes gh-31275 Signed-off-by: Rob Worsnop <[email protected]>
1 parent 926016c commit d65f5d4

19 files changed

+159
-927
lines changed

spring-test/src/main/java/org/springframework/test/web/servlet/client/AbstractMockServerSpec.java

Lines changed: 0 additions & 104 deletions
This file was deleted.

spring-test/src/main/java/org/springframework/test/web/servlet/client/ApplicationContextMockSpec.java

Lines changed: 0 additions & 40 deletions
This file was deleted.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Copyright 2002-present the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.test.web.servlet.client;
18+
19+
import java.util.function.Consumer;
20+
21+
import org.springframework.test.web.servlet.MockMvcBuilder;
22+
23+
/**
24+
* Default implementation of {@link RestTestClient.MockServerBuilder}.
25+
* @author Rob Worsnop
26+
* @param <M> the type of the {@link MockMvcBuilder} to use for building the mock server
27+
*/
28+
class DefaultMockServerBuilder<M extends MockMvcBuilder>
29+
extends DefaultRestTestClientBuilder<RestTestClient.MockServerBuilder<M>>
30+
implements RestTestClient.MockServerBuilder<M> {
31+
32+
private final M builder;
33+
34+
public DefaultMockServerBuilder(M builder) {
35+
this.builder = builder;
36+
}
37+
38+
@Override
39+
public RestTestClient.MockServerBuilder<M> configureServer(Consumer<M> consumer) {
40+
consumer.accept(this.builder);
41+
return this;
42+
}
43+
44+
@Override
45+
public RestTestClient build() {
46+
this.restClientBuilder.requestFactory(new MockMvcClientHttpRequestFactory(this.builder.build()));
47+
return super.build();
48+
}
49+
}

spring-test/src/main/java/org/springframework/test/web/servlet/client/DefaultRestTestClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ public RequestBodyUriSpec method(HttpMethod method) {
105105
}
106106

107107
@Override
108-
public Builder mutate() {
109-
return new DefaultRestTestClientBuilder(this.restClientBuilder);
108+
public <B extends Builder<B>> Builder<B> mutate() {
109+
return new DefaultRestTestClientBuilder<>(this.restClientBuilder);
110110
}
111111

112112
private RequestBodyUriSpec methodInternal(HttpMethod httpMethod) {

spring-test/src/main/java/org/springframework/test/web/servlet/client/DefaultRestTestClientBuilder.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525

2626
/**
2727
* Default implementation of {@link RestTestClient.Builder}.
28-
*
2928
* @author Rob Worsnop
29+
* @param <B> the type of the builder
3030
*/
31-
class DefaultRestTestClientBuilder implements RestTestClient.Builder {
31+
class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implements RestTestClient.Builder<B> {
3232

33-
private final RestClient.Builder restClientBuilder;
33+
protected final RestClient.Builder restClientBuilder;
3434

3535
DefaultRestTestClientBuilder() {
3636
this.restClientBuilder = RestClient.builder();
@@ -41,43 +41,43 @@ class DefaultRestTestClientBuilder implements RestTestClient.Builder {
4141
}
4242

4343
@Override
44-
public RestTestClient.Builder apply(Consumer<RestTestClient.Builder> builderConsumer) {
44+
public RestTestClient.Builder<B> apply(Consumer<RestTestClient.Builder<B>> builderConsumer) {
4545
builderConsumer.accept(this);
4646
return this;
4747
}
4848

4949
@Override
50-
public RestTestClient.Builder baseUrl(String baseUrl) {
50+
public RestTestClient.Builder<B> baseUrl(String baseUrl) {
5151
this.restClientBuilder.baseUrl(baseUrl);
5252
return this;
5353
}
5454

5555
@Override
56-
public RestTestClient.Builder defaultCookie(String cookieName, String... cookieValues) {
56+
public RestTestClient.Builder<B> defaultCookie(String cookieName, String... cookieValues) {
5757
this.restClientBuilder.defaultCookie(cookieName, cookieValues);
5858
return this;
5959
}
6060

6161
@Override
62-
public RestTestClient.Builder defaultCookies(Consumer<MultiValueMap<String, String>> cookiesConsumer) {
62+
public RestTestClient.Builder<B> defaultCookies(Consumer<MultiValueMap<String, String>> cookiesConsumer) {
6363
this.restClientBuilder.defaultCookies(cookiesConsumer);
6464
return this;
6565
}
6666

6767
@Override
68-
public RestTestClient.Builder defaultHeader(String headerName, String... headerValues) {
68+
public RestTestClient.Builder<B> defaultHeader(String headerName, String... headerValues) {
6969
this.restClientBuilder.defaultHeader(headerName, headerValues);
7070
return this;
7171
}
7272

7373
@Override
74-
public RestTestClient.Builder defaultHeaders(Consumer<HttpHeaders> headersConsumer) {
74+
public RestTestClient.Builder<B> defaultHeaders(Consumer<HttpHeaders> headersConsumer) {
7575
this.restClientBuilder.defaultHeaders(headersConsumer);
7676
return this;
7777
}
7878

7979
@Override
80-
public RestTestClient.Builder uriBuilderFactory(UriBuilderFactory uriFactory) {
80+
public RestTestClient.Builder<B> uriBuilderFactory(UriBuilderFactory uriFactory) {
8181
this.restClientBuilder.uriBuilderFactory(uriFactory);
8282
return this;
8383
}

0 commit comments

Comments
 (0)