Skip to content

Commit da32873

Browse files
Copilotrujche
andcommitted
Add unit tests for TokenCredential resolution logic
Co-authored-by: rujche <[email protected]>
1 parent 00d65c3 commit da32873

File tree

4 files changed

+129
-2
lines changed

4 files changed

+129
-2
lines changed

sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ EventHubsProcessorFactoryCustomizer defaultEventHubsProcessorFactoryCustomizer(
139139
return new DefaultProcessorFactoryCustomizer(credential, azureTokenCredentialResolver, processorClientBuilderCustomizers);
140140
}
141141

142-
private static TokenCredential resolveTokenCredential(
142+
static TokenCredential resolveTokenCredential(
143143
AzureTokenCredentialResolver azureTokenCredentialResolver,
144144
ObjectProvider<AzureEventHubsProperties> eventHubsProperties,
145145
TokenCredential defaultCredential) {

sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderConfigurationTests.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,70 @@ void processorBuilderCustomizerShouldBeConfiguredToProcessorFactoryCustomizer()
228228
});
229229
}
230230

231+
@Test
232+
@SuppressWarnings("unchecked")
233+
void resolveTokenCredentialReturnsCustomCredentialWhenBeanNameProvided() {
234+
com.azure.core.credential.TokenCredential customCredential = mock(com.azure.core.credential.TokenCredential.class);
235+
com.azure.core.credential.TokenCredential defaultCredential = mock(com.azure.core.credential.TokenCredential.class);
236+
com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver resolver =
237+
mock(com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver.class);
238+
239+
AzureEventHubsProperties properties = new AzureEventHubsProperties();
240+
properties.setNamespace("fake-namespace");
241+
properties.getCredential().setTokenCredentialBeanName("customCredential");
242+
243+
org.springframework.beans.factory.ObjectProvider<AzureEventHubsProperties> propertiesProvider =
244+
mock(org.springframework.beans.factory.ObjectProvider.class);
245+
org.mockito.Mockito.when(propertiesProvider.getIfAvailable()).thenReturn(properties);
246+
org.mockito.Mockito.when(resolver.resolve(properties)).thenReturn(customCredential);
247+
248+
com.azure.core.credential.TokenCredential result =
249+
com.azure.spring.cloud.stream.binder.eventhubs.implementation.config.EventHubsBinderConfiguration
250+
.resolveTokenCredential(resolver, propertiesProvider, defaultCredential);
251+
252+
assertThat(result).isEqualTo(customCredential);
253+
}
254+
255+
@Test
256+
@SuppressWarnings("unchecked")
257+
void resolveTokenCredentialReturnsDefaultWhenNoCustomCredentialResolved() {
258+
com.azure.core.credential.TokenCredential defaultCredential = mock(com.azure.core.credential.TokenCredential.class);
259+
com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver resolver =
260+
mock(com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver.class);
261+
262+
AzureEventHubsProperties properties = new AzureEventHubsProperties();
263+
properties.setNamespace("fake-namespace");
264+
265+
org.springframework.beans.factory.ObjectProvider<AzureEventHubsProperties> propertiesProvider =
266+
mock(org.springframework.beans.factory.ObjectProvider.class);
267+
org.mockito.Mockito.when(propertiesProvider.getIfAvailable()).thenReturn(properties);
268+
org.mockito.Mockito.when(resolver.resolve(properties)).thenReturn(null);
269+
270+
com.azure.core.credential.TokenCredential result =
271+
com.azure.spring.cloud.stream.binder.eventhubs.implementation.config.EventHubsBinderConfiguration
272+
.resolveTokenCredential(resolver, propertiesProvider, defaultCredential);
273+
274+
assertThat(result).isEqualTo(defaultCredential);
275+
}
276+
277+
@Test
278+
@SuppressWarnings("unchecked")
279+
void resolveTokenCredentialReturnsDefaultWhenPropertiesNotAvailable() {
280+
com.azure.core.credential.TokenCredential defaultCredential = mock(com.azure.core.credential.TokenCredential.class);
281+
com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver resolver =
282+
mock(com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver.class);
283+
284+
org.springframework.beans.factory.ObjectProvider<AzureEventHubsProperties> propertiesProvider =
285+
mock(org.springframework.beans.factory.ObjectProvider.class);
286+
org.mockito.Mockito.when(propertiesProvider.getIfAvailable()).thenReturn(null);
287+
288+
com.azure.core.credential.TokenCredential result =
289+
com.azure.spring.cloud.stream.binder.eventhubs.implementation.config.EventHubsBinderConfiguration
290+
.resolveTokenCredential(resolver, propertiesProvider, defaultCredential);
291+
292+
assertThat(result).isEqualTo(defaultCredential);
293+
}
294+
231295
@Configuration
232296
@EnableConfigurationProperties(EventHubsExtendedBindingProperties.class)
233297
static class TestProcessorContainerConfiguration {

sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ ServiceBusProcessorFactoryCustomizer defaultServiceBusProcessorFactoryCustomizer
148148
sessionProcessorClientBuilderCustomizers);
149149
}
150150

151-
private static TokenCredential resolveTokenCredential(
151+
static TokenCredential resolveTokenCredential(
152152
AzureTokenCredentialResolver azureTokenCredentialResolver,
153153
ObjectProvider<AzureServiceBusProperties> serviceBusProperties,
154154
TokenCredential defaultCredential) {

sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderConfigurationTests.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,69 @@ void processorBuilderCustomizerShouldBeConfiguredToProcessorFactoryCustomizer()
200200
});
201201
}
202202

203+
@Test
204+
@SuppressWarnings("unchecked")
205+
void resolveTokenCredentialReturnsCustomCredentialWhenBeanNameProvided() {
206+
com.azure.core.credential.TokenCredential customCredential = mock(com.azure.core.credential.TokenCredential.class);
207+
com.azure.core.credential.TokenCredential defaultCredential = mock(com.azure.core.credential.TokenCredential.class);
208+
com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver resolver =
209+
mock(com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver.class);
210+
211+
com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties properties =
212+
new com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties();
213+
properties.setNamespace("fake-namespace");
214+
properties.getCredential().setTokenCredentialBeanName("customCredential");
215+
216+
org.springframework.beans.factory.ObjectProvider<com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties> propertiesProvider =
217+
mock(org.springframework.beans.factory.ObjectProvider.class);
218+
org.mockito.Mockito.when(propertiesProvider.getIfAvailable()).thenReturn(properties);
219+
org.mockito.Mockito.when(resolver.resolve(properties)).thenReturn(customCredential);
220+
221+
com.azure.core.credential.TokenCredential result =
222+
ServiceBusBinderConfiguration.resolveTokenCredential(resolver, propertiesProvider, defaultCredential);
223+
224+
assertThat(result).isEqualTo(customCredential);
225+
}
226+
227+
@Test
228+
@SuppressWarnings("unchecked")
229+
void resolveTokenCredentialReturnsDefaultWhenNoCustomCredentialResolved() {
230+
com.azure.core.credential.TokenCredential defaultCredential = mock(com.azure.core.credential.TokenCredential.class);
231+
com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver resolver =
232+
mock(com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver.class);
233+
234+
com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties properties =
235+
new com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties();
236+
properties.setNamespace("fake-namespace");
237+
238+
org.springframework.beans.factory.ObjectProvider<com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties> propertiesProvider =
239+
mock(org.springframework.beans.factory.ObjectProvider.class);
240+
org.mockito.Mockito.when(propertiesProvider.getIfAvailable()).thenReturn(properties);
241+
org.mockito.Mockito.when(resolver.resolve(properties)).thenReturn(null);
242+
243+
com.azure.core.credential.TokenCredential result =
244+
ServiceBusBinderConfiguration.resolveTokenCredential(resolver, propertiesProvider, defaultCredential);
245+
246+
assertThat(result).isEqualTo(defaultCredential);
247+
}
248+
249+
@Test
250+
@SuppressWarnings("unchecked")
251+
void resolveTokenCredentialReturnsDefaultWhenPropertiesNotAvailable() {
252+
com.azure.core.credential.TokenCredential defaultCredential = mock(com.azure.core.credential.TokenCredential.class);
253+
com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver resolver =
254+
mock(com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver.class);
255+
256+
org.springframework.beans.factory.ObjectProvider<com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties> propertiesProvider =
257+
mock(org.springframework.beans.factory.ObjectProvider.class);
258+
org.mockito.Mockito.when(propertiesProvider.getIfAvailable()).thenReturn(null);
259+
260+
com.azure.core.credential.TokenCredential result =
261+
ServiceBusBinderConfiguration.resolveTokenCredential(resolver, propertiesProvider, defaultCredential);
262+
263+
assertThat(result).isEqualTo(defaultCredential);
264+
}
265+
203266
private ApplicationContextRunner getCustomizedApplicationContextRunner() {
204267
return this.contextRunner
205268
.withBean(ServiceBusProvisioner.class, () -> mock(ServiceBusProvisioner.class))

0 commit comments

Comments
 (0)