|
6 | 6 | import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; |
7 | 7 | import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; |
8 | 8 | import com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties; |
| 9 | +import com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureRedisPasswordlessProperties; |
9 | 10 | import com.azure.spring.cloud.core.implementation.util.AzurePasswordlessPropertiesUtils; |
10 | 11 | import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; |
11 | 12 | import com.azure.identity.extensions.implementation.enums.AuthProperty; |
@@ -158,4 +159,64 @@ void testJdbcPropertiesExplicitScopesOverridesDefault() { |
158 | 159 | assertEquals("https://custom-scope/.default", |
159 | 160 | result.toPasswordlessProperties().getProperty(AuthProperty.SCOPES.getPropertyKey())); |
160 | 161 | } |
| 162 | + |
| 163 | + @Test |
| 164 | + void testRedisPropertiesGetCorrectScopeFromChinaCloudTypeInGlobalProperties() { |
| 165 | + AzureGlobalProperties globalProperties = new AzureGlobalProperties(); |
| 166 | + globalProperties.getProfile().setCloudType(AzureProfileOptionsProvider.CloudType.AZURE_CHINA); |
| 167 | + |
| 168 | + AzureRedisPasswordlessProperties redisProperties = new AzureRedisPasswordlessProperties(); |
| 169 | + // User has not explicitly set scopes |
| 170 | + |
| 171 | + AzureRedisPasswordlessProperties result = new AzureRedisPasswordlessProperties(); |
| 172 | + AzurePasswordlessPropertiesUtils.mergeAzureCommonProperties(globalProperties, redisProperties, result); |
| 173 | + |
| 174 | + // scopes field should be null (not explicitly set) |
| 175 | + assertNull(result.getScopes()); |
| 176 | + // effective scopes should use the merged cloud type (AZURE_CHINA) |
| 177 | + assertEquals("https://*.cacheinfra.windows.net.china:10225/appid/.default", result.getEffectiveScopes()); |
| 178 | + // toPasswordlessProperties should include the correct cloud-type-aware scope |
| 179 | + assertEquals("https://*.cacheinfra.windows.net.china:10225/appid/.default", |
| 180 | + result.toPasswordlessProperties().getProperty(AuthProperty.SCOPES.getPropertyKey())); |
| 181 | + assertEquals(AzureProfileOptionsProvider.CloudType.AZURE_CHINA, result.getProfile().getCloudType()); |
| 182 | + } |
| 183 | + |
| 184 | + @Test |
| 185 | + void testRedisPropertiesGetCorrectScopeFromUsGovCloudTypeInGlobalProperties() { |
| 186 | + AzureGlobalProperties globalProperties = new AzureGlobalProperties(); |
| 187 | + globalProperties.getProfile().setCloudType(AzureProfileOptionsProvider.CloudType.AZURE_US_GOVERNMENT); |
| 188 | + |
| 189 | + AzureRedisPasswordlessProperties redisProperties = new AzureRedisPasswordlessProperties(); |
| 190 | + // User has not explicitly set scopes |
| 191 | + |
| 192 | + AzureRedisPasswordlessProperties result = new AzureRedisPasswordlessProperties(); |
| 193 | + AzurePasswordlessPropertiesUtils.mergeAzureCommonProperties(globalProperties, redisProperties, result); |
| 194 | + |
| 195 | + // scopes field should be null (not explicitly set) |
| 196 | + assertNull(result.getScopes()); |
| 197 | + // effective scopes should use the merged cloud type (AZURE_US_GOVERNMENT) |
| 198 | + assertEquals("https://*.cacheinfra.windows.us.government.net:10225/appid/.default", result.getEffectiveScopes()); |
| 199 | + // toPasswordlessProperties should include the correct cloud-type-aware scope |
| 200 | + assertEquals("https://*.cacheinfra.windows.us.government.net:10225/appid/.default", |
| 201 | + result.toPasswordlessProperties().getProperty(AuthProperty.SCOPES.getPropertyKey())); |
| 202 | + assertEquals(AzureProfileOptionsProvider.CloudType.AZURE_US_GOVERNMENT, result.getProfile().getCloudType()); |
| 203 | + } |
| 204 | + |
| 205 | + @Test |
| 206 | + void testRedisPropertiesExplicitScopesOverridesDefault() { |
| 207 | + AzureGlobalProperties globalProperties = new AzureGlobalProperties(); |
| 208 | + globalProperties.getProfile().setCloudType(AzureProfileOptionsProvider.CloudType.AZURE_CHINA); |
| 209 | + |
| 210 | + AzureRedisPasswordlessProperties redisProperties = new AzureRedisPasswordlessProperties(); |
| 211 | + redisProperties.setScopes("https://custom-redis-scope/.default"); |
| 212 | + |
| 213 | + AzureRedisPasswordlessProperties result = new AzureRedisPasswordlessProperties(); |
| 214 | + AzurePasswordlessPropertiesUtils.mergeAzureCommonProperties(globalProperties, redisProperties, result); |
| 215 | + |
| 216 | + // Explicit scopes should be preserved |
| 217 | + assertEquals("https://custom-redis-scope/.default", result.getScopes()); |
| 218 | + assertEquals("https://custom-redis-scope/.default", result.getEffectiveScopes()); |
| 219 | + assertEquals("https://custom-redis-scope/.default", |
| 220 | + result.toPasswordlessProperties().getProperty(AuthProperty.SCOPES.getPropertyKey())); |
| 221 | + } |
161 | 222 | } |
0 commit comments