Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ff9c074
[ACC-2461] Update to spring boot v4.0.0
matteo-hlvt Dec 10, 2025
eabf6a9
[ACC-2461] Update imports
matteo-hlvt Dec 10, 2025
05b6c71
[ACC-2461] Update imports
matteo-hlvt Dec 10, 2025
c10727d
[ACC-2461] Update imports
matteo-hlvt Dec 10, 2025
a2d8c82
[ACC-2461] Update imports
matteo-hlvt Dec 10, 2025
4524caf
[ACC-2461] Update imports
matteo-hlvt Dec 10, 2025
8063400
[ACC-2461] Removed commented imports
matteo-hlvt Dec 11, 2025
b849f2b
[ACC-2461] Updated Autoconfigrebean for TestRestTemplate
matteo-hlvt Dec 11, 2025
26ce6f9
[ACC-2461] Switched from TestRestTemplate to RestTestClient
matteo-hlvt Dec 11, 2025
81de589
[ACC-2461] Remove HypermediaMappingInformation.configureObjectMapper …
matteo-hlvt Dec 11, 2025
b33375c
[ACC-2461] HttpHeaders.containsKey got removed, instead use .contains…
matteo-hlvt Dec 11, 2025
110874d
[ACC-2461] Switch to new Testcontainer classes
matteo-hlvt Dec 12, 2025
dd49945
[ACC-2461] Remove throw exception to use new HttpSecurity init signature
matteo-hlvt Dec 12, 2025
03fcd93
[ACC-2461] replace deprecated ServletWebServerFactoryAutoConfiguration
matteo-hlvt Dec 12, 2025
34d5e69
[ACC-2461] adapt MediaTypeConfiguration to align with MockMvc API cha…
matteo-hlvt Dec 12, 2025
1d3721c
[ACC-2461] Update postgresql test containers
matteo-hlvt Dec 15, 2025
c60cebd
[ACC-2461] Update fly way runtime dependecies
matteo-hlvt Dec 15, 2025
a0b695f
[ACC-2461] switch away from deprecated HttpMessageConverters approach
matteo-hlvt Dec 17, 2025
94e8a2e
Revert "[ACC-2461] switch away from deprecated HttpMessageConverters …
matteo-hlvt Dec 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion contentgrid-appserver-actuators/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ dependencies {

api 'org.springframework.boot:spring-boot-starter-actuator'

implementation 'org.springframework.boot:spring-boot-security'
implementation 'org.springframework.security:spring-security-web'
implementation 'org.springframework.security:spring-security-config'
implementation 'jakarta.servlet:jakarta.servlet-api'
implementation 'jakarta.servlet:jakarta.servlet-api' // TODO-m: Check if this can be removed

testImplementation testFixtures(project(':contentgrid-appserver-application-model'))
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-resttestclient'
testImplementation 'org.hamcrest:hamcrest'
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest.EndpointRequestMatcher;
import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest;
import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest.EndpointRequestMatcher;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
import org.springframework.boot.actuate.health.HealthEndpoint;
import org.springframework.boot.health.actuate.endpoint.HealthEndpoint;
import org.springframework.boot.actuate.info.InfoEndpoint;
import org.springframework.boot.actuate.metrics.MetricsEndpoint;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint;
import org.springframework.boot.micrometer.metrics.actuate.endpoint.MetricsEndpoint;
import org.springframework.boot.micrometer.metrics.autoconfigure.export.prometheus.PrometheusScrapeEndpoint;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.test.web.servlet.client.RestTestClient;
import org.springframework.http.MediaType;
import org.springframework.boot.resttestclient.autoconfigure.AutoConfigureRestTestClient;
import org.springframework.http.ResponseEntity;

@SpringBootTest(
Expand All @@ -21,9 +23,10 @@
"management.server.port=0" // random, different port from main port
}
)
@AutoConfigureRestTestClient
public class ContentgridActuatorConfigurationTest {
@Autowired
private TestRestTemplate rest;
private RestTestClient rest;

@Value("${local.management.port}")
int managementPort;
Expand All @@ -40,27 +43,43 @@ void contextLoads() {}

@Test
void healthEndpointIsPublic() {
ResponseEntity<String> resp = rest.getForEntity("http://localhost:" + managementPort + "/actuator/health", String.class);
assertThat(resp.getStatusCode().is2xxSuccessful()).isTrue();
rest.get()
.uri("http://localhost:" + managementPort + "/actuator/health")
.exchange()
.expectStatus().is2xxSuccessful();
}

@Test
void policyEndpointIsPublic() {
ResponseEntity<String> resp = rest.getForEntity("http://localhost:" + managementPort + "/actuator/policy", String.class);
assertThat(resp.getStatusCode().is2xxSuccessful()).isTrue();
assertThat(resp.getHeaders().getContentType())
.hasToString("application/vnd.cncf.openpolicyagent.policy.layer.v1+rego;charset=UTF-8");
assertThat(resp.getBody()).contains("xfb0"); // templating works
rest.get()
.uri("http://localhost:" + managementPort + "/actuator/policy")
.exchange()
.expectStatus().is2xxSuccessful()
.expectHeader()
.contentType(MediaType.parseMediaType(
"application/vnd.cncf.openpolicyagent.policy.layer.v1+rego;charset=UTF-8"))
.expectBody(String.class)
.consumeWith(result -> {
String body = result.getResponseBody();
assertThat(body).contains("xfb0"); // templating works
});
}

@Test
void webhooksEndpointIsPublic() {
ResponseEntity<String> resp = rest.getForEntity("http://localhost:" + managementPort + "/actuator/webhooks", String.class);
assertThat(resp.getStatusCode().is2xxSuccessful()).isTrue();
assertThat(resp.getHeaders().getContentType())
.hasToString("application/vnd.contentgrid.webhooks.v1+json");
// Check application id/deployment id templating
assertThat(resp.getBody()).contains("18-f3");
assertThat(resp.getBody()).contains("a5-94");
rest.get()
.uri("http://localhost:" + managementPort + "/actuator/webhooks")
.exchange()
.expectStatus().is2xxSuccessful()
.expectHeader()
.contentType(MediaType.parseMediaType(
"application/vnd.contentgrid.webhooks.v1+json"))
.expectBody(String.class)
.consumeWith(result -> {
String body = result.getResponseBody();
// Check application id/deployment id templating
assertThat(body).contains("18-f3");
assertThat(body).contains("a5-94");
});
}
}
6 changes: 6 additions & 0 deletions contentgrid-appserver-autoconfigure/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ plugins {

dependencies {
implementation 'org.springframework.boot:spring-boot-autoconfigure'
implementation 'org.springframework.boot:spring-boot-http-converter'
implementation 'org.springframework.boot:spring-boot-flyway'
implementation 'org.springframework.boot:spring-boot-jooq'
implementation 'org.springframework.boot:spring-boot-security'
implementation 'com.contentgrid.thunx:thunx-autoconfigure'
Comment on lines +9 to 13
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So autoconfigurations are moved to new projects? If it is not for the autoconfigurations, it might be compileOnly.


compileOnly project(':contentgrid-appserver-application-model')
Expand Down Expand Up @@ -62,6 +66,8 @@ dependencies {
testImplementation 'com.contentgrid.thunx:thunx-spring-api'
testRuntimeOnly 'org.springframework:spring-webflux'

runtimeOnly 'org.flywaydb:flyway-database-postgresql'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it testRuntimeOnly. Might be even removed if the tests work without.


testImplementation 'io.minio:minio'
testImplementation 'org.springframework.hateoas:spring-hateoas'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration;
import org.springframework.boot.jooq.autoconfigure.JooqAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.context.properties.bind.DefaultValue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import org.flywaydb.database.postgresql.PostgreSQLConfigurationExtension;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.flyway.FlywayConfigurationCustomizer;
import org.springframework.boot.flyway.autoconfigure.FlywayConfigurationCustomizer;
import org.springframework.context.annotation.Bean;

@AutoConfiguration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.jooq.ExceptionTranslatorExecuteListener;
import org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration;
import org.springframework.boot.jooq.autoconfigure.ExceptionTranslatorExecuteListener;
import org.springframework.boot.jooq.autoconfigure.JooqAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.transaction.PlatformTransactionManager;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
public class AnonymousHttpConfigurer extends AbstractHttpConfigurer<AnonymousHttpConfigurer, HttpSecurity> {

@Override
public void init(HttpSecurity http) throws Exception {
public void init(HttpSecurity http) {
ApplicationContext context = http.getSharedObject(ApplicationContext.class);

var disableCsrf = context.getEnvironment().getProperty("contentgrid.security.csrf.disabled", Boolean.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration;
import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
import org.springframework.boot.jooq.autoconfigure.JooqAutoConfiguration;
import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener;
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
import org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration;
import org.springframework.boot.convert.ApplicationConversionService;
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.test.context.FilteredClassLoader;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
import java.time.Duration;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration;
import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
import org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.jooq.autoconfigure.JooqAutoConfiguration;
import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener;
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
import org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration;
import org.springframework.boot.convert.ApplicationConversionService;
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
import com.contentgrid.thunx.api.autoconfigure.AbacContextAutoConfiguration;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration;
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration;
import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
import org.springframework.boot.jdbc.autoconfigure.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.jooq.autoconfigure.JooqAutoConfiguration;
import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener;
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.boot.transaction.autoconfigure.TransactionAutoConfiguration;
import org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration;
import org.springframework.boot.convert.ApplicationConversionService;
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,24 @@
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration;
import org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration;
import org.springframework.boot.health.autoconfigure.actuate.endpoint.HealthEndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
import org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
import org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration;
import org.springframework.boot.micrometer.metrics.autoconfigure.MetricsEndpointAutoConfiguration;
import org.springframework.boot.security.autoconfigure.actuate.web.servlet.ManagementWebSecurityAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration;
import org.springframework.boot.servlet.autoconfigure.actuate.web.ServletManagementContextAutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
import org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration;
import org.springframework.boot.web.server.autoconfigure.servlet.ServletWebServerConfiguration;
import org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration;
import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer;
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
import org.springframework.boot.web.server.context.ServerPortInfoApplicationContextInitializer;
import org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext;
import org.springframework.context.ApplicationContext;
import org.springframework.http.MediaType;
import org.springframework.lang.Nullable;
Expand Down Expand Up @@ -86,7 +86,7 @@ static class AutoConfigs {
static final AutoConfigurations MANAGEMENT = AutoConfigurations.of(
ManagementContextAutoConfiguration.class,
ServletManagementContextAutoConfiguration.class,
ServletWebServerFactoryAutoConfiguration.class,
ServletWebServerConfiguration.class,
DispatcherServletAutoConfiguration.class
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener;
import org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.boot.security.oauth2.server.resource.autoconfigure.servlet.OAuth2ResourceServerAutoConfiguration;
import org.springframework.boot.security.autoconfigure.SecurityAutoConfiguration;
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
Expand Down
1 change: 1 addition & 0 deletions contentgrid-appserver-events/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@ dependencies {
testImplementation project(':contentgrid-appserver-rest')
testImplementation testFixtures(project(':contentgrid-appserver-application-model'))
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
Expand Down
5 changes: 3 additions & 2 deletions contentgrid-appserver-integration-test/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ dependencies {
testFixturesImplementation project(':contentgrid-appserver-spring-boot-starter')
testFixturesImplementation 'org.springframework.boot:spring-boot-starter-test'
testFixturesImplementation 'org.springframework.boot:spring-boot-testcontainers'
testFixturesImplementation 'org.testcontainers:postgresql'
testFixturesImplementation 'org.testcontainers:rabbitmq'
testFixturesImplementation 'org.testcontainers:testcontainers-postgresql'
testFixturesImplementation 'org.testcontainers:testcontainers-rabbitmq'
testFixturesRuntimeOnly 'org.junit.platform:junit-platform-launcher'

testFixturesRuntimeOnly 'org.postgresql:postgresql'
Expand All @@ -22,6 +22,7 @@ dependencies {

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
testImplementation 'org.springframework.hateoas:spring-hateoas'
testImplementation 'org.springframework.security:spring-security-oauth2-jose'
testImplementation 'org.springframework.security:spring-security-test'
Expand Down
Loading
Loading