diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java index ff7b68048781..674a8ff490c4 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/cloud/CloudPlatform.java @@ -16,6 +16,9 @@ package org.springframework.boot.cloud; +import java.util.Arrays; +import java.util.List; + import org.springframework.boot.context.properties.bind.Binder; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.EnumerablePropertySource; @@ -138,19 +141,12 @@ private boolean isAutoDetected(EnumerablePropertySource environmentPropertySo */ AZURE_APP_SERVICE { - private static final String WEBSITE_SITE_NAME = "WEBSITE_SITE_NAME"; - - private static final String WEBSITE_INSTANCE_ID = "WEBSITE_INSTANCE_ID"; - - private static final String WEBSITE_RESOURCE_GROUP = "WEBSITE_RESOURCE_GROUP"; - - private static final String WEBSITE_SKU = "WEBSITE_SKU"; + private final List azureEnvVariables = Arrays.asList("WEBSITE_SITE_NAME", "WEBSITE_INSTANCE_ID", + "WEBSITE_RESOURCE_GROUP", "WEBSITE_SKU"); @Override public boolean isDetected(Environment environment) { - return environment.containsProperty(WEBSITE_SITE_NAME) && environment.containsProperty(WEBSITE_INSTANCE_ID) - && environment.containsProperty(WEBSITE_RESOURCE_GROUP) - && environment.containsProperty(WEBSITE_SKU); + return this.azureEnvVariables.stream().allMatch(environment::containsProperty); } }; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java index b00ee15c5857..884057e21f68 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/cloud/CloudPlatformTests.java @@ -133,7 +133,7 @@ void getActiveWhenHasServiceHostAndNoServicePortShouldNotReturnKubernetes() { } @Test - void getActiveWhenHasWebsiteSiteNameAndWebsitesEnableAppServiceStorageShouldReturnAzureAppService() { + void getActiveWhenHasAllAzureEnvVariablesShouldReturnAzureAppService() { Map envVars = new HashMap<>(); envVars.put("WEBSITE_SITE_NAME", "---"); envVars.put("WEBSITE_INSTANCE_ID", "1234"); @@ -146,16 +146,45 @@ void getActiveWhenHasWebsiteSiteNameAndWebsitesEnableAppServiceStorageShouldRetu } @Test - void getActiveWhenHasWebsiteSiteNameAndNoWebsitesEnableAppServiceStorageShouldNotReturnAzureAppService() { - Environment environment = getEnvironmentWithEnvVariables(Collections.singletonMap("WEBSITE_SITE_NAME", "---")); + void getActiveWhenHasMissingWebsiteSiteNameShouldNotReturnAzureAppService() { + Map envVars = new HashMap<>(); + envVars.put("WEBSITE_INSTANCE_ID", "1234"); + envVars.put("WEBSITE_RESOURCE_GROUP", "test"); + envVars.put("WEBSITE_SKU", "1234"); + Environment environment = getEnvironmentWithEnvVariables(envVars); CloudPlatform platform = CloudPlatform.getActive(environment); assertThat(platform).isNull(); } @Test - void getActiveWhenHasWebsitesEnableAppServiceStorageAndNoWebsiteSiteNameShouldNotReturnAzureAppService() { - Environment environment = getEnvironmentWithEnvVariables( - Collections.singletonMap("WEBSITES_ENABLE_APP_SERVICE_STORAGE", "false")); + void getActiveWhenHasMissingWebsiteInstanceIdShouldNotReturnAzureAppService() { + Map envVars = new HashMap<>(); + envVars.put("WEBSITE_SITE_NAME", "---"); + envVars.put("WEBSITE_RESOURCE_GROUP", "test"); + envVars.put("WEBSITE_SKU", "1234"); + Environment environment = getEnvironmentWithEnvVariables(envVars); + CloudPlatform platform = CloudPlatform.getActive(environment); + assertThat(platform).isNull(); + } + + @Test + void getActiveWhenHasMissingWebsiteResourceGroupShouldNotReturnAzureAppService() { + Map envVars = new HashMap<>(); + envVars.put("WEBSITE_SITE_NAME", "---"); + envVars.put("WEBSITE_INSTANCE_ID", "1234"); + envVars.put("WEBSITE_SKU", "1234"); + Environment environment = getEnvironmentWithEnvVariables(envVars); + CloudPlatform platform = CloudPlatform.getActive(environment); + assertThat(platform).isNull(); + } + + @Test + void getActiveWhenHasMissingWebsiteSkuShouldNotReturnAzureAppService() { + Map envVars = new HashMap<>(); + envVars.put("WEBSITE_SITE_NAME", "---"); + envVars.put("WEBSITE_INSTANCE_ID", "1234"); + envVars.put("WEBSITE_RESOURCE_GROUP", "test"); + Environment environment = getEnvironmentWithEnvVariables(envVars); CloudPlatform platform = CloudPlatform.getActive(environment); assertThat(platform).isNull(); }