diff --git a/sdk/communication/azure-communication-callingserver/pom.xml b/sdk/communication/azure-communication-callingserver/pom.xml
index 705e5ecbf9d4..af99ad818866 100644
--- a/sdk/communication/azure-communication-callingserver/pom.xml
+++ b/sdk/communication/azure-communication-callingserver/pom.xml
@@ -40,7 +40,7 @@
src/test
0.70
0.70
- false
+ true
diff --git a/sdk/communication/azure-communication-callingserver/src/main/java/com/azure/communication/callingserver/CallAsyncClient.java b/sdk/communication/azure-communication-callingserver/src/main/java/com/azure/communication/callingserver/CallAsyncClient.java
index 4452f1cc9b07..ae41fd8bf4ed 100644
--- a/sdk/communication/azure-communication-callingserver/src/main/java/com/azure/communication/callingserver/CallAsyncClient.java
+++ b/sdk/communication/azure-communication-callingserver/src/main/java/com/azure/communication/callingserver/CallAsyncClient.java
@@ -420,7 +420,9 @@ private CreateCallRequestInternal createCreateCallRequest(CommunicationIdentifie
for (EventSubscriptionType requestedCallEvent : createCallOptions.getRequestedCallEvents()) {
requestedCallEvents.add(EventSubscriptionTypeModel.fromString(requestedCallEvent.toString()));
}
- PhoneNumberIdentifierModel sourceAlternateIdentity = new PhoneNumberIdentifierModel().setValue(createCallOptions.getAlternateCallerId().getPhoneNumber());
+
+ PhoneNumberIdentifierModel sourceAlternateIdentity = createCallOptions.getAlternateCallerId() == null
+ ? null : new PhoneNumberIdentifierModel().setValue(createCallOptions.getAlternateCallerId().getPhoneNumber());
request.setSource(CommunicationIdentifierConverter.convert(source))
.setTargets(targetsList.stream().map(target -> CommunicationIdentifierConverter.convert(target))
@@ -448,7 +450,12 @@ private CancelMediaOperationsResult convertCancelMediaOperationsResponse(
}
private PlayAudioRequestInternal convertPlayAudioRequest(PlayAudioRequest request) {
- return new PlayAudioRequestInternal().setOperationContext(request.getOperationContext());
+ PlayAudioRequestInternal playAudioRequestInternal = new PlayAudioRequestInternal();
+ playAudioRequestInternal.setAudioFileUri(request.getAudioFileUri());
+ playAudioRequestInternal.setAudioFileId(request.getAudioFileId());
+ playAudioRequestInternal.setLoop(request.isLoop());
+ playAudioRequestInternal.setOperationContext(request.getOperationContext());
+ return playAudioRequestInternal;
}
private CreateCallResult convertCreateCallWithResponse(CreateCallResponse response) {
diff --git a/sdk/communication/azure-communication-callingserver/src/test/java/com/azure/communication/callingserver/CallClientBuilderTests.java b/sdk/communication/azure-communication-callingserver/src/test/java/com/azure/communication/callingserver/CallClientBuilderTests.java
new file mode 100644
index 000000000000..07ecfcd18f1b
--- /dev/null
+++ b/sdk/communication/azure-communication-callingserver/src/test/java/com/azure/communication/callingserver/CallClientBuilderTests.java
@@ -0,0 +1,118 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+package com.azure.communication.callingserver;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.net.MalformedURLException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+
+import com.azure.core.credential.AzureKeyCredential;
+import com.azure.core.http.HttpClient;
+import com.azure.core.http.HttpPipelineBuilder;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.HttpResponse;
+
+import org.junit.jupiter.api.Test;
+
+import reactor.core.publisher.Mono;
+
+public class CallClientBuilderTests {
+ static final String MOCK_URL = "https://REDACTED.communication.azure.com";
+ static final String MOCK_ACCESS_KEY = "eyKfcHciOiJIUzI1NiIsInR5cCI6IkqXVCJ9eyJzdWIiOiIxMjM0NTY5ODkwIiwibmFtZSI7IkpvaGfQSflKxwRJSMeKKF2QT4fwpMeJf36POk6yJVadUs4s5d";
+ static final String MOCK_CONNECTION_STRING = "endpoint=https://REDACTED.communication.azure.com/;accesskey=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaGfQSflKxwRJSMeKKF2QT4fwpMeJf36POk6yJVadQssw5c";
+
+ static class NoOpHttpClient implements HttpClient {
+ @Override
+ public Mono send(HttpRequest request) {
+ return Mono.empty(); // NOP
+ }
+ }
+
+ private final CallClientBuilder builder = new CallClientBuilder();
+
+ @Test
+ public void missingTokenCredentialTest()
+ throws NullPointerException, MalformedURLException, InvalidKeyException, NoSuchAlgorithmException {
+ builder
+ .endpoint(MOCK_URL)
+ .httpClient(new NoOpHttpClient());
+ assertThrows(Exception.class, () -> {
+ builder.buildAsyncClient();
+ });
+ }
+
+ @Test
+ public void missingUrlTest()
+ throws NullPointerException, MalformedURLException {
+ builder
+ .credential(new AzureKeyCredential(MOCK_ACCESS_KEY))
+ .httpClient(new NoOpHttpClient());
+ assertThrows(Exception.class, () -> {
+ builder.buildAsyncClient();
+ });
+ }
+
+ @Test
+ public void nullPipelineTest() {
+ assertThrows(NullPointerException.class, () -> {
+ builder
+ .connectionString(MOCK_CONNECTION_STRING)
+ .httpClient(new NoOpHttpClient())
+ .pipeline(null);
+ });
+ }
+
+ @Test
+ public void nullCustomPolicyTest() {
+ assertThrows(NullPointerException.class, () -> {
+ builder
+ .connectionString(MOCK_CONNECTION_STRING)
+ .httpClient(new NoOpHttpClient())
+ .addPolicy(null);
+ });
+ }
+
+ @Test
+ public void nullConfigurationTest() {
+ assertThrows(NullPointerException.class, () -> {
+ builder
+ .connectionString(MOCK_CONNECTION_STRING)
+ .httpClient(new NoOpHttpClient())
+ .configuration(null);
+ });
+ }
+
+ @Test
+ public void nullHttpLogOptionsTest() {
+ assertThrows(NullPointerException.class, () -> {
+ builder
+ .connectionString(MOCK_CONNECTION_STRING)
+ .httpClient(new NoOpHttpClient())
+ .httpLogOptions(null);
+ });
+ }
+
+ @Test
+ public void nullRetryPolicyTest() {
+ assertThrows(NullPointerException.class, () -> {
+ builder
+ .connectionString(MOCK_CONNECTION_STRING)
+ .httpClient(new NoOpHttpClient())
+ .retryPolicy(null);
+ });
+ }
+
+ @Test
+ public void buildPiplineForClient() {
+ CallAsyncClient callAsyncClient = builder
+ .connectionString(MOCK_CONNECTION_STRING)
+ .httpClient(new NoOpHttpClient())
+ .pipeline(new HttpPipelineBuilder().build())
+ .buildAsyncClient();
+ assertNotNull(callAsyncClient);
+ }
+}
+