From d4762eca22a0e2530454f87416063b76e9486728 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 16 Aug 2024 13:24:22 +0100 Subject: [PATCH] Auto-configure SBOM endpoint web extension when only exposed on CF Fixes gh-41890 --- .../sbom/SbomEndpointAutoConfiguration.java | 2 +- .../sbom/SbomEndpointAutoConfigurationTests.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/sbom/SbomEndpointAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/sbom/SbomEndpointAutoConfiguration.java index caafaffb17f..4280b1cf7ef 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/sbom/SbomEndpointAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/sbom/SbomEndpointAutoConfiguration.java @@ -55,7 +55,7 @@ public class SbomEndpointAutoConfiguration { @Bean @ConditionalOnMissingBean @ConditionalOnBean(SbomEndpoint.class) - @ConditionalOnAvailableEndpoint(exposure = EndpointExposure.WEB) + @ConditionalOnAvailableEndpoint(exposure = { EndpointExposure.WEB, EndpointExposure.CLOUD_FOUNDRY }) SbomEndpointWebExtension sbomEndpointWebExtension(SbomEndpoint sbomEndpoint) { return new SbomEndpointWebExtension(sbomEndpoint, this.properties); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/sbom/SbomEndpointAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/sbom/SbomEndpointAutoConfigurationTests.java index 4352ec61c8b..5e72c126d0f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/sbom/SbomEndpointAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/sbom/SbomEndpointAutoConfigurationTests.java @@ -36,9 +36,19 @@ class SbomEndpointAutoConfigurationTests { .withConfiguration(AutoConfigurations.of(SbomEndpointAutoConfiguration.class)); @Test - void runShouldHaveEndpointBean() { + void runWhenWebExposedShouldHaveEndpointBeanAndWebExtension() { this.contextRunner.withPropertyValues("management.endpoints.web.exposure.include=sbom") - .run((context) -> assertThat(context).hasSingleBean(SbomEndpoint.class)); + .run((context) -> assertThat(context).hasSingleBean(SbomEndpoint.class) + .hasSingleBean(SbomEndpointWebExtension.class)); + } + + @Test + void runWhenCloudFoundryExposedShouldHaveEndpointBeanAndWebExtension() { + this.contextRunner + .withPropertyValues("management.endpoints.cloud-foundry.exposure.include=sbom", + "spring.main.cloud-platform=cloud_foundry") + .run((context) -> assertThat(context).hasSingleBean(SbomEndpoint.class) + .hasSingleBean(SbomEndpointWebExtension.class)); } @Test