public async Task GivenAValidDirectoryName_WhenDeleteIfExists_DirectoryAndBlobsShouldBeDeleted() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient adlsClient = GetTestAdlsGen2Client(uniqueContainerName); Skip.If(adlsClient == null); var blobContainerClient = GetBlobContainerClient(uniqueContainerName); blobContainerClient.CreateIfNotExists(); try { var blobName = "foo/bar1/1.txt"; await blobContainerClient.UploadBlobAsync(blobName, new MemoryStream(new byte[] { 1, 2, 3 })); var blobClient = blobContainerClient.GetBlobClient(blobName); Assert.True(blobClient.Exists()); await adlsClient.DeleteDirectoryIfExistsAsync("foo/bar1"); Assert.False(blobClient.Exists()); } finally { await blobContainerClient.DeleteAsync(); } }
public async void DownloadBlob_StreamShouldReturn() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); var blobClient = blobContainerClient.GetBlobClient(blobName); string blobContent = "example"; // create a new blob using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(blobContent))) { var isCreated = await blobProvider.CreateBlobAsync(blobName, stream, CancellationToken.None); Assert.True(isCreated); Assert.True(blobClient.Exists()); } using Stream downloadStream = await blobProvider.GetBlobAsync(blobName, CancellationToken.None); using var reader = new StreamReader(downloadStream); Assert.Equal(blobContent, reader.ReadToEnd()); await blobContainerClient.DeleteAsync(); }
public async Task GivenANotExistingDirectoryName_WhenListPaths_NoPathShouldBeReturned() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient adlsClient = GetTestAdlsGen2Client(uniqueContainerName); Skip.If(adlsClient == null); var blobContainerClient = GetBlobContainerClient(uniqueContainerName); blobContainerClient.CreateIfNotExists(); try { var paths = new List <PathItem>(); await foreach (var item in adlsClient.ListPathsAsync(uniqueContainerName)) { paths.Add(item); } Assert.Empty(paths); } finally { await blobContainerClient.DeleteAsync(); } }
public async void CreateNewBlobTwice_FalseShouldReturn() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); var blobClient = blobContainerClient.GetBlobClient(blobName); await blobClient.DeleteIfExistsAsync(); Assert.False(blobClient.Exists()); // create a new blob using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("example"))) { var isCreated = await blobProvider.CreateBlobAsync(blobName, stream, CancellationToken.None); Assert.True(isCreated); Assert.True(blobClient.Exists()); } // create the blob again using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("new example"))) { var isCreated = await blobProvider.CreateBlobAsync(blobName, stream, CancellationToken.None); Assert.False(isCreated); Assert.True(blobClient.Exists()); } await blobContainerClient.DeleteAsync(); }
public async void AcquireLease_WhenALeaseExists_ExceptionShouldBeThrown() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); var blobClient = blobContainerClient.GetBlobClient(blobName); blobClient.DeleteIfExists(); Assert.False(blobClient.Exists()); // create a new blob string blobContent = "example"; var blobUrl_1 = await blobProvider.CreateBlobAsync(blobName, new MemoryStream(Encoding.ASCII.GetBytes(blobContent)), CancellationToken.None); Assert.True(blobClient.Exists()); var lease = await blobProvider.AcquireLeaseAsync(blobName, null, TimeSpan.FromSeconds(30), default); Assert.NotNull(lease); var lease2 = await blobProvider.AcquireLeaseAsync(blobName, null, TimeSpan.FromSeconds(30), default); Assert.Null(lease2); var lease3 = await blobProvider.AcquireLeaseAsync(blobName, lease, TimeSpan.FromSeconds(30), default); Assert.Equal(lease, lease3); await blobContainerClient.DeleteAsync(); }
public async void AccessBlobProvider_WhenContainerNoExists_ExceptionShouldBeThrown() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); // call function of blobProvider using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("example"))) { Assert.True(await blobProvider.CreateBlobAsync(blobName, stream, CancellationToken.None)); } var blobServiceClient = new BlobServiceClient(ConnectionString); // delete the created container blobServiceClient.DeleteBlobContainer(uniqueContainerName); // call CreateBlobAsync() after the container is deleted by others using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("new example"))) { await Assert.ThrowsAsync <AzureBlobOperationFailedException>(() => blobProvider.CreateBlobAsync(blobName, stream, CancellationToken.None)); } // call UploadStreamToBlobAsync()after the container is deleted by others using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("new example"))) { await Assert.ThrowsAsync <AzureBlobOperationFailedException>(() => blobProvider.UpdateBlobAsync(blobName, stream, CancellationToken.None)); } // call GetBlobAsync() after the container is deleted by others await Assert.ThrowsAsync <AzureBlobOperationFailedException>(() => blobProvider.GetBlobAsync(blobName, CancellationToken.None)); }
public async void RenewLease_WhenBlobNotExists_NoLeaseShouldReturn() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); await Assert.ThrowsAsync <AzureBlobOperationFailedException>(() => blobProvider.RenewLeaseAsync(blobName, null, default)); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); await blobContainerClient.DeleteIfExistsAsync(); }
public async void AcquireLease_WhenBlobNotExists_NoLeaseShouldReturn() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var lease = await blobProvider.AcquireLeaseAsync(blobName, null, TimeSpan.FromSeconds(30), default); Assert.Null(lease); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); await blobContainerClient.DeleteIfExistsAsync(); }
public async void ReleaseLease_WhenBlobNotExists_NoLeaseShouldReturn() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var result = await blobProvider.ReleaseLeaseAsync(blobName, null, default); Assert.False(result); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); await blobContainerClient.DeleteIfExistsAsync(); }
public async void UpdateStreamToBlob_TheBlobShouldBeOverwriten() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); var blobClient = blobContainerClient.GetBlobClient(blobName); blobClient.DeleteIfExists(); Assert.False(blobClient.Exists()); // create a new blob string blobContent = "example"; var blobUrl_1 = await blobProvider.UpdateBlobAsync(blobName, new MemoryStream(Encoding.ASCII.GetBytes(blobContent)), CancellationToken.None); Assert.True(blobClient.Exists()); using (var stream = new MemoryStream()) { var res = await blobClient.DownloadToAsync(stream); stream.Position = 0; using var reader = new StreamReader(stream); Assert.Equal(blobContent, reader.ReadToEnd()); } // upload to a existing blob string newBlobContent = "new example"; var blobUrl_2 = await blobProvider.UpdateBlobAsync(blobName, new MemoryStream(Encoding.ASCII.GetBytes(newBlobContent)), CancellationToken.None); Assert.Equal(blobUrl_1, blobUrl_2); Assert.True(blobClient.Exists()); using (var stream = new MemoryStream()) { var res = await blobClient.DownloadToAsync(stream); stream.Position = 0; using var reader = new StreamReader(stream); Assert.Equal(newBlobContent, reader.ReadToEnd()); } await blobContainerClient.DeleteAsync(); }
public async void DownloadNoExistingBlob_StreamShouldReturn() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); var blobClient = blobContainerClient.GetBlobClient(blobName); Assert.False(blobClient.Exists()); using Stream downloadStream = await blobProvider.GetBlobAsync(blobName, CancellationToken.None); Assert.Null(downloadStream); await blobContainerClient.DeleteAsync(); }
public async Task GivenANotExistingDirectoryName_WhenMoveDirectory_ExceptionShouldBeThrown() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient adlsClient = GetTestAdlsGen2Client(uniqueContainerName); Skip.If(adlsClient == null); var blobContainerClient = GetBlobContainerClient(uniqueContainerName); blobContainerClient.CreateIfNotExists(); try { await Assert.ThrowsAsync <AzureBlobOperationFailedException>(() => adlsClient.MoveDirectoryAsync("foldernotexist", "dest")); } finally { await blobContainerClient.DeleteAsync(); } }
public async void DeleteNoExistingBlob_FalseShouldReturn() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); var blobClient = blobContainerClient.GetBlobClient(blobName); Assert.False(blobClient.Exists()); // delete the blob var isDeleted = await blobProvider.DeleteBlobAsync(blobName, cancellationToken : CancellationToken.None); Assert.False(isDeleted); Assert.False(blobClient.Exists()); await blobContainerClient.DeleteAsync(); }
public async Task GivenANotExistingDirectoryName_WhenDeleteIfExists_NoExceptionShouldBeThrown() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient adlsClient = GetTestAdlsGen2Client(uniqueContainerName); Skip.If(adlsClient == null); var blobContainerClient = GetBlobContainerClient(uniqueContainerName); blobContainerClient.CreateIfNotExists(); try { var exception = await Record.ExceptionAsync(async() => await adlsClient.DeleteDirectoryIfExistsAsync("foldernotexist")); Assert.Null(exception); } finally { await blobContainerClient.DeleteAsync(); } }
public async Task GivenADirectoryName_WhenMoveDirectories_AllSubDirectoriesShouldBeMoved() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient adlsClient = GetTestAdlsGen2Client(uniqueContainerName); Skip.If(adlsClient == null); var blobContainerClient = GetBlobContainerClient(uniqueContainerName); blobContainerClient.CreateIfNotExists(); try { // Set up directory info var blobList = new List <string> { "foo/bar/1.txt", "foo/bar1/1.txt", "foo/bar2/2.txt", "foo/bar2/2.1.txt", "foo/bar3/3.txt" }; var expectedBlobs = new List <string> { "boo/bar/1.txt", "boo/bar1/1.txt", "boo/bar2/2.txt", "boo/bar2/2.1.txt", "boo/bar3/3.txt" }; foreach (var blob in blobList) { await blobContainerClient.UploadBlobAsync(blob, new MemoryStream(new byte[] { 1, 2, 3 })); } await adlsClient.MoveDirectoryAsync("foo", "boo"); foreach (var expectedBlob in expectedBlobs) { var blob = blobContainerClient.GetBlobClient(expectedBlob); Assert.True(blob.Exists()); } } finally { await blobContainerClient.DeleteAsync(); } }
public async Task GivenAValidDirectoryName_WhenListPaths_AllPathsShouldBeReturned() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient adlsClient = GetTestAdlsGen2Client(uniqueContainerName); Skip.If(adlsClient == null); var blobContainerClient = GetBlobContainerClient(uniqueContainerName); blobContainerClient.CreateIfNotExists(); try { // Set up directory info var blobList = new List <string> { "foo/bar/1.txt", "foo/bar1/1.txt", "foo/bar2/2.txt", "foo/bar2/2.1.txt", "foo/bar3/3.txt" }; var expectedResult = new HashSet <string> { "foo/bar", "foo/bar1", "foo/bar2", "foo/bar3", "foo/bar/1.txt", "foo/bar1/1.txt", "foo/bar2/2.txt", "foo/bar2/2.1.txt", "foo/bar3/3.txt" }; foreach (var blob in blobList) { await blobContainerClient.UploadBlobAsync(blob, new MemoryStream(new byte[] { 1, 2, 3 })); } var paths = new List <PathItem>(); await foreach (var item in adlsClient.ListPathsAsync("foo")) { paths.Add(item); } Assert.Equal(expectedResult, paths.Select(x => x.Name).ToHashSet()); } finally { await blobContainerClient.DeleteAsync(); } }
public async void CreateLargeNewBlobTwice_AtTheSameTime_TrueShouldReturnForTheFirstCompleted_And_FalseShouldReturnForTheSecondOne() { var uniqueContainerName = Guid.NewGuid().ToString("N"); AzureBlobContainerClient blobProvider = GetTestBlobProvider(ConnectionString, uniqueContainerName); string blobName = Guid.NewGuid().ToString("N"); var blobContainerClient = new BlobContainerClient(ConnectionString, uniqueContainerName); var blobClient = blobContainerClient.GetBlobClient(blobName); await blobClient.DeleteIfExistsAsync(); Assert.False(blobClient.Exists()); using MemoryStream sourceStream = new MemoryStream(); using StreamWriter writer = new StreamWriter(sourceStream); int lineNumber = (1024 * 1024) + 3; while (lineNumber-- > 0) { await writer.WriteLineAsync(Guid.NewGuid().ToString("N")); } await writer.FlushAsync(); sourceStream.Position = 0; var task_1 = blobProvider.CreateBlobAsync(blobName, sourceStream, CancellationToken.None); var task_2 = blobProvider.CreateBlobAsync(blobName, sourceStream, CancellationToken.None); var isCreateds = await Task.WhenAll(task_1, task_2); Assert.True(blobClient.Exists()); Assert.True(isCreateds[0] ^ isCreateds[1]); await blobContainerClient.DeleteAsync(); }