public async Task Delete_ContainerScoped_Basic_Convenience_ContainerSas() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); string containerName = scenario.Containers[0].Container.Name; BlobSasBuilder blobSasBuilder = new BlobSasBuilder(BlobContainerSasPermissions.All, Recording.Now.AddDays(1)) { BlobContainerName = containerName }; BlobSasQueryParameters sasQueryParameters = blobSasBuilder.ToSasQueryParameters(GetNewSharedKeyCredentials()); BlobUriBuilder blobUriBuilder = new BlobUriBuilder(scenario.Service.Uri) { BlobContainerName = containerName, Sas = sasQueryParameters }; BlobContainerClient sasContainerClient = InstrumentClient(new BlobContainerClient(blobUriBuilder.ToUri(), GetOptions())); BlobBatchClient blobBatchClient = sasContainerClient.GetBlobBatchClient(); Uri[] uris = blobs.Select(b => new Uri($"{b.Uri}?{sasQueryParameters}")).ToArray(); Response[] responses = await blobBatchClient.DeleteBlobsAsync(uris); scenario.AssertStatus(202, responses); await scenario.AssertDeleted(blobs); }
public async Task Delete_Basic_Convenience() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); Uri[] uris = blobs.Select(b => b.Uri).ToArray(); BlobBatchClient client = scenario.GetBlobBatchClient(); Response[] responses = await client.DeleteBlobsAsync(uris); scenario.AssertStatus(202, responses); await scenario.AssertDeleted(blobs); }
public async Task Delete_MultipleFail_Convenience() { await using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(2); Uri[] uris = good.Select(b => b.Uri).Concat(bad).ToArray(); BlobBatchClient client = scenario.GetBlobBatchClient(); AggregateException exes = Assert.ThrowsAsync <AggregateException>( async() => await client.DeleteBlobsAsync(uris)); Assert.AreEqual(2, exes.InnerExceptions.Count); Assert.AreEqual(404, (exes.InnerExceptions[0] as RequestFailedException)?.Status); Assert.AreEqual(404, (exes.InnerExceptions[1] as RequestFailedException)?.Status); await scenario.AssertDeleted(good); }
public async Task Delete_MultipleFail_NoThrow() { using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(2); BlobBatchClient client = scenario.GetBlobBatchClient(); BlobBatch batch = client.CreateBatch(); Response response1 = batch.DeleteBlob(good[0].Uri); Response response2 = batch.DeleteBlob(bad[0]); Response response3 = batch.DeleteBlob(bad[1]); Response response = await client.SubmitBatchAsync(batch, throwOnFailure : false); scenario.AssertStatus(202, response, response1); scenario.AssertStatus(404, response2, response3); await scenario.AssertDeleted(good); }
public async Task Delete_OneFails_NoThrow() { await using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(2); Uri[] bad = scenario.GetInvalidBlobUris(1); BlobBatchClient client = scenario.GetBlobBatchClient(); using BlobBatch batch = client.CreateBatch(); Response response1 = batch.DeleteBlob(good[0].Uri); Response response2 = batch.DeleteBlob(good[1].Uri); Response response3 = batch.DeleteBlob(bad[0]); Response response = await client.SubmitBatchAsync(batch, throwOnAnyFailure : false); Assert.AreEqual(3, batch.RequestCount); scenario.AssertStatus(202, response, response1, response2); scenario.AssertStatus(404, response3); await scenario.AssertDeleted(good); }
public async Task Delete_OneFails_Convenience() { await using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(2); Uri[] bad = scenario.GetInvalidBlobUris(1); Uri[] uris = good.Select(b => b.Uri).Concat(bad).ToArray(); BlobBatchClient client = scenario.GetBlobBatchClient(); AggregateException exes = Assert.ThrowsAsync <AggregateException>( async() => await client.DeleteBlobsAsync(uris)); RequestFailedException ex = exes.InnerException as RequestFailedException; Assert.IsNotNull(ex); Assert.AreEqual(404, ex.Status); Assert.IsTrue(BlobErrorCode.ContainerNotFound == ex.ErrorCode); await scenario.AssertDeleted(good); }
public async Task Delete_Basic() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); BlobBatchClient client = scenario.GetBlobBatchClient(); using BlobBatch batch = client.CreateBatch(); Response[] responses = new Response[] { batch.DeleteBlob(blobs[0].Uri), batch.DeleteBlob(blobs[1].Uri), batch.DeleteBlob(blobs[2].Uri) }; Response response = await client.SubmitBatchAsync(batch); scenario.AssertStatus(202, response); scenario.AssertStatus(202, responses); await scenario.AssertDeleted(blobs); }
public async Task Delete_MultipleFail() { using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(1); Uri[] bad = scenario.GetInvalidBlobUris(2); BlobBatchClient client = scenario.GetBlobBatchClient(); BlobBatch batch = client.CreateBatch(); Response response1 = batch.DeleteBlob(good[0].Uri); Response response2 = batch.DeleteBlob(bad[0]); Response response3 = batch.DeleteBlob(bad[1]); AggregateException exes = Assert.ThrowsAsync <AggregateException>( async() => await client.SubmitBatchAsync(batch)); Assert.AreEqual(2, exes.InnerExceptions.Count); Assert.AreEqual(404, (exes.InnerExceptions[0] as RequestFailedException)?.Status); Assert.AreEqual(404, (exes.InnerExceptions[1] as RequestFailedException)?.Status); await scenario.AssertDeleted(good); }
public async Task Batch_Dispose_Response_Still_Available() { await using TestScenario scenario = Scenario(); BlobClient[] blobs = await scenario.CreateBlobsAsync(3); BlobBatchClient client = scenario.GetBlobBatchClient(); Response[] responses = new Response[3]; Response response; using (BlobBatch batch = client.CreateBatch()) { responses[0] = batch.DeleteBlob(blobs[0].Uri); responses[1] = batch.DeleteBlob(blobs[1].Uri); responses[2] = batch.DeleteBlob(blobs[2].Uri); response = await client.SubmitBatchAsync(batch); } scenario.AssertStatus(202, response); scenario.AssertStatus(202, responses); await scenario.AssertDeleted(blobs); }
public async Task Delete_OneFails() { using TestScenario scenario = Scenario(); BlobClient[] good = await scenario.CreateBlobsAsync(2); Uri[] bad = scenario.GetInvalidBlobUris(1); BlobBatchClient client = scenario.GetBlobBatchClient(); BlobBatch batch = client.CreateBatch(); Response response1 = batch.DeleteBlob(good[0].Uri); Response response2 = batch.DeleteBlob(good[1].Uri); Response response3 = batch.DeleteBlob(bad[0]); AggregateException exes = Assert.ThrowsAsync <AggregateException>( async() => await client.SubmitBatchAsync(batch)); RequestFailedException ex = exes.InnerException as RequestFailedException; Assert.IsNotNull(ex); Assert.AreEqual(404, ex.Status); Assert.IsTrue(BlobErrorCode.ContainerNotFound == ex.ErrorCode); await scenario.AssertDeleted(good); }