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);
 }
Esempio n. 8
0
 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;
 }