public async Task CloudBlobContainerWebContainerOperationsAsync() { // Test operations with shard key CloudBlobClient blobClient = GenerateCloudBlobClient(); CloudBlobContainer webContainer = blobClient.GetContainerReference("$web"); try { await webContainer.DeleteIfExistsAsync(); Assert.IsFalse(await webContainer.ExistsAsync()); await TestHelper.SpinUpToNSecondsIgnoringFailuresAsync(async() => await webContainer.CreateAsync(), 120); Assert.IsTrue(await webContainer.ExistsAsync()); Assert.IsTrue( (await blobClient.ListContainersSegmentedAsync("$", null)) .Results .Any(container => container.Name == webContainer.Name) ); await ValidateWebContainerAsync(webContainer); // Clear out the old data, faster than deleting / re-creating the container. foreach (CloudBlob blob in (await webContainer.ListBlobsSegmentedAsync(string.Empty, true, BlobListingDetails.All, default(int?), default(BlobContinuationToken), default(BlobRequestOptions), default(OperationContext))).Results) { await blob.DeleteAsync(); } // Test relevant operations with a service SAS. string webContainerSAS = webContainer.GetSharedAccessSignature(new SharedAccessBlobPolicy() { SharedAccessExpiryTime = DateTime.Now + TimeSpan.FromDays(30), Permissions = SharedAccessBlobPermissions.Create | SharedAccessBlobPermissions.Delete | SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Write }); await ValidateWebContainerAsync(new CloudBlobContainer(new Uri(webContainer.Uri + webContainerSAS))); await webContainer.DeleteAsync(); Assert.IsFalse( (await blobClient.ListContainersSegmentedAsync("$", null)) .Results .Any(container => container.Name == webContainer.Name) ); } finally { webContainer.DeleteIfExistsAsync().Wait(); } }
public async Task CloudBlobClientCreateBlobAndCheckExistsWithPublicAccessAsync() { CloudBlobClient blobClient = GenerateCloudBlobClient(); BlobContainerPublicAccessType[] accessValues = { BlobContainerPublicAccessType.Container, BlobContainerPublicAccessType.Off, BlobContainerPublicAccessType.Blob }; BlobContainerPermissions permissions = new BlobContainerPermissions(); foreach (BlobContainerPublicAccessType access in accessValues) { string name = GetRandomContainerName(); CloudBlobContainer container = blobClient.GetContainerReference(name); await container.CreateAsync(access, null, null); Assert.AreEqual(access, container.Properties.PublicAccess); CloudBlobContainer container2 = blobClient.GetContainerReference(name); BlobContainerPermissions containerAccess = await container2.GetPermissionsAsync(); Assert.AreEqual(access, containerAccess.PublicAccess); Assert.AreEqual(access, container2.Properties.PublicAccess); CloudBlobContainer container3 = blobClient.GetContainerReference(name); await container3.ExistsAsync(); Assert.AreEqual(access, container3.Properties.PublicAccess); await container.DeleteAsync(); } }
public async Task CloudBlobClientWithUppercaseAccountNameAsync() { StorageCredentials credentials = new StorageCredentials(TestBase.StorageCredentials.AccountName.ToUpper(), Convert.ToBase64String(TestBase.StorageCredentials.ExportKey())); Uri baseAddressUri = new Uri(TestBase.TargetTenantConfig.BlobServiceEndpoint); CloudBlobClient blobClient = new CloudBlobClient(baseAddressUri, TestBase.StorageCredentials); CloudBlobContainer container = blobClient.GetContainerReference("container"); await container.ExistsAsync(); }
public async Task CloudBlobContainerExistsAsync() { CloudBlobContainer container = GetRandomContainerReference(); try { Assert.IsFalse(await container.ExistsAsync()); await container.CreateAsync(); Assert.IsTrue(await container.ExistsAsync()); } finally { container.DeleteIfExistsAsync().AsTask().Wait(); } Assert.IsFalse(await container.ExistsAsync()); }
public async Task CloudBlobContainerExistsAsync() { CloudBlobContainer container = GetRandomContainerReference(); CloudBlobContainer container2 = container.ServiceClient.GetContainerReference(container.Name); try { Assert.IsFalse(await container2.ExistsAsync()); await container.CreateAsync(); Assert.IsTrue(await container2.ExistsAsync()); Assert.IsNotNull(container2.Properties.ETag); } finally { container.DeleteIfExistsAsync().AsTask().Wait(); } Assert.IsFalse(await container2.ExistsAsync()); }
public async Task CloudBlobClientCreateContainerSharedKeyLiteAsync() { CloudBlobClient blobClient = GenerateCloudBlobClient(); blobClient.AuthenticationScheme = AuthenticationScheme.SharedKeyLite; string containerName = GetRandomContainerName(); CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName); await blobContainer.CreateAsync(); bool exists = await blobContainer.ExistsAsync(); Assert.IsTrue(exists); await blobContainer.DeleteAsync(); }
/// <summary> /// Return a task that asynchronously check whether the specified container exists. /// </summary> /// <param name="container">CloudBlobContainer object</param> /// <param name="requestOptions">Blob request option</param> /// <param name="operationContext">Operation context</param> /// <param name="cmdletCancellationToken">Cancellation token</param> /// <returns>A task object that asynchronously check whether the specified container exists </returns> public Task<bool> DoesContainerExistAsync(CloudBlobContainer container, BlobRequestOptions requestOptions, OperationContext OperationContext, CancellationToken cancellationToken) { return container.ExistsAsync(requestOptions, OperationContext, cancellationToken); }
private async Task<HttpResponseMessage> ValidatePreconditions(CloudBlobContainer container) { // TODO: Ensure that all preconditions are validated if (!await container.ExistsAsync()) { return new HttpResponseMessage(HttpStatusCode.NotFound); } IEnumerable<string> leaseID; if (Request.Headers.TryGetValues("x-ms-lease-id", out leaseID)) { AccessCondition condition = new AccessCondition() { LeaseId = leaseID.First() }; //Try fetching the attributes to force validation of the leaseID await container.FetchAttributesAsync(condition, null, null); } // If we don't find any errors, just return null to indicate that everything is A-OK. return null; }