/// <summary> /// Creates or Updates a backend. /// </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='backendId'> /// Identifier of the Backend entity. Must be unique in the current API /// Management service instance. /// </param> /// <param name='parameters'> /// Create parameters. /// </param> /// <param name='ifMatch'> /// ETag of the Entity. Not required when creating an entity, but required when /// updating an entity. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <BackendContract> CreateOrUpdateAsync(this IBackendOperations operations, string resourceGroupName, string serviceName, string backendId, BackendContract parameters, string ifMatch = default(string), CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, serviceName, backendId, parameters, ifMatch, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
public async Task CreateListUpdateDelete() { Environment.SetEnvironmentVariable("AZURE_TEST_MODE", "Playback"); using (MockContext context = MockContext.Start(this.GetType())) { var testBase = new ApiManagementTestBase(context); testBase.TryCreateApiManagementService(); // create new group with default parameters string backendId = TestUtilities.GenerateName("backendid"); try { string backendName = TestUtilities.GenerateName("backendName"); string urlParameter = new UriBuilder("https", backendName, 443).Uri.ToString(); var backendCreateParameters = new BackendContract(urlParameter, BackendProtocol.Http); backendCreateParameters.Description = TestUtilities.GenerateName("description"); backendCreateParameters.Tls = new BackendTlsProperties( validateCertificateChain: true, validateCertificateName: true); backendCreateParameters.Credentials = new BackendCredentialsContract(); backendCreateParameters.Credentials.Authorization = new BackendAuthorizationHeaderCredentials() { Parameter = "opensemame", Scheme = "basic" }; backendCreateParameters.Credentials.Query = new Dictionary <string, IList <string> >(); backendCreateParameters.Credentials.Query.Add("sv", new List <string> { "xx", "bb", "cc" }); backendCreateParameters.Credentials.Header = new Dictionary <string, IList <string> >(); backendCreateParameters.Credentials.Header.Add("x-my-1", new List <string> { "val1", "val2" }); var backendResponse = testBase.client.Backend.CreateOrUpdate( testBase.rgName, testBase.serviceName, backendId, backendCreateParameters); Assert.NotNull(backendResponse); // get to check it was created BackendContract backendContract = await testBase.client.Backend.GetAsync(testBase.rgName, testBase.serviceName, backendId); Assert.NotNull(backendContract); Assert.Equal(backendId, backendContract.Name); Assert.NotNull(backendContract.Description); Assert.NotNull(backendContract.Credentials.Authorization); Assert.NotNull(backendContract.Credentials.Query); Assert.NotNull(backendContract.Credentials.Header); Assert.Equal(BackendProtocol.Http, backendContract.Protocol); Assert.Equal(1, backendContract.Credentials.Query.Keys.Count); Assert.Equal(1, backendContract.Credentials.Header.Keys.Count); Assert.NotNull(backendContract.Credentials.Authorization); Assert.Equal("basic", backendContract.Credentials.Authorization.Scheme); var listBackends = testBase.client.Backend.ListByService(testBase.rgName, testBase.serviceName, null); Assert.NotNull(listBackends); // there should be one user Assert.True(listBackends.Count() >= 1); // get the backend etag var backendTag = await testBase.client.Backend.GetEntityTagAsync( testBase.rgName, testBase.serviceName, backendId); Assert.NotNull(backendTag); Assert.NotNull(backendTag.ETag); // patch backend string patchedDescription = TestUtilities.GenerateName("patchedDescription"); testBase.client.Backend.Update( testBase.rgName, testBase.serviceName, backendId, new BackendUpdateParameters() { Description = patchedDescription }, backendTag.ETag); // get to check it was patched backendContract = await testBase.client.Backend.GetAsync( testBase.rgName, testBase.serviceName, backendId); Assert.NotNull(backendContract); Assert.Equal(backendId, backendContract.Name); Assert.Equal(patchedDescription, backendContract.Description); // get the etag backendTag = await testBase.client.Backend.GetEntityTagAsync( testBase.rgName, testBase.serviceName, backendId); // delete the backend testBase.client.Backend.Delete( testBase.rgName, testBase.serviceName, backendId, backendTag.ETag); // get the deleted backend to make sure it was deleted try { testBase.client.Backend.Get(testBase.rgName, testBase.serviceName, backendId); throw new Exception("This code should not have been executed."); } catch (ErrorResponseException ex) { Assert.Equal(HttpStatusCode.NotFound, ex.Response.StatusCode); } } finally { testBase.client.Backend.Delete(testBase.rgName, testBase.serviceName, backendId, "*"); } } }
/// <summary> /// Creates or Updates a backend. /// </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='backendId'> /// Identifier of the Backend entity. Must be unique in the current API /// Management service instance. /// </param> /// <param name='parameters'> /// Create parameters. /// </param> /// <param name='ifMatch'> /// ETag of the Entity. Not required when creating an entity, but required when /// updating an entity. /// </param> public static BackendContract CreateOrUpdate(this IBackendOperations operations, string resourceGroupName, string serviceName, string backendId, BackendContract parameters, string ifMatch = default(string)) { return(operations.CreateOrUpdateAsync(resourceGroupName, serviceName, backendId, parameters, ifMatch).GetAwaiter().GetResult()); }
public async Task ServiceFabricCreateUpdateDelete() { Environment.SetEnvironmentVariable("AZURE_TEST_MODE", "Playback"); using (MockContext context = MockContext.Start(this.GetType())) { var testBase = new ApiManagementTestBase(context); testBase.TryCreateApiManagementService(); // create new group with default parameters string backendId = TestUtilities.GenerateName("sfbackend"); string certificateId = TestUtilities.GenerateName("certificateId"); try { var base64ArrayCertificate = Convert.FromBase64String(testBase.base64EncodedTestCertificateData); var cert = new X509Certificate2(base64ArrayCertificate, testBase.testCertificatePassword); var createResponse = testBase.client.Certificate.CreateOrUpdate( testBase.rgName, testBase.serviceName, certificateId, new CertificateCreateOrUpdateParameters { Data = testBase.base64EncodedTestCertificateData, Password = testBase.testCertificatePassword }, null); Assert.NotNull(createResponse); Assert.Equal(certificateId, createResponse.Name); string backendName = TestUtilities.GenerateName("backendName"); string urlParameter = new UriBuilder("https", backendName, 443).Uri.ToString(); string servicefabricUrl = "fabric:/mytestapp/mytestservice"; var backendCreateParameters = new BackendContract(servicefabricUrl, BackendProtocol.Http); backendCreateParameters.Description = TestUtilities.GenerateName("description"); backendCreateParameters.Properties = new BackendProperties(); backendCreateParameters.Properties.ServiceFabricCluster = new BackendServiceFabricClusterProperties(); backendCreateParameters.Properties.ServiceFabricCluster.ClientCertificatethumbprint = cert.Thumbprint; backendCreateParameters.Properties.ServiceFabricCluster.ManagementEndpoints = new List <string>(); backendCreateParameters.Properties.ServiceFabricCluster.ManagementEndpoints.Add(urlParameter); backendCreateParameters.Properties.ServiceFabricCluster.MaxPartitionResolutionRetries = 5; backendCreateParameters.Properties.ServiceFabricCluster.ServerX509Names = new List <X509CertificateName>(); backendCreateParameters.Properties.ServiceFabricCluster.ServerX509Names.Add(new X509CertificateName("serverCommonName1", "issuerThumbprint1")); var backendContract = testBase.client.Backend.CreateOrUpdate( testBase.rgName, testBase.serviceName, backendId, backendCreateParameters); Assert.NotNull(backendContract); Assert.Equal(backendId, backendContract.Name); Assert.NotNull(backendContract.Description); Assert.NotNull(backendContract.Properties.ServiceFabricCluster); Assert.Equal(BackendProtocol.Http, backendContract.Protocol); Assert.Equal(1, backendContract.Properties.ServiceFabricCluster.ServerX509Names.Count); Assert.Equal(1, backendContract.Properties.ServiceFabricCluster.ManagementEndpoints.Count); Assert.Equal(5, backendContract.Properties.ServiceFabricCluster.MaxPartitionResolutionRetries); var listBackends = testBase.client.Backend.ListByService(testBase.rgName, testBase.serviceName, null); Assert.NotNull(listBackends); // there should be atleast one backend Assert.True(listBackends.Count() >= 1); // reconnect backend var backendReconnectParams = new BackendReconnectContract() { After = TimeSpan.FromMinutes(5d) }; await testBase.client.Backend.ReconnectAsync( testBase.rgName, testBase.serviceName, backendId, backendReconnectParams); // patch backend string patchedDescription = TestUtilities.GenerateName("patchedDescription"); testBase.client.Backend.Update( testBase.rgName, testBase.serviceName, backendId, new BackendUpdateParameters() { Description = patchedDescription }, "*"); // get to check it was patched backendContract = await testBase.client.Backend.GetAsync( testBase.rgName, testBase.serviceName, backendId); Assert.NotNull(backendContract); Assert.Equal(backendId, backendContract.Name); Assert.Equal(patchedDescription, backendContract.Description); // get the etag var backendTag = await testBase.client.Backend.GetEntityTagAsync( testBase.rgName, testBase.serviceName, backendId); Assert.NotNull(backendTag); Assert.NotNull(backendTag.ETag); // delete the backend testBase.client.Backend.Delete( testBase.rgName, testBase.serviceName, backendId, backendTag.ETag); // get the deleted backend to make sure it was deleted try { testBase.client.Backend.Get(testBase.rgName, testBase.serviceName, backendId); throw new Exception("This code should not have been executed."); } catch (ErrorResponseException ex) { Assert.Equal(HttpStatusCode.NotFound, ex.Response.StatusCode); } } finally { testBase.client.Backend.Delete(testBase.rgName, testBase.serviceName, backendId, "*"); testBase.client.Certificate.Delete(testBase.rgName, testBase.serviceName, certificateId, "*"); } } }