/// <summary>
 /// Updates an existing API Management service.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group.
 /// </param>
 /// <param name='serviceName'>
 /// The name of the API Management service.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the CreateOrUpdate API Management service operation.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <ApiManagementServiceResource> UpdateAsync(this IApiManagementServiceOperations operations, string resourceGroupName, string serviceName, ApiManagementServiceUpdateParameters parameters, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.UpdateWithHttpMessagesAsync(resourceGroupName, serviceName, parameters, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// Updates an existing API Management service.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group.
 /// </param>
 /// <param name='serviceName'>
 /// The name of the API Management service.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the CreateOrUpdate API Management service operation.
 /// </param>
 public static ApiManagementServiceResource BeginUpdate(this IApiManagementServiceOperations operations, string resourceGroupName, string serviceName, ApiManagementServiceUpdateParameters parameters)
 {
     return(operations.BeginUpdateAsync(resourceGroupName, serviceName, parameters).GetAwaiter().GetResult());
 }
Exemplo n.º 3
0
        public void CreateMultiHostNameZoneAwareService()
        {
            Environment.SetEnvironmentVariable("AZURE_TEST_MODE", "Playback");
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var testBase = new ApiManagementTestBase(context);

                var domainOwnershipIdentifierResult = testBase.client.ApiManagementService.GetDomainOwnershipIdentifier();
                Assert.NotNull(domainOwnershipIdentifierResult);
                Assert.NotEmpty(domainOwnershipIdentifierResult.DomainOwnershipIdentifier);

                testBase.serviceProperties.Zones        = new[] { "1", "2" };
                testBase.serviceProperties.Sku.Name     = SkuType.Premium;
                testBase.serviceProperties.Sku.Capacity = 2; // unit count in multiple of zones
                testBase.location = "eastus2euap";
                testBase.serviceProperties.Location = testBase.location;
                var hostnameConfig1 = new HostnameConfiguration()
                {
                    Type                = HostnameType.Proxy,
                    HostName            = "gateway1.msitesting.net",
                    EncodedCertificate  = testBase.base64EncodedTestCertificateData,
                    CertificatePassword = testBase.testCertificatePassword,
                    DefaultSslBinding   = true
                };

                var hostnameConfig2 = new HostnameConfiguration()
                {
                    Type                       = HostnameType.Proxy,
                    HostName                   = "gateway2.msitesting.net",
                    EncodedCertificate         = testBase.base64EncodedTestCertificateData,
                    CertificatePassword        = testBase.testCertificatePassword,
                    NegotiateClientCertificate = true
                };

                var hostnameConfig3 = new HostnameConfiguration()
                {
                    Type                = HostnameType.Portal,
                    HostName            = "portal1.msitesting.net",
                    EncodedCertificate  = testBase.base64EncodedTestCertificateData,
                    CertificatePassword = testBase.testCertificatePassword
                };

                var hostnameConfig4 = new HostnameConfiguration()
                {
                    Type                = HostnameType.DeveloperPortal,
                    HostName            = "devportal1.msitesting.net",
                    EncodedCertificate  = testBase.base64EncodedTestCertificateData,
                    CertificatePassword = testBase.testCertificatePassword
                };

                testBase.serviceProperties.HostnameConfigurations = new List <HostnameConfiguration>
                {
                    hostnameConfig1,
                    hostnameConfig2,
                    hostnameConfig3,
                    hostnameConfig4
                };

                var base64ArrayCertificate = Convert.FromBase64String(testBase.base64EncodedTestCertificateData);
                var cert = new X509Certificate2(base64ArrayCertificate, testBase.testCertificatePassword);

                var createdService = testBase.client.ApiManagementService.CreateOrUpdate(
                    resourceGroupName: testBase.rgName,
                    serviceName: testBase.serviceName,
                    parameters: testBase.serviceProperties);

                ValidateService(createdService,
                                testBase.serviceName,
                                testBase.rgName,
                                testBase.subscriptionId,
                                testBase.location,
                                testBase.serviceProperties.PublisherEmail,
                                testBase.serviceProperties.PublisherName,
                                testBase.serviceProperties.Sku.Name,
                                testBase.tags,
                                PlatformVersion.Stv2);

                Assert.Equal(2, createdService.Sku.Capacity);
                Assert.Equal(2, createdService.Zones.Count);
                Assert.True(createdService.Zones.Contains("1"));
                Assert.True(createdService.Zones.Contains("2"));
                Assert.NotNull(createdService.HostnameConfigurations);
                Assert.Equal(5, createdService.HostnameConfigurations.Count()); // customhostname config + 1 default proxy
                var defaultHostname = new Uri(createdService.GatewayUrl).Host;
                var hostnameConfigurationToValidate = createdService.HostnameConfigurations
                                                      .Where(h => !h.HostName.Equals(defaultHostname, StringComparison.InvariantCultureIgnoreCase));

                foreach (HostnameConfiguration hostnameConfig in hostnameConfigurationToValidate)
                {
                    var hostnameConfiguration = createdService.HostnameConfigurations
                                                .SingleOrDefault(h => hostnameConfig.HostName.Equals(h.HostName));
                    Assert.NotNull(hostnameConfiguration);
                    Assert.Equal(hostnameConfig.Type, hostnameConfiguration.Type);
                    Assert.NotNull(hostnameConfiguration.Certificate);
                    Assert.NotNull(hostnameConfiguration.Certificate.Subject);
                    Assert.Null(hostnameConfig.IdentityClientId);
                    Assert.Null(hostnameConfig.KeyVaultId);
                    Assert.Equal(cert.Thumbprint, hostnameConfiguration.Certificate.Thumbprint);

                    if (HostnameType.Proxy == hostnameConfiguration.Type)
                    {
                        Assert.True(hostnameConfiguration.DefaultSslBinding);
                    }
                    else
                    {
                        Assert.False(hostnameConfiguration.DefaultSslBinding);
                    }

                    if (hostnameConfig2.HostName.Equals(hostnameConfiguration.HostName))
                    {
                        Assert.True(hostnameConfiguration.NegotiateClientCertificate);
                    }
                    else
                    {
                        Assert.False(hostnameConfiguration.NegotiateClientCertificate);
                    }
                }

                // update the service
                int intialTagsCount = createdService.Tags.Count;

                var updateParameters = new ApiManagementServiceUpdateParameters()
                {
                    Zones = new[] { "2", "3" },
                    Tags  = new Dictionary <string, string>()
                    {
                        { "client", "test" }
                    }
                };
                var updatedService = testBase.client.ApiManagementService.Update(testBase.rgName,
                                                                                 testBase.serviceName,
                                                                                 updateParameters);
                Assert.NotNull(updatedService);
                Assert.NotEmpty(updatedService.Tags);
                Assert.Equal(1, updatedService.Tags.Count);
                Assert.Equal(5, updatedService.HostnameConfigurations.Count());
                Assert.Equal(2, updatedService.Zones.Count);
                Assert.True(updatedService.Zones.Contains("2"));
                Assert.True(updatedService.Zones.Contains("3"));

                hostnameConfigurationToValidate = updatedService.HostnameConfigurations
                                                  .Where(h => !h.HostName.Equals(defaultHostname, StringComparison.InvariantCultureIgnoreCase));
                foreach (HostnameConfiguration hostnameConfig in hostnameConfigurationToValidate)
                {
                    var hostnameConfiguration = updatedService.HostnameConfigurations
                                                .SingleOrDefault(h => hostnameConfig.HostName.Equals(h.HostName));
                    Assert.NotNull(hostnameConfiguration);
                    Assert.Equal(hostnameConfig.Type, hostnameConfiguration.Type);
                    Assert.NotNull(hostnameConfiguration.Certificate);
                    Assert.NotNull(hostnameConfiguration.Certificate.Subject);
                    Assert.Equal(cert.Thumbprint, hostnameConfiguration.Certificate.Thumbprint);

                    if (HostnameType.Proxy == hostnameConfiguration.Type)
                    {
                        Assert.True(hostnameConfiguration.DefaultSslBinding);
                    }
                    else
                    {
                        Assert.False(hostnameConfiguration.DefaultSslBinding);
                    }

                    if (hostnameConfig2.HostName.Equals(hostnameConfiguration.HostName))
                    {
                        Assert.True(hostnameConfiguration.NegotiateClientCertificate);
                    }
                    else
                    {
                        Assert.False(hostnameConfiguration.NegotiateClientCertificate);
                    }
                }

                // Delete
                testBase.client.ApiManagementService.Delete(
                    resourceGroupName: testBase.rgName,
                    serviceName: testBase.serviceName);

                Assert.Throws <ErrorResponseException>(() =>
                {
                    testBase.client.ApiManagementService.Get(
                        resourceGroupName: testBase.rgName,
                        serviceName: testBase.serviceName);
                });
            }
        }