public async Task DeleteArchivedBlobsAsync_PassGreaterThan0RetainedBlobCountLimit_DeletesSuccessfully(string blobNameFormat, string[] fakeBlobs) { const int retainedBlobCountLimit = 1; List <IListBlobItem> fakeBlobItems = new List <IListBlobItem>(); string fakeBlob1 = fakeBlobs[0]; CloudAppendBlob fakeBlobItem1 = SetupCloudAppendBlobReference(fakeBlob1, 1, 1000); fakeBlobItems.Add(fakeBlobItem1); string fakeBlob2 = fakeBlobs[1]; CloudAppendBlob fakeBlobItem2 = SetupCloudAppendBlobReference(fakeBlob2, 1, 1000); fakeBlobItems.Add(fakeBlobItem2); string fakeBlob3 = fakeBlobs[2]; CloudAppendBlob fakeBlobItem3 = SetupCloudAppendBlobReference(fakeBlob3, 1, 1000); fakeBlobItems.Add(fakeBlobItem3); BlobResultSegment fakeBlobResultSegment = new BlobResultSegment(fakeBlobItems, null); A.CallTo(() => blobContainer.ListBlobsSegmentedAsync(null, true, BlobListingDetails.None, null, A <BlobContinuationToken> .Ignored, null, null)).Returns(Task.FromResult(fakeBlobResultSegment)); await defaultCloudBlobProvider.DeleteArchivedBlobsAsync(blobClient, blobContainerName, blobNameFormat, retainedBlobCountLimit); A.CallTo(() => fakeBlobItem1.DeleteIfExistsAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeBlobItem2.DeleteIfExistsAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeBlobItem3.DeleteIfExistsAsync()).MustNotHaveHappened(); }
private CloudAppendBlob SetupCloudAppendBlobReference(string blobName, int blockCount, int filesize) { CloudAppendBlob cloudAppendBlob = A.Fake <CloudAppendBlob>(opt => opt.WithArgumentsForConstructor(new object[] { new Uri("https://account.suffix.blobs.com/logcontainer/" + blobName) })); SetCloudBlobBlockCount(cloudAppendBlob, blockCount); SetBlobLength(cloudAppendBlob, filesize); A.CallTo(() => cloudAppendBlob.Name).Returns(blobName); A.CallTo(() => cloudAppendBlob.CreateOrReplaceAsync(A <AccessCondition> .Ignored, null, null)).Returns(Task.FromResult(true)); A.CallTo(() => cloudAppendBlob.FetchAttributesAsync()).Returns(Task.FromResult(true)); A.CallTo(() => cloudAppendBlob.DeleteIfExistsAsync()).Returns(Task.FromResult(true)); A.CallTo(() => blobContainer.GetAppendBlobReference(blobName)).Returns(cloudAppendBlob); return(cloudAppendBlob); }