public async Task SetSettingReadOnly()
        {
            ConfigurationClient  service     = GetClient();
            ConfigurationSetting testSetting = CreateSetting();

            try
            {
                var setting = await service.AddAsync(testSetting);

                var readOnly = await service.SetReadOnlyAsync(testSetting.Key, testSetting.Label);

                testSetting.Value = "new_value";

                // Test
                RequestFailedException exception = Assert.ThrowsAsync <RequestFailedException>(async() =>
                                                                                               await service.SetAsync(testSetting.Key, "new_value", testSetting.Label));
                Assert.AreEqual(409, exception.Status);
            }
            finally
            {
                await service.ClearReadOnlyAsync(testSetting.Key, testSetting.Label);

                await service.DeleteAsync(testSetting.Key, testSetting.Label);
            }
        }
        public async Task ClearReadOnlyWithLabel()
        {
            var response    = new MockResponse(200);
            var testSetting = new ConfigurationSetting("test_key", "test_value")
            {
                Label       = "test_label",
                ContentType = "test_content_type",
                Tags        = new Dictionary <string, string>
                {
                    { "tag1", "value1" },
                    { "tag2", "value2" }
                },
                Locked = false
            };

            response.SetContent(SerializationHelpers.Serialize(testSetting, SerializeSetting));

            var mockTransport           = new MockTransport(response);
            ConfigurationClient service = CreateTestService(mockTransport);

            ConfigurationSetting setting = await service.ClearReadOnlyAsync(testSetting.Key, testSetting.Label);

            var request = mockTransport.SingleRequest;

            AssertRequestCommon(request);
            Assert.AreEqual(RequestMethod.Delete, request.Method);
            Assert.AreEqual($"https://contoso.appconfig.io/locks/test_key?label=test_label&api-version={s_version}", request.Uri.ToString());
            Assert.AreEqual(testSetting, setting);
        }
        public void ClearReadOnlyNotFound()
        {
            var response                = new MockResponse(404);
            var mockTransport           = new MockTransport(response);
            ConfigurationClient service = CreateTestService(mockTransport);

            var exception = Assert.ThrowsAsync <RequestFailedException>(async() =>
            {
                await service.ClearReadOnlyAsync(s_testSetting.Key);
            });

            Assert.AreEqual(404, exception.Status);
        }
        public async Task ClearReadOnlyFromSetting()
        {
            ConfigurationClient  service     = GetClient();
            ConfigurationSetting testSetting = CreateSetting();

            try
            {
                var setting = await service.AddAsync(testSetting);

                var readOnly = await service.ClearReadOnlyAsync(testSetting.Key, testSetting.Label);

                Assert.IsFalse(readOnly.Value.ReadOnly);
            }
            finally
            {
                await service.DeleteAsync(testSetting.Key, testSetting.Label);
            }
        }
        public async Task SetReadOnlyOnSetting()
        {
            ConfigurationClient  service     = GetClient();
            ConfigurationSetting testSetting = CreateSetting();

            try
            {
                var setting = await service.AddAsync(testSetting);

                var locked = await service.SetReadOnlyAsync(testSetting.Key, testSetting.Label);

                Assert.IsTrue(locked.Value.Locked);
            }
            finally
            {
                await service.ClearReadOnlyAsync(testSetting.Key, testSetting.Label);

                await service.DeleteAsync(testSetting.Key, testSetting.Label);
            }
        }