private static IBlobDirectory GetBlobDirectory(IBlobContainer blobContainer)
        {
            var directoryName = AzureResourceUniqueNameCreator.CreateUniqueBlobDirectoryName();
            var blobDirectory = blobContainer.GetBlobDirectory(directoryName);

            return(blobDirectory);
        }
        public async Task IsBlobPermissionsPublicShouldReturnFalse()
        {
            var containerName = AzureResourceUniqueNameCreator.CreateUniqueBlobContainerName();
            var blobContainer = CreateBlobContainer(containerName);
            await blobContainer.CreateAsync();

            (await blobContainer.IsBlobPermissionsPublicAsync()).Should().BeFalse();
        }
        public async Task DoesBlobContainerExistsShouldReturnFalseIfBlobContainerDoesNotExists()
        {
            var containerName = AzureResourceUniqueNameCreator.CreateUniqueBlobContainerName();

            var blobContainerStatus = await BlobClient.DoesBlobContainerExistAsync(containerName);

            blobContainerStatus.Should().Be(false);
        }
        public void GetBlobDirectoryFromBlobContainerWithAGivenNameShouldGiveABlobDirectoryWithThatName()
        {
            var directoryName = AzureResourceUniqueNameCreator.CreateUniqueBlobDirectoryName();

            var blobDirectory = BlobContainer.GetBlobDirectory(directoryName);

            blobDirectory.Name.Should().Be(directoryName);
        }
        private IBlobContainer GetBlobContainer()
        {
            var uniqueBlobContainerName = AzureResourceUniqueNameCreator.CreateUniqueBlobContainerName();
            var blobContainer           = BlobClient.GetBlobContainer(uniqueBlobContainerName);

            _cleanupTasks.Add(() => blobContainer.DeleteIfExistsAsync());
            return(blobContainer);
        }
        private static IBlob GetBlob(IBlobDirectory blobDirectory)
        {
            var blobName = AzureResourceUniqueNameCreator.CreateUniqueBlobName();

            var blob = blobDirectory.GetBlob(blobName);

            return(blob);
        }
        private IBlobContainer CreateBlobContainer()
        {
            var containerName = AzureResourceUniqueNameCreator.CreateUniqueBlobContainerName();
            var c             = BlobClient.GetBlobContainer(containerName);

            _cleanupTasks.Add(() => c.DeleteIfExistsAsync());

            return(c);
        }
        public void GetBlobShouldReturnInstanceOfBlobFromBlobDirectoryEvenIfBlobDirectoryAndBlobDoesNotExists()
        {
            var directoryName = AzureResourceUniqueNameCreator.CreateUniqueBlobDirectoryName();
            var blobName      = AzureResourceUniqueNameCreator.CreateUniqueBlobName();

            var blob = GetBlobDirectoryWithName(directoryName).GetBlob(blobName);

            blob.Name.Should().Be(directoryName + "/" + blobName);
        }
        public async Task SetBlobPermissionToPublicShouldSetItAppropriately()
        {
            var containerName = AzureResourceUniqueNameCreator.CreateUniqueBlobContainerName();
            var blobContainer = CreateBlobContainer(containerName);
            await blobContainer.CreateAsync();

            await blobContainer.SetBlobPermissionsToPublicAsync();

            (await blobContainer.IsBlobPermissionsPublicAsync()).Should().BeTrue();
        }
        public void GetBlobDirectoryShouldReturnBlobDirectoryInstanceFromContainerEvenDirectoryDoesNotExists()
        {
            var containerName = AzureResourceUniqueNameCreator.CreateUniqueBlobContainerName();
            var blobContainer = CreateBlobContainer(containerName);

            var directoryName = AzureResourceUniqueNameCreator.CreateUniqueBlobDirectoryName();

            var blobDirectory = blobContainer.GetBlobDirectory(directoryName);

            blobDirectory.Should().NotBeNull();
        }
        public void BlobContainerCanGiveBlobEvenIfItDoesNotExist()
        {
            var containerName = AzureResourceUniqueNameCreator.CreateUniqueBlobContainerName();
            var blobContainer = CreateBlobContainer(containerName);

            var blobName = AzureResourceUniqueNameCreator.CreateUniqueBlobName();

            var blob = blobContainer.GetBlob(blobName);

            blob.Should().NotBeNull();
        }
        private async Task <string> UploadABlobInTheGivenDirectoryAndReturnItsName(string directoryName)
        {
            var blobName = AzureResourceUniqueNameCreator.CreateUniqueBlobName();

            var blob = GetBlobDirectoryWithName(directoryName).GetBlob(blobName);

            var textToUpload = string.Format(CultureInfo.InvariantCulture, "Content for {0}", blobName);
            await blob.UploadTextAsync(textToUpload);

            return(directoryName + "/" + blobName);
        }
        public async Task BlobContainerShouldBeAbleToBeDeletedEvenIfItHasBlobs()
        {
            var containerName = AzureResourceUniqueNameCreator.CreateUniqueBlobContainerName();
            var blobContainer = CreateBlobContainer(containerName);
            await blobContainer.CreateAsync();

            await blobContainer.GetBlob("blobName").UploadTextAsync("blobContent");

            await blobContainer.DeleteIfExistsAsync();

            Func <Task> action = async() => await blobContainer.GetBlob("blobName").UploadTextAsync("text");

            action.Should().Throw <Exception>();
        }
        public async Task UploadTextToABlobInBlobDirectoryUploadsTheText()
        {
            var directoryName = AzureResourceUniqueNameCreator.CreateUniqueBlobDirectoryName();
            await BlobContainer.CreateAsync();

            const string ContentToUpload = "Blob content";
            var          blobName        = AzureResourceUniqueNameCreator.CreateUniqueBlobName();

            await GetBlobDirectoryWithName(directoryName).GetBlob(blobName).UploadTextAsync(ContentToUpload);

            var blobContent = await GetBlobDirectoryWithName(directoryName).GetBlob(blobName).DownloadTextAsync();

            blobContent.Should().Contain(ContentToUpload);
        }
        public async Task ListBlobShouldReturnAllBlobsInDirectoryWithFullBlobName()
        {
            var directoryName = AzureResourceUniqueNameCreator.CreateUniqueBlobDirectoryName();
            await BlobContainer.CreateAsync();

            var contentOfBlobs = new[]
            {
                await UploadABlobInTheGivenDirectoryAndReturnItsName(directoryName),
                await UploadABlobInTheGivenDirectoryAndReturnItsName(directoryName)
            };

            var blobsFromDirectory = await GetBlobDirectoryWithName(directoryName).ListBlobsAsync(string.Empty, contentOfBlobs.Length, DateTime.MinValue);

            blobsFromDirectory.Select(blob => blob.Name).Should().Contain(contentOfBlobs);
        }