Skip to content

Commit d9e20ec

Browse files
committed
unit tests
1 parent 41ef360 commit d9e20ec

File tree

10 files changed

+1082
-5
lines changed

10 files changed

+1082
-5
lines changed

azuremanaged/client/build.gradle

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,12 @@ dependencies {
3838
implementation "com.azure:azure-core:${azureCoreVersion}"
3939
implementation "com.azure:azure-identity:${azureIdentityVersion}"
4040

41-
testImplementation(platform('org.junit:junit-bom:5.7.2'))
42-
testImplementation('org.junit.jupiter:junit-jupiter')
41+
// Test dependencies
42+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0'
43+
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.0'
44+
testImplementation 'org.mockito:mockito-core:5.3.1'
45+
testImplementation 'org.mockito:mockito-junit-jupiter:5.3.1'
46+
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0'
4347
}
4448

4549
compileJava {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
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

Comments
 (0)