public void SetBlobMetadata_InvalidMetadataName_ThrowsAggregateExceptionWithOnlyInvalidNamesInExceptionList()
        {
            const string invalidName1 = "Captain America";
            const string invalidName2 = "`Thor";
            const string incorrectlyEscapedIdentifier = "if";
            var containerName = _util.GenerateSampleContainerName(_runId);
            var blobName = _util.GenerateSampleBlobName(_runId);
            var expectedMetadata = new Dictionary<string, string>
            {
                {invalidName1, "Shield"},
                {invalidName2, "Hammer"},
                {incorrectlyEscapedIdentifier, "Web"},
                {"Me", "Code"}
            };
            _util.CreateContainer(containerName);
            _util.CreateBlockBlob(containerName, blobName);
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);

            try
            {
                client.SetBlobMetadata(containerName, blobName, expectedMetadata);
            }
            catch (AggregateException aggregateException)
            {
                Assert.AreEqual(3, aggregateException.InnerExceptions.Count);
                _util.AssertStringContainsString(aggregateException.InnerExceptions[0].Message, invalidName1);
                _util.AssertStringContainsString(aggregateException.InnerExceptions[1].Message, invalidName2);
                _util.AssertStringContainsString(aggregateException.InnerExceptions[2].Message, incorrectlyEscapedIdentifier);
            }
        }
        public void SetBlobMetadata_InvalidMetadataName_ThrowsAggregateException()
        {
            const string invalidName1 = "Captain America";
            const string invalidName2 = "`Thor";
            var containerName = _util.GenerateSampleContainerName(_runId);
            var blobName = _util.GenerateSampleBlobName(_runId);
            var expectedMetadata = new Dictionary<string, string>
            {
                {invalidName1, "Shield"},
                {invalidName2, "Hammer"},
                {"Me", "Code"}
            };
            _util.CreateContainer(containerName);
            _util.CreateBlockBlob(containerName, blobName);
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);

            client.SetBlobMetadata(containerName, blobName, expectedMetadata);

            // throws exception
        }
        public void SetBlobMetadata_InvalidLeaseSupplied_ThrowsArgumentException()
        {
            var containerName = _util.GenerateSampleContainerName(_runId);
            var blobName = _util.GenerateSampleBlobName(_runId);
            var expectedMetadata = new Dictionary<string, string>
            {
                {"CaptainAmerica", "Shield"},
                {"Thor", "Hammer"},
                {"Me", "Code"}
            };
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);

            client.SetBlobMetadata(containerName, blobName, expectedMetadata, InvalidLeaseId);

            // throws exception
        }
        public void SetBlobMetadata_UnleasedBlobLeaseSupplied_ThrowsLeaseNotPresentWithBlobOperationAzureException()
        {
            var containerName = _util.GenerateSampleContainerName(_runId);
            var blobName = _util.GenerateSampleBlobName(_runId);
            var expectedMetadata = new Dictionary<string, string>
            {
                {"CaptainAmerica", "Shield"},
                {"Thor", "Hammer"},
                {"Me", "Code"}
            };
            _util.CreateContainer(containerName);
            _util.CreateBlockBlob(containerName, blobName);
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);

            client.SetBlobMetadata(containerName, blobName, expectedMetadata, FakeLeaseId);

            // throws exception
        }
        public void SetBlobMetadata_LeasedBlobCorrectLeaseSupplied_SetsMetadata()
        {
            var containerName = _util.GenerateSampleContainerName(_runId);
            var blobName = _util.GenerateSampleBlobName(_runId);
            var expectedMetadata = new Dictionary<string, string>
            {
                {"CaptainAmerica", "Shield"},
                {"Thor", "Hammer"},
                {"Me", "Code"}
            };
            _util.CreateContainer(containerName);
            _util.CreateBlockBlob(containerName, blobName);
            var lease = _util.LeaseBlob(containerName, blobName);
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);

            client.SetBlobMetadata(containerName, blobName, expectedMetadata, lease);

            _util.AssertBlobMetadata(containerName, blobName, expectedMetadata);
        }
        public void SetBlobMetadata_ExistingBlobExistingMetadata_OverwritesMetadata()
        {
            var containerName = _util.GenerateSampleContainerName(_runId);
            var blobName = _util.GenerateSampleBlobName(_runId);
            var oldMetadata = new Dictionary<string, string>
            {
                {"Mario", "Fire Flower"}
            };
            var expectedMetadata = new Dictionary<string, string>
            {
                {"CaptainAmerica", "Shield"},
                {"Thor", "Hammer"},
                {"Me", "Code"}
            };
            _util.CreateContainer(containerName);
            _util.CreateBlockBlob(containerName, blobName, oldMetadata);
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);

            client.SetBlobMetadata(containerName, blobName, expectedMetadata);

            _util.AssertBlobMetadata(containerName, blobName, expectedMetadata);
        }