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}");
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 6
0
 /// <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;
 }
Exemplo n.º 7
0
 /// <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);
        }
Exemplo n.º 9
0
 /// <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);
Exemplo n.º 10
0
 /// <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)