1+ package com .microsoft .durabletask .client .azuremanaged ;
2+
3+ import com .azure .core .credential .TokenCredential ;
4+ import com .microsoft .durabletask .DurableTaskGrpcClientBuilder ;
5+ import io .grpc .Channel ;
6+ import org .junit .jupiter .api .DisplayName ;
7+ import org .junit .jupiter .api .Test ;
8+ import org .junit .jupiter .api .extension .ExtendWith ;
9+ import org .mockito .Mock ;
10+ import org .mockito .junit .jupiter .MockitoExtension ;
11+
12+ import static org .junit .jupiter .api .Assertions .*;
13+ import static org .mockito .Mockito .*;
14+
15+ /**
16+ * Unit tests for {@link DurableTaskSchedulerClientExtensions}.
17+ */
18+ @ ExtendWith (MockitoExtension .class )
19+ public class DurableTaskSchedulerClientExtensionsTest {
20+
21+ private static final String VALID_CONNECTION_STRING =
22+ "Endpoint=https://example.com;Authentication=ManagedIdentity;TaskHub=myTaskHub" ;
23+ private static final String VALID_ENDPOINT = "https://example.com" ;
24+ private static final String VALID_TASKHUB = "myTaskHub" ;
25+
26+ @ Mock
27+ private DurableTaskGrpcClientBuilder mockBuilder ;
28+
29+ @ Mock
30+ private TokenCredential mockCredential ;
31+
32+ @ Test
33+ @ DisplayName ("useDurableTaskScheduler with connection string should configure builder correctly" )
34+ public void useDurableTaskScheduler_WithConnectionString_ConfiguresBuilder () {
35+ // Arrange
36+ when (mockBuilder .grpcChannel (any (Channel .class ))).thenReturn (mockBuilder );
37+
38+ // Act
39+ DurableTaskSchedulerClientExtensions .useDurableTaskScheduler (
40+ mockBuilder , VALID_CONNECTION_STRING , mockCredential );
41+
42+ // Assert
43+ verify (mockBuilder ).grpcChannel (any (Channel .class ));
44+ }
45+
46+ @ Test
47+ @ DisplayName ("useDurableTaskScheduler with connection string should throw for null builder" )
48+ public void useDurableTaskScheduler_WithConnectionString_ThrowsForNullBuilder () {
49+ // Act & Assert
50+ assertThrows (NullPointerException .class ,
51+ () -> DurableTaskSchedulerClientExtensions .useDurableTaskScheduler (
52+ null , VALID_CONNECTION_STRING , mockCredential ));
53+ }
54+
55+ @ Test
56+ @ DisplayName ("useDurableTaskScheduler with connection string should throw for null connection string" )
57+ public void useDurableTaskScheduler_WithConnectionString_ThrowsForNullConnectionString () {
58+ // Act & Assert
59+ assertThrows (NullPointerException .class ,
60+ () -> DurableTaskSchedulerClientExtensions .useDurableTaskScheduler (
61+ mockBuilder , null , mockCredential ));
62+ }
63+
64+ @ Test
65+ @ DisplayName ("useDurableTaskScheduler with explicit parameters should configure builder correctly" )
66+ public void useDurableTaskScheduler_WithExplicitParameters_ConfiguresBuilder () {
67+ // Arrange
68+ when (mockBuilder .grpcChannel (any (Channel .class ))).thenReturn (mockBuilder );
69+
70+ // Act
71+ DurableTaskSchedulerClientExtensions .useDurableTaskScheduler (
72+ mockBuilder , VALID_ENDPOINT , VALID_TASKHUB , mockCredential );
73+
74+ // Assert
75+ verify (mockBuilder ).grpcChannel (any (Channel .class ));
76+ }
77+
78+ @ Test
79+ @ DisplayName ("useDurableTaskScheduler with explicit parameters should throw for null builder" )
80+ public void useDurableTaskScheduler_WithExplicitParameters_ThrowsForNullBuilder () {
81+ // Act & Assert
82+ assertThrows (NullPointerException .class ,
83+ () -> DurableTaskSchedulerClientExtensions .useDurableTaskScheduler (
84+ null , VALID_ENDPOINT , VALID_TASKHUB , mockCredential ));
85+ }
86+
87+ @ Test
88+ @ DisplayName ("useDurableTaskScheduler with explicit parameters should throw for null endpoint" )
89+ public void useDurableTaskScheduler_WithExplicitParameters_ThrowsForNullEndpoint () {
90+ // Act & Assert
91+ assertThrows (NullPointerException .class ,
92+ () -> DurableTaskSchedulerClientExtensions .useDurableTaskScheduler (
93+ mockBuilder , null , VALID_TASKHUB , mockCredential ));
94+ }
95+
96+ @ Test
97+ @ DisplayName ("useDurableTaskScheduler with explicit parameters should throw for null task hub name" )
98+ public void useDurableTaskScheduler_WithExplicitParameters_ThrowsForNullTaskHubName () {
99+ // Act & Assert
100+ assertThrows (NullPointerException .class ,
101+ () -> DurableTaskSchedulerClientExtensions .useDurableTaskScheduler (
102+ mockBuilder , VALID_ENDPOINT , null , mockCredential ));
103+ }
104+
105+ @ Test
106+ @ DisplayName ("createClientBuilder with connection string should create valid builder" )
107+ public void createClientBuilder_WithConnectionString_CreatesValidBuilder () {
108+ // Act
109+ DurableTaskGrpcClientBuilder result =
110+ DurableTaskSchedulerClientExtensions .createClientBuilder (VALID_CONNECTION_STRING , mockCredential );
111+
112+ // Assert
113+ assertNotNull (result );
114+ }
115+
116+ @ Test
117+ @ DisplayName ("createClientBuilder with connection string should throw for null connection string" )
118+ public void createClientBuilder_WithConnectionString_ThrowsForNullConnectionString () {
119+ // Act & Assert
120+ assertThrows (NullPointerException .class ,
121+ () -> DurableTaskSchedulerClientExtensions .createClientBuilder (null , mockCredential ));
122+ }
123+
124+ @ Test
125+ @ DisplayName ("createClientBuilder with explicit parameters should create valid builder" )
126+ public void createClientBuilder_WithExplicitParameters_CreatesValidBuilder () {
127+ // Act
128+ DurableTaskGrpcClientBuilder result =
129+ DurableTaskSchedulerClientExtensions .createClientBuilder (
130+ VALID_ENDPOINT , VALID_TASKHUB , mockCredential );
131+
132+ // Assert
133+ assertNotNull (result );
134+ }
135+
136+ @ Test
137+ @ DisplayName ("createClientBuilder with explicit parameters should throw for null endpoint" )
138+ public void createClientBuilder_WithExplicitParameters_ThrowsForNullEndpoint () {
139+ // Act & Assert
140+ assertThrows (NullPointerException .class ,
141+ () -> DurableTaskSchedulerClientExtensions .createClientBuilder (
142+ null , VALID_TASKHUB , mockCredential ));
143+ }
144+
145+ @ Test
146+ @ DisplayName ("createClientBuilder with explicit parameters should throw for null task hub name" )
147+ public void createClientBuilder_WithExplicitParameters_ThrowsForNullTaskHubName () {
148+ // Act & Assert
149+ assertThrows (NullPointerException .class ,
150+ () -> DurableTaskSchedulerClientExtensions .createClientBuilder (
151+ VALID_ENDPOINT , null , mockCredential ));
152+ }
153+ }
0 commit comments