/// <summary>
 /// Updates the specific named value.
 /// </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='namedValueId'>
 /// Identifier of the NamedValue.
 /// </param>
 /// <param name='parameters'>
 /// Update parameters.
 /// </param>
 /// <param name='ifMatch'>
 /// ETag of the Entity. ETag should match the current entity state from the
 /// header response of the GET request or it should be * for unconditional
 /// update.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <NamedValueContract> BeginUpdateAsync(this INamedValueOperations operations, string resourceGroupName, string serviceName, string namedValueId, NamedValueUpdateParameters parameters, string ifMatch, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.BeginUpdateWithHttpMessagesAsync(resourceGroupName, serviceName, namedValueId, parameters, ifMatch, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Example #2
0
        public async Task CreateListUpdateDelete()
        {
            Environment.SetEnvironmentVariable("AZURE_TEST_MODE", "Playback");
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var testBase = new ApiManagementTestBase(context);
                testBase.TryCreateApiManagementService();

                string propertyId       = TestUtilities.GenerateName("newproperty");
                string secretPropertyId = TestUtilities.GenerateName("secretproperty");
                string kvPropertyId     = TestUtilities.GenerateName("kvproperty");

                try
                {
                    string propertyDisplayName = TestUtilities.GenerateName("propertydisplay");
                    string propertyValue       = TestUtilities.GenerateName("propertyValue");
                    var    createParameters    = new NamedValueCreateContract(propertyDisplayName)
                    {
                        Value = propertyValue
                    };

                    // create a property
                    var propertyResponse = testBase.client.NamedValue.CreateOrUpdate(
                        testBase.rgName,
                        testBase.serviceName,
                        propertyId,
                        createParameters);

                    ValidateProperty(propertyResponse, testBase, propertyId, propertyDisplayName, propertyValue, false);

                    // get the property
                    var getResponse = testBase.client.NamedValue.Get(
                        testBase.rgName,
                        testBase.serviceName,
                        propertyId);

                    ValidateProperty(propertyResponse, testBase, propertyId, propertyDisplayName, propertyValue, false);

                    // create secret property
                    string        secretPropertyDisplayName = TestUtilities.GenerateName("secretPropertydisplay");
                    string        secretPropertyValue       = TestUtilities.GenerateName("secretPropertyValue");
                    List <string> tags = new List <string> {
                        "secret"
                    };
                    var secretCreateParameters = new NamedValueCreateContract(secretPropertyDisplayName)
                    {
                        Value  = secretPropertyValue,
                        Secret = true,
                        Tags   = tags
                    };

                    var secretPropertyResponse = testBase.client.NamedValue.CreateOrUpdate(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId,
                        secretCreateParameters);

                    ValidateProperty(secretPropertyResponse, testBase, secretPropertyId, secretPropertyDisplayName, secretPropertyValue, true);

                    var secretValueResponse = testBase.client.NamedValue.ListValue(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId);

                    Assert.Equal(secretPropertyValue, secretValueResponse.Value);

                    //create key vault namedvalue
                    string kvPropertyDisplayName = TestUtilities.GenerateName("kvPropertydisplay");
                    var    kvCreateParameters    = new NamedValueCreateContract(kvPropertyDisplayName)
                    {
                        KeyVault = new KeyVaultContractCreateProperties
                        {
                            SecretIdentifier = testBase.testKeyVaultSecretUrl
                        },
                        Secret = true
                    };

                    var kvPropertyResponse = testBase.client.NamedValue.CreateOrUpdate(
                        testBase.rgName,
                        testBase.serviceName,
                        kvPropertyId,
                        kvCreateParameters);

                    ValidateProperty(kvPropertyResponse, testBase, kvPropertyId, kvPropertyDisplayName, string.Empty, true);

                    //refresh secret of key vault namedvalue
                    var refreshKvPropertyResponse = testBase.client.NamedValue.RefreshSecret(
                        testBase.rgName,
                        testBase.serviceName,
                        kvPropertyId);

                    Assert.NotNull(refreshKvPropertyResponse);
                    Assert.Equal("Success", refreshKvPropertyResponse.KeyVault.LastStatus.Code);

                    // list the properties
                    var listResponse = testBase.client.NamedValue.ListByService(testBase.rgName, testBase.serviceName, null);
                    Assert.NotNull(listResponse);

                    Assert.Equal(3, listResponse.Count());

                    // delete a property
                    testBase.client.NamedValue.Delete(
                        testBase.rgName,
                        testBase.serviceName,
                        propertyId,
                        "*");

                    Assert.Throws <ErrorResponseException>(()
                                                           => testBase.client.NamedValue.Get(testBase.rgName, testBase.serviceName, propertyId));

                    // delete kv property
                    testBase.client.NamedValue.Delete(
                        testBase.rgName,
                        testBase.serviceName,
                        kvPropertyId,
                        "*");

                    Assert.Throws <ErrorResponseException>(()
                                                           => testBase.client.NamedValue.Get(testBase.rgName, testBase.serviceName, kvPropertyId));

                    // get the property etag
                    var propertyTag = await testBase.client.NamedValue.GetEntityTagAsync(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId);

                    Assert.NotNull(propertyTag);
                    Assert.NotNull(propertyTag.ETag);

                    // patch the secret property
                    var updateProperty = new NamedValueUpdateParameters()
                    {
                        Secret = false
                    };
                    testBase.client.NamedValue.Update(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId,
                        updateProperty,
                        propertyTag.ETag);

                    // check it is patched
                    var secretResponse = await testBase.client.NamedValue.GetAsync(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId);

                    ValidateProperty(
                        secretResponse,
                        testBase,
                        secretPropertyId,
                        secretPropertyDisplayName,
                        secretPropertyValue,
                        false);

                    // patch the secret property to kv property
                    var updatekvProperty = new NamedValueUpdateParameters()
                    {
                        KeyVault = new KeyVaultContractCreateProperties
                        {
                            SecretIdentifier = testBase.testKeyVaultSecretUrl
                        },
                        Secret = true
                    };

                    // get the property etag
                    var secretpropertyTag = await testBase.client.NamedValue.GetEntityTagAsync(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId);

                    testBase.client.NamedValue.Update(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId,
                        updatekvProperty,
                        secretpropertyTag.ETag);

                    // check it is patched
                    var patchkvResponse = await testBase.client.NamedValue.GetAsync(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId);

                    Assert.NotNull(patchkvResponse);
                    Assert.NotNull(patchkvResponse.KeyVault);
                    Assert.Equal("Success", patchkvResponse.KeyVault.LastStatus.Code);

                    // delete this property
                    testBase.client.NamedValue.Delete(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId,
                        "*");

                    Assert.Throws <ErrorResponseException>(()
                                                           => testBase.client.NamedValue.Get(testBase.rgName, testBase.serviceName, secretPropertyId));
                }
                finally
                {
                    testBase.client.NamedValue.Delete(testBase.rgName, testBase.serviceName, propertyId, "*");
                    testBase.client.NamedValue.Delete(testBase.rgName, testBase.serviceName, secretPropertyId, "*");
                }
            }
        }
 /// <summary>
 /// Updates the specific named value.
 /// </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='namedValueId'>
 /// Identifier of the NamedValue.
 /// </param>
 /// <param name='parameters'>
 /// Update parameters.
 /// </param>
 /// <param name='ifMatch'>
 /// ETag of the Entity. ETag should match the current entity state from the
 /// header response of the GET request or it should be * for unconditional
 /// update.
 /// </param>
 public static NamedValueContract BeginUpdate(this INamedValueOperations operations, string resourceGroupName, string serviceName, string namedValueId, NamedValueUpdateParameters parameters, string ifMatch)
 {
     return(operations.BeginUpdateAsync(resourceGroupName, serviceName, namedValueId, parameters, ifMatch).GetAwaiter().GetResult());
 }
        public async Task CreateListUpdateDelete()
        {
            Environment.SetEnvironmentVariable("AZURE_TEST_MODE", "Playback");
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var testBase = new ApiManagementTestBase(context);
                testBase.TryCreateApiManagementService();

                string propertyId       = TestUtilities.GenerateName("newproperty");
                string secretPropertyId = TestUtilities.GenerateName("secretproperty");

                try
                {
                    string propertyDisplayName = TestUtilities.GenerateName("propertydisplay");
                    string propertyValue       = TestUtilities.GenerateName("propertyValue");
                    var    createParameters    = new NamedValueCreateContract(propertyDisplayName, propertyValue);

                    // create a property
                    var propertyResponse = testBase.client.NamedValue.CreateOrUpdate(
                        testBase.rgName,
                        testBase.serviceName,
                        propertyId,
                        createParameters);

                    ValidateProperty(propertyResponse, testBase, propertyId, propertyDisplayName, propertyValue, false);

                    // get the property
                    var getResponse = testBase.client.NamedValue.Get(
                        testBase.rgName,
                        testBase.serviceName,
                        propertyId);

                    ValidateProperty(propertyResponse, testBase, propertyId, propertyDisplayName, propertyValue, false);

                    // create  secret property
                    string        secretPropertyDisplayName = TestUtilities.GenerateName("secretPropertydisplay");
                    string        secretPropertyValue       = TestUtilities.GenerateName("secretPropertyValue");
                    List <string> tags = new List <string> {
                        "secret"
                    };
                    var secretCreateParameters = new NamedValueCreateContract(secretPropertyDisplayName, secretPropertyValue)
                    {
                        Secret = true,
                        Tags   = tags
                    };

                    var secretPropertyResponse = testBase.client.NamedValue.CreateOrUpdate(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId,
                        secretCreateParameters);

                    ValidateProperty(secretPropertyResponse, testBase, secretPropertyId, secretPropertyDisplayName, secretPropertyValue, true);

                    var secretValueResponse = testBase.client.NamedValue.ListValue(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId);

                    Assert.Equal(secretPropertyValue, secretValueResponse.Value);

                    // list the properties
                    var listResponse = testBase.client.NamedValue.ListByService(testBase.rgName, testBase.serviceName, null);
                    Assert.NotNull(listResponse);

                    Assert.Equal(2, listResponse.Count());

                    // delete a property
                    testBase.client.NamedValue.Delete(
                        testBase.rgName,
                        testBase.serviceName,
                        propertyId,
                        "*");

                    Assert.Throws <ErrorResponseException>(()
                                                           => testBase.client.NamedValue.Get(testBase.rgName, testBase.serviceName, propertyId));

                    // get the property etag
                    var propertyTag = await testBase.client.NamedValue.GetEntityTagAsync(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId);

                    Assert.NotNull(propertyTag);
                    Assert.NotNull(propertyTag.ETag);

                    // patch the secret property
                    var updateProperty = new NamedValueUpdateParameters()
                    {
                        Secret = false
                    };
                    testBase.client.NamedValue.Update(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId,
                        updateProperty,
                        propertyTag.ETag);

                    // check it is patched
                    var secretResponse = await testBase.client.NamedValue.GetAsync(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId);

                    ValidateProperty(
                        secretResponse,
                        testBase,
                        secretPropertyId,
                        secretPropertyDisplayName,
                        secretPropertyValue,
                        false);

                    // delete this property
                    testBase.client.NamedValue.Delete(
                        testBase.rgName,
                        testBase.serviceName,
                        secretPropertyId,
                        "*");

                    Assert.Throws <ErrorResponseException>(()
                                                           => testBase.client.NamedValue.Get(testBase.rgName, testBase.serviceName, secretPropertyId));
                }
                finally
                {
                    testBase.client.NamedValue.Delete(testBase.rgName, testBase.serviceName, propertyId, "*");
                    testBase.client.NamedValue.Delete(testBase.rgName, testBase.serviceName, secretPropertyId, "*");
                }
            }
        }