public async Task CreateDeleteImmutabilityPolicy()
        {
            // create a blob container
            string            containerName = Recording.GenerateAssetName("testblob");
            BlobContainerData data          = new BlobContainerData();
            BlobContainer     container     = (await _blobContainerContainer.CreateOrUpdateAsync(containerName, new BlobContainerData())).Value;

            //create immutability policy
            ImmutabilityPolicy immutabilityPolicyModel = new ImmutabilityPolicy()
            {
                ImmutabilityPeriodSinceCreationInDays = 3
            };
            ImmutabilityPolicy immutabilityPolicy = await container.CreateOrUpdateImmutabilityPolicyAsync(parameters : immutabilityPolicyModel);

            //validate
            Assert.NotNull(immutabilityPolicy.Id);
            Assert.NotNull(immutabilityPolicy.Type);
            Assert.NotNull(immutabilityPolicy.Name);
            Assert.AreEqual(3, immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays);
            Assert.AreEqual(ImmutabilityPolicyState.Unlocked, immutabilityPolicy.State);

            //delete immutability policy
            immutabilityPolicy = await container.DeleteImmutabilityPolicyAsync(immutabilityPolicy.Etag);

            //validate
            Assert.NotNull(immutabilityPolicy.Id);
            Assert.NotNull(immutabilityPolicy.Type);
            Assert.NotNull(immutabilityPolicy.Name);
            Assert.AreEqual(0, immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays);
        }
        public async Task ImmutabilityPolicy_AllowProtectedAppendWrites()
        {
            // create a blob container
            string             containerName      = Recording.GenerateAssetName("testblob");
            BlobContainerData  data               = new BlobContainerData();
            BlobContainer      container          = (await _blobContainerContainer.CreateOrUpdateAsync(containerName, new BlobContainerData())).Value;
            ImmutabilityPolicy immutabilityPolicy = new ImmutabilityPolicy()
            {
                ImmutabilityPeriodSinceCreationInDays = 4,
                AllowProtectedAppendWrites            = true
            };

            immutabilityPolicy = await container.CreateOrUpdateImmutabilityPolicyAsync(ifMatch : "", immutabilityPolicy);

            Assert.NotNull(immutabilityPolicy.Id);
            Assert.NotNull(immutabilityPolicy.Type);
            Assert.NotNull(immutabilityPolicy.Name);
            Assert.AreEqual(4, immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays);
            Assert.AreEqual(ImmutabilityPolicyState.Unlocked, immutabilityPolicy.State);
            Assert.True(immutabilityPolicy.AllowProtectedAppendWrites.Value);

            immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays = 5;
            immutabilityPolicy.AllowProtectedAppendWrites            = false;
            immutabilityPolicy = await container.CreateOrUpdateImmutabilityPolicyAsync(ifMatch : immutabilityPolicy.Etag, immutabilityPolicy);

            Assert.NotNull(immutabilityPolicy.Id);
            Assert.NotNull(immutabilityPolicy.Type);
            Assert.NotNull(immutabilityPolicy.Name);
            Assert.AreEqual(5, immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays);
            Assert.AreEqual(ImmutabilityPolicyState.Unlocked, immutabilityPolicy.State);
            Assert.False(immutabilityPolicy.AllowProtectedAppendWrites.Value);

            immutabilityPolicy = await container.GetImmutabilityPolicyAsync(immutabilityPolicy.Etag);

            Assert.NotNull(immutabilityPolicy.Id);
            Assert.NotNull(immutabilityPolicy.Type);
            Assert.NotNull(immutabilityPolicy.Name);
            Assert.AreEqual(5, immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays);
            Assert.AreEqual(ImmutabilityPolicyState.Unlocked, immutabilityPolicy.State);
            Assert.False(immutabilityPolicy.AllowProtectedAppendWrites.Value);
        }