Skip to content

Commit 50c5aa0

Browse files
committed
spring-boot 4 changes for camel-platfrom-http-starter tests - TestRestTemplate has been deprecated in spring-boot 4, need to use RestTestClient
1 parent 9af712d commit 50c5aa0

27 files changed

+356
-105
lines changed

components-starter/camel-platform-http-starter/pom.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@
8282
<version>${rest-assured-version}</version>
8383
<scope>test</scope>
8484
</dependency>
85+
<dependency>
86+
<groupId>org.springframework.boot</groupId>
87+
<artifactId>spring-boot-starter-test</artifactId>
88+
<version>${spring-boot-version}</version>
89+
<scope>test</scope>
90+
</dependency>
8591
<dependency>
8692
<groupId>org.springframework.boot</groupId>
8793
<artifactId>spring-boot-starter-security</artifactId>
@@ -106,6 +112,11 @@
106112
<version>${spring-boot-version}</version>
107113
<scope>test</scope>
108114
</dependency>
115+
<dependency>
116+
<groupId>org.springframework.boot</groupId>
117+
<artifactId>spring-boot-starter-restclient-test</artifactId>
118+
<scope>test</scope>
119+
</dependency>
109120
<dependency>
110121
<groupId>org.springframework.boot</groupId>
111122
<artifactId>spring-boot-webmvc-test</artifactId>
@@ -122,6 +133,11 @@
122133
<groupId>org.springframework</groupId>
123134
<artifactId>spring-aop</artifactId>
124135
</dependency>
136+
<dependency>
137+
<groupId>org.springframework</groupId>
138+
<artifactId>spring-test</artifactId>
139+
<scope>test</scope>
140+
</dependency>
125141
<dependency>
126142
<groupId>org.apache.camel.springboot</groupId>
127143
<artifactId>camel-jackson-starter</artifactId>

components-starter/camel-platform-http-starter/src/main/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpConsumer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ public void addCookie(String cookieName, String cookieValue) {
210210

211211
@Override
212212
public String removeCookie(String cookieName) {
213-
Cookie cookieToRemove = new Cookie(cookieName, null);
213+
Cookie cookieToRemove = new Cookie(cookieName, "");
214214
cookieToRemove.setPath(cookieConfiguration.getCookiePath());
215215
// set max age to 0 to delete the cookie
216216
cookieToRemove.setMaxAge(0);

components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpAsyncRequestHandlingTest.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
import org.junit.jupiter.api.Test;
2424
import org.springframework.beans.factory.annotation.Autowired;
2525
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
26-
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
27-
import org.springframework.boot.security.oauth2.client.autoconfigure.OAuth2ClientAutoConfiguration;
2826
import org.springframework.boot.test.context.SpringBootTest;
2927
import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
3028
import org.springframework.context.annotation.Bean;
3129
import org.springframework.context.annotation.Configuration;
30+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
31+
import org.springframework.security.web.SecurityFilterChain;
3232
import org.springframework.test.web.servlet.MockMvc;
3333
import org.springframework.test.web.servlet.MvcResult;
3434

@@ -39,7 +39,7 @@
3939
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
4040
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
4141

42-
@EnableAutoConfiguration(exclude = {OAuth2ClientAutoConfiguration.class, SecurityAutoConfiguration.class})
42+
@EnableAutoConfiguration
4343
@CamelSpringBootTest
4444
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = { CamelAutoConfiguration.class,
4545
SpringBootPlatformHttpRestDSLTest.class, PlatformHttpAsyncRequestHandlingTest.TestConfiguration.class,
@@ -91,6 +91,14 @@ public void testPostAsync() throws Exception {
9191
@Configuration
9292
public static class TestConfiguration {
9393

94+
@Bean
95+
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
96+
http.authorizeHttpRequests(auth -> auth.anyRequest().permitAll())
97+
.csrf(csrf -> csrf.disable())
98+
.headers(headers -> headers.disable());
99+
return http.build();
100+
}
101+
94102
@Bean
95103
public RouteBuilder servletPlatformHttpRouteBuilder() {
96104
return new RouteBuilder() {

components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpBase.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,20 @@
2222
import org.awaitility.Awaitility;
2323
import org.junit.jupiter.api.Test;
2424
import org.springframework.beans.factory.annotation.Autowired;
25-
import org.springframework.boot.resttestclient.TestRestTemplate;
2625
import org.springframework.http.HttpStatusCode;
26+
import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureRestTestClient;
27+
import org.springframework.test.web.servlet.client.RestTestClient;
28+
import org.springframework.test.web.servlet.client.EntityExchangeResult;
2729

2830
import java.util.concurrent.TimeUnit;
2931

3032
import static org.junit.jupiter.api.Assertions.assertEquals;
3133

34+
@AutoConfigureRestTestClient
3235
abstract class PlatformHttpBase {
3336

3437
@Autowired
35-
TestRestTemplate restTemplate;
38+
RestTestClient restTestClient;
3639

3740
@Autowired
3841
CamelContext camelContext;
@@ -41,14 +44,23 @@ abstract class PlatformHttpBase {
4144
public void testGet() throws Exception {
4245
waitUntilRouteIsStarted(1, getGetRouteId());
4346

44-
Assertions.assertThat(restTemplate.getForEntity("/myget", String.class).getStatusCode()).isEqualTo(HttpStatusCode.valueOf(200));
47+
EntityExchangeResult<String> result = restTestClient.get().uri("/myget")
48+
.exchange()
49+
.expectBody(String.class)
50+
.returnResult();
51+
Assertions.assertThat(result.getStatus()).isEqualTo(HttpStatusCode.valueOf(200));
4552
}
4653

4754
@Test
4855
public void testPost() throws Exception {
4956
waitUntilRouteIsStarted(1, getPostRouteId());
5057

51-
Assertions.assertThat(restTemplate.postForEntity("/mypost", "test", String.class).getBody()).isEqualTo("TEST");
58+
EntityExchangeResult<String> result = restTestClient.post().uri("/mypost")
59+
.body("test")
60+
.exchange()
61+
.expectBody(String.class)
62+
.returnResult();
63+
Assertions.assertThat(result.getResponseBody()).isEqualTo("TEST");
5264
}
5365

5466
protected void waitUntilRouteIsStarted(int atMostSeconds, String routeId) {

components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/PlatformHttpStreamingTest.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
import org.junit.jupiter.api.BeforeEach;
2626
import org.junit.jupiter.api.Test;
2727
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
28-
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
29-
import org.springframework.boot.security.oauth2.client.autoconfigure.OAuth2ClientAutoConfiguration;
3028
import org.springframework.boot.test.context.SpringBootTest;
3129
import org.springframework.boot.test.web.server.LocalServerPort;
3230
import org.springframework.context.annotation.Bean;
3331
import org.springframework.context.annotation.Configuration;
32+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
33+
import org.springframework.security.web.SecurityFilterChain;
3434

3535
import java.io.FileInputStream;
3636
import java.io.FileOutputStream;
@@ -45,7 +45,7 @@
4545
import static org.hamcrest.Matchers.is;
4646
import static org.junit.jupiter.api.Assertions.assertEquals;
4747

48-
@EnableAutoConfiguration(exclude = {OAuth2ClientAutoConfiguration.class, SecurityAutoConfiguration.class})
48+
@EnableAutoConfiguration
4949
@CamelSpringBootTest
5050
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = { CamelAutoConfiguration.class,
5151
SpringBootPlatformHttpTest.class, PlatformHttpStreamingTest.TestConfiguration.class,
@@ -157,6 +157,14 @@ void testStreamingWithSpecificEncoding() throws Exception {
157157

158158
@Configuration
159159
public static class TestConfiguration {
160+
161+
@Bean
162+
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
163+
http.authorizeHttpRequests(auth -> auth.anyRequest().permitAll())
164+
.csrf(csrf -> csrf.disable());
165+
return http.build();
166+
}
167+
160168
@Bean
161169
public RouteBuilder routeBuilder() {
162170
return new RouteBuilder() {

components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpBridgedEndpointTest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,30 @@
2323
import org.apache.camel.spring.boot.CamelAutoConfiguration;
2424
import org.apache.camel.test.spring.junit6.CamelSpringBootTest;
2525
import org.junit.jupiter.api.BeforeEach;
26+
import org.junit.jupiter.api.Disabled;
2627
import org.junit.jupiter.api.Test;
2728
import org.springframework.beans.factory.annotation.Value;
2829
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
29-
import org.springframework.boot.security.oauth2.client.autoconfigure.OAuth2ClientAutoConfiguration;
30-
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
3130
import org.springframework.boot.test.context.SpringBootTest;
3231
import org.springframework.boot.test.web.server.LocalServerPort;
3332
import org.springframework.context.annotation.Bean;
3433
import org.springframework.context.annotation.Configuration;
34+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
35+
import org.springframework.security.web.SecurityFilterChain;
3536
import org.wiremock.spring.ConfigureWireMock;
3637
import org.wiremock.spring.EnableWireMock;
3738

3839
import static com.github.tomakehurst.wiremock.client.WireMock.*;
3940
import static io.restassured.RestAssured.given;
4041
import static org.hamcrest.Matchers.containsString;
4142

42-
@EnableAutoConfiguration(exclude = {OAuth2ClientAutoConfiguration.class, SecurityAutoConfiguration.class})
43+
@EnableAutoConfiguration
4344
@CamelSpringBootTest
4445
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = { CamelAutoConfiguration.class,
4546
SpringBootPlatformHttpBridgedEndpointTest.class, SpringBootPlatformHttpBridgedEndpointTest.TestConfiguration.class,
4647
PlatformHttpComponentAutoConfiguration.class, SpringBootPlatformHttpAutoConfiguration.class, HttpComponentAutoConfiguration.class})
4748
@EnableWireMock(@ConfigureWireMock(portProperties = "customPort"))
49+
@Disabled("WireMock 3.10.6 has Jetty compatibility issues with Spring Boot 4 - requires WireMock upgrade to support Jetty 12")
4850
public class SpringBootPlatformHttpBridgedEndpointTest {
4951

5052
@LocalServerPort
@@ -64,6 +66,13 @@ public static class TestConfiguration {
6466
@Value("${wiremock.server.baseUrl}")
6567
private String wiremockUrl;
6668

69+
@Bean
70+
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
71+
http.authorizeHttpRequests(auth -> auth.anyRequest().permitAll())
72+
.csrf(csrf -> csrf.disable());
73+
return http.build();
74+
}
75+
6776
@Bean
6877
public RouteBuilder springBootPlatformHttpRestDSLRouteBuilder() {
6978
return new RouteBuilder() {

components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpCamelIntegrationsTest.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,27 @@
2626
import org.junit.jupiter.api.Test;
2727
import org.springframework.beans.factory.annotation.Autowired;
2828
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
29-
import org.springframework.boot.resttestclient.TestRestTemplate;
30-
import org.springframework.boot.security.oauth2.client.autoconfigure.OAuth2ClientAutoConfiguration;
31-
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
29+
import org.springframework.test.web.servlet.client.RestTestClient;
3230
import org.springframework.boot.test.context.SpringBootTest;
3331
import org.springframework.boot.test.web.server.LocalServerPort;
3432
import org.springframework.context.annotation.Bean;
3533
import org.springframework.context.annotation.Configuration;
34+
import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureRestTestClient;
35+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
36+
import org.springframework.security.web.SecurityFilterChain;
3637

3738
import static io.restassured.RestAssured.given;
3839

39-
@EnableAutoConfiguration(exclude = {OAuth2ClientAutoConfiguration.class, SecurityAutoConfiguration.class})
40+
@EnableAutoConfiguration
41+
@AutoConfigureRestTestClient
4042
@CamelSpringBootTest
4143
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = { CamelAutoConfiguration.class,
4244
SpringBootPlatformHttpCamelIntegrationsTest.class, SpringBootPlatformHttpCamelIntegrationsTest.TestConfiguration.class,
4345
PlatformHttpComponentAutoConfiguration.class, SpringBootPlatformHttpAutoConfiguration.class, })
4446
public class SpringBootPlatformHttpCamelIntegrationsTest {
4547

4648
@Autowired
47-
TestRestTemplate restTemplate;
49+
RestTestClient restTestClient;
4850

4951
@Autowired
5052
CamelContext camelContext;
@@ -60,6 +62,13 @@ void setUp() {
6062
@Configuration
6163
public static class TestConfiguration {
6264

65+
@Bean
66+
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
67+
http.authorizeHttpRequests(auth -> auth.anyRequest().permitAll())
68+
.csrf(csrf -> csrf.disable());
69+
return http.build();
70+
}
71+
6372
@Bean
6473
public RouteBuilder springBootPlatformHttpRestDSLRouteBuilder() {
6574
return new RouteBuilder() {

components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpCamelVirtualThreadsTest.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@
2323
import org.junit.jupiter.api.condition.DisabledOnJre;
2424
import org.junit.jupiter.api.condition.JRE;
2525
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
26-
import org.springframework.boot.security.oauth2.client.autoconfigure.OAuth2ClientAutoConfiguration;
27-
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
2826
import org.springframework.boot.test.context.SpringBootTest;
2927
import org.springframework.context.annotation.Bean;
3028
import org.springframework.context.annotation.Configuration;
29+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
30+
import org.springframework.security.web.SecurityFilterChain;
3131

3232
import static org.assertj.core.api.Assertions.assertThat;
3333

34-
@EnableAutoConfiguration(exclude = {OAuth2ClientAutoConfiguration.class, SecurityAutoConfiguration.class})
34+
@EnableAutoConfiguration
3535
@CamelSpringBootTest
3636
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = { CamelAutoConfiguration.class,
3737
SpringBootPlatformHttpCamelVirtualThreadsTest.class, SpringBootPlatformHttpCamelVirtualThreadsTest.TestConfiguration.class,
@@ -49,6 +49,13 @@ public class SpringBootPlatformHttpCamelVirtualThreadsTest extends PlatformHttpB
4949
@Configuration
5050
public static class TestConfiguration {
5151

52+
@Bean
53+
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
54+
http.authorizeHttpRequests(auth -> auth.anyRequest().permitAll())
55+
.csrf(csrf -> csrf.disable());
56+
return http.build();
57+
}
58+
5259
@Bean
5360
public RouteBuilder servletPlatformHttpRouteBuilder() {
5461
return new RouteBuilder() {

components-starter/camel-platform-http-starter/src/test/java/org/apache/camel/component/platform/http/springboot/SpringBootPlatformHttpCertificationTest.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,23 @@
5151
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
5252
import org.springframework.beans.factory.annotation.Autowired;
5353
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
54-
import org.springframework.boot.security.oauth2.client.autoconfigure.OAuth2ClientAutoConfiguration;
55-
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
54+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
55+
import org.springframework.security.web.SecurityFilterChain;
56+
import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureRestTestClient;
5657
import org.springframework.boot.test.context.SpringBootTest;
5758
import org.springframework.boot.test.web.server.LocalServerPort;
5859
import org.springframework.context.annotation.Bean;
5960
import org.springframework.context.annotation.Configuration;
61+
import org.springframework.test.web.servlet.client.EntityExchangeResult;
6062

6163
import static io.restassured.RestAssured.given;
6264
import static io.restassured.matcher.RestAssuredMatchers.detailedCookie;
6365
import static org.hamcrest.Matchers.equalTo;
6466
import static org.hamcrest.Matchers.is;
6567
import static org.junit.jupiter.api.Assertions.assertEquals;
6668

67-
@EnableAutoConfiguration(exclude = {OAuth2ClientAutoConfiguration.class, SecurityAutoConfiguration.class})
69+
@EnableAutoConfiguration
70+
@AutoConfigureRestTestClient
6871
@CamelSpringBootTest
6972
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = { CamelAutoConfiguration.class,
7073
SpringBootPlatformHttpCertificationTest.class, SpringBootPlatformHttpCertificationTest.TestConfiguration.class,
@@ -84,6 +87,13 @@ void setUp() {
8487

8588
@Configuration
8689
public static class TestConfiguration {
90+
@Bean
91+
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
92+
http.authorizeHttpRequests(auth -> auth.anyRequest().permitAll())
93+
.csrf(csrf -> csrf.disable());
94+
return http.build();
95+
}
96+
8797

8898
@Bean
8999
public RouteBuilder springBootPlatformHttpRestDSLRouteBuilder() {
@@ -172,9 +182,13 @@ public void testLoad() throws Exception {
172182
ExecutorService es = Executors.newFixedThreadPool(10);
173183
List<CompletableFuture> tasks = new ArrayList();
174184
for (int i = 0; i < 1_000; i++) {
175-
tasks.add(CompletableFuture.runAsync(() ->
176-
Assertions.assertThat(restTemplate.getForEntity("/myget", String.class)
177-
.getStatusCode().value()).isEqualTo(200), es));
185+
tasks.add(CompletableFuture.runAsync(() -> {
186+
EntityExchangeResult<String> result = restTestClient.get().uri("/myget")
187+
.exchange()
188+
.expectBody(String.class)
189+
.returnResult();
190+
Assertions.assertThat(result.getStatus().value()).isEqualTo(200);
191+
}, es));
178192
}
179193
for (CompletableFuture<Void> task : tasks) {
180194
task.get();

0 commit comments

Comments
 (0)