public async Task CreatePhoneNumberWithTokenCredential() { var endpoint = ConnectionString.Parse(TestEnvironment.ConnectionString, allowEmptyValues: true).GetRequired("endpoint"); #region Snippet:CreatePhoneNumberWithTokenCredential //@@var endpoint = "<endpoint_url>"; TokenCredential tokenCredential = new DefaultAzureCredential(); var client = new PhoneNumberAdministrationClient(new Uri(endpoint), tokenCredential); #endregion Snippet:CreatePhoneNumberWithTokenCredential tokenCredential = (Mode == RecordedTestMode.Playback) ? new MockCredential() : new DefaultAzureCredential(); client = CreateClientWithTokenCredential(tokenCredential); try { // Smoke test to ensure that client generated from token is able to work as expected. var numbersPagable = client.GetAllPhoneNumbersAsync(); var numbers = await numbersPagable.ToEnumerableAsync(); Assert.IsNotNull(numbers); } catch (Exception ex) { Assert.Fail($"Unexpected error: {ex}"); } }
/// <summary> /// Creates a <see cref="PhoneNumberAdministrationClient" /> with the connectionstring via environment /// variables and instruments it to make use of the Azure Core Test Framework functionalities. /// </summary> /// <returns>The instrumented <see cref="PhoneNumberAdministrationClient" />.</returns> protected PhoneNumberAdministrationClient CreateClient(bool isInstrumented = true) { var client = new PhoneNumberAdministrationClient( TestEnvironment.ConnectionString, InstrumentClientOptions(new PhoneNumberAdministrationClientOptions())); return(isInstrumented ? InstrumentClient(client) : client); }
/// <summary> /// Creates a <see cref="PhoneNumberAdministrationClient" /> with the token credential /// and instruments it to make use of the Azure Core Test Framework functionalities. /// </summary> /// <returns>The instrumented <see cref="PhoneNumberAdministrationClient" />.</returns> protected PhoneNumberAdministrationClient CreateClientWithTokenCredential(TokenCredential token, bool isInstrumented = true) { var client = new PhoneNumberAdministrationClient( new Uri(ConnectionString.Parse(TestEnvironment.ConnectionString, allowEmptyValues: true).GetRequired("endpoint")), token, InstrumentClientOptions(new PhoneNumberAdministrationClientOptions())); return(isInstrumented ? InstrumentClient(client) : client); }
/// <summary> /// Creates a <see cref="PhoneNumberAdministrationClient" /> with the token credential /// and instruments it to make use of the Azure Core Test Framework functionalities. /// </summary> /// <returns>The instrumented <see cref="PhoneNumberAdministrationClient" />.</returns> protected PhoneNumberAdministrationClient CreateClientWithTokenCredential(TokenCredential token, bool isInstrumented = true) { var client = new PhoneNumberAdministrationClient( TestEnvironment.Endpoint, token, InstrumentClientOptions(new PhoneNumberAdministrationClientOptions())); return(isInstrumented ? InstrumentClient(client) : client); }
/// <summary> /// Creates a <see cref="PhoneNumberAdministrationClient" /> with the connectionstring via environment /// variables and instruments it to make use of the Azure Core Test Framework functionalities. /// </summary> /// <returns>The instrumented <see cref="PhoneNumberAdministrationClient" />.</returns> protected PhoneNumberAdministrationClient CreateClient(bool isInstrumented = true) { var client = new PhoneNumberAdministrationClient( TestEnvironment.ConnectionString, InstrumentClientOptions(new PhoneNumberAdministrationClientOptions())); // We always create the instrumented client to suppress the instrumentation check var instrumentedClient = InstrumentClient(client); return(isInstrumented ? instrumentedClient : client); }
/// <summary> /// Initializes a new <see cref="ReleasePhoneNumberOperation"/> instance. /// </summary> /// <param name="client">The client used to check for completion.</param> /// <param name="id">The phone number release operation ID.</param> /// <param name="cancellationToken">The cancellation token to use.</param> public ReleasePhoneNumberOperation( PhoneNumberAdministrationClient client, string id, CancellationToken cancellationToken = default) { Id = id; _value = null; _rawResponse = null !; _client = client; _cancellationToken = cancellationToken; }
/// <summary> /// Initializes a new <see cref="ReleasePhoneNumberOperation"/> instance. /// </summary> /// <param name="client">The client used to check for completion.</param> /// <param name="id">The phone number release operation ID.</param> /// <param name="initialResponse">The original server response on start operation request.</param> /// <param name="cancellationToken">The cancellation token to use.</param> internal ReleasePhoneNumberOperation( PhoneNumberAdministrationClient client, string id, Response initialResponse, CancellationToken cancellationToken = default) { Id = id; _value = null; _rawResponse = initialResponse; _client = client; _cancellationToken = cancellationToken; }
public void PurchaseAndRelease() { if (!IncludePhoneNumberLiveTests) { Assert.Ignore("Include phone number live tests flag is off."); } const string locale = "en-US"; var connectionString = TestEnvironment.ConnectionString; #region Snippet:CreatePhoneNumberAdministrationClient // Get a connection string to our Azure Communication resource. //@@var connectionString = "<connection_string>"; var client = new PhoneNumberAdministrationClient(connectionString); #endregion Snippet:CreatePhoneNumberAdministrationClient client = CreateClient(false); const string countryCode = "US"; #region Snippet:GetPhonePlanGroups var phonePlanGroups = client.GetPhonePlanGroups(countryCode, locale); foreach (var phonePlanGroup in phonePlanGroups) { Console.WriteLine($"Plan group: {phonePlanGroup.LocalizedName}, type: {phonePlanGroup.PhoneNumberType}"); } #endregion Snippet:GetPhonePlanGroups var tollFreePhonePlanGroup = phonePlanGroups.First(group => group.PhoneNumberType == PhoneNumberType.TollFree); var phonePlanGroupId = tollFreePhonePlanGroup.PhonePlanGroupId; #region Snippet:GetPhonePlans var phonePlans = client.GetPhonePlans(countryCode, phonePlanGroupId, locale); foreach (var phonePlan in phonePlans) { Console.WriteLine($"Plan: {phonePlan.LocalizedName}, {phonePlan.LocationType}"); } #endregion Snippet:GetPhonePlans var tollFreePhonePlan = phonePlans.First(); var phonePlanId = tollFreePhonePlan.PhonePlanId; var areaCode = tollFreePhonePlan.AreaCodes.First(); #region Snippet:ReservePhoneNumbers var reservationName = "My reservation"; var reservationDescription = "reservation description"; var reservationOptions = new CreateReservationOptions(reservationName, reservationDescription, new[] { phonePlanId }, areaCode); reservationOptions.Quantity = 1; var reserveOperation = client.StartReservation(reservationOptions); while (!reserveOperation.HasCompleted) { //@@ Thread.Sleep(2000); /*@@*/ SleepIfNotInPlaybackMode(); reserveOperation.UpdateStatus(); } #endregion Snippet:ReservePhoneNumbers reserveOperation = new PhoneNumberReservationOperation(client, reserveOperation.Id); #region Snippet:PersistReservePhoneNumbersOperation var reservationId = reserveOperation.Id; // persist reservationId and then continue with a new operation //@@var reserveOperation = new PhoneNumberReservationOperation(client, reservationId); while (!reserveOperation.HasCompleted) { //@@ Thread.Sleep(2000); /*@@*/ SleepIfNotInPlaybackMode(); reserveOperation.UpdateStatus(); } #endregion Snippet:PersistReservePhoneNumbersOperation #region Snippet:StartPurchaseReservation var purchaseOperation = client.StartPurchaseReservation(reservationId); while (!purchaseOperation.HasCompleted) { //@@ Thread.Sleep(2000); /*@@*/ SleepIfNotInPlaybackMode(); purchaseOperation.UpdateStatus(); } #endregion Snippet:StartPurchaseReservation #region Snippet:ListAcquiredPhoneNumbers var acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale); foreach (var phoneNumber in acquiredPhoneNumbers) { Console.WriteLine($"Phone number: {phoneNumber.PhoneNumber}, activation state: {phoneNumber.ActivationState}"); } #endregion Snippet:ListAcquiredPhoneNumbers var acquiredPhoneNumber = reserveOperation.Value.PhoneNumbers.Single(); acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale); var beforeReleaseNumberCount = acquiredPhoneNumbers.Count(); #region Snippet:ReleasePhoneNumbers //@@var acquiredPhoneNumber = "<acquired_phone_number>"; var releaseOperation = client.StartReleasePhoneNumber(new PhoneNumberIdentifier(acquiredPhoneNumber)); while (!releaseOperation.HasCompleted) { //@@ Thread.Sleep(2000); /*@@*/ SleepIfNotInPlaybackMode(); releaseOperation.UpdateStatus(); } #endregion Snippet:ReleasePhoneNumbers acquiredPhoneNumbers = client.GetAllPhoneNumbers(locale); var afterReleaseNumberCount = acquiredPhoneNumbers.Count(); Assert.AreEqual(1, beforeReleaseNumberCount - afterReleaseNumberCount); }
/// <summary> /// Initializes a new instance of the <see cref="PhoneNumberReservationOperation"/> class. /// </summary> /// <param name="client"> PhoneNumberAdministrationClient <see cref="PhoneNumberAdministrationClient"/> </param> /// <param name="reservationId"> The reservation id that was created. </param> /// <returns>A new <see cref="PhoneNumberReservationOperation"/> instance for mocking.</returns> public static PhoneNumberReservationOperation PhoneNumberReservationOperation(PhoneNumberAdministrationClient client, string reservationId) => new PhoneNumberReservationOperation(client, reservationId);
/// <summary> /// Initializes a new instance of the <see cref="ReleasePhoneNumberOperation"/> class. /// </summary> /// <param name="releaseId"> The release id of a created release. </param> /// <param name="client"> PhoneNumberAdministrationClient <see cref="PhoneNumberAdministrationClient"/> </param> /// <returns>A new <see cref="ReleasePhoneNumberOperation"/> instance for mocking.</returns> public static ReleasePhoneNumberOperation ReleasePhoneNumberOperation(PhoneNumberAdministrationClient client, string releaseId) => new ReleasePhoneNumberOperation(client, releaseId);
/// <summary> /// Initializes a new <see cref="PhoneNumberReservationPurchaseOperation"/> instance. /// </summary> /// <param name="client">The client used to check for completion.</param> /// <param name="id">The reservation operation ID.</param> /// <param name="cancellationToken">The cancellation token to use.</param> public PhoneNumberReservationPurchaseOperation( PhoneNumberAdministrationClient client, string id, CancellationToken cancellationToken = default) : this(client, id, null !, cancellationToken)