public async Task CloudBlobContainerSetPermissionsAsync() { CloudBlobContainer container = GetRandomContainerReference(); try { await container.CreateAsync(); BlobContainerPermissions permissions = await container.GetPermissionsAsync(); Assert.AreEqual(BlobContainerPublicAccessType.Off, permissions.PublicAccess); Assert.AreEqual(0, permissions.SharedAccessPolicies.Count); // We do not have precision at milliseconds level. Hence, we need // to recreate the start DateTime to be able to compare it later. DateTime start = DateTime.UtcNow; start = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute, start.Second, DateTimeKind.Utc); DateTime expiry = start.AddMinutes(30); permissions.PublicAccess = BlobContainerPublicAccessType.Container; permissions.SharedAccessPolicies.Add("key1", new SharedAccessBlobPolicy() { SharedAccessStartTime = start, SharedAccessExpiryTime = expiry, Permissions = SharedAccessBlobPermissions.List, }); await container.SetPermissionsAsync(permissions); await Task.Delay(30 * 1000); CloudBlobContainer container2 = container.ServiceClient.GetContainerReference(container.Name); permissions = await container2.GetPermissionsAsync(); Assert.AreEqual(BlobContainerPublicAccessType.Container, permissions.PublicAccess); Assert.AreEqual(1, permissions.SharedAccessPolicies.Count); Assert.IsTrue(permissions.SharedAccessPolicies["key1"].SharedAccessStartTime.HasValue); Assert.AreEqual(start, permissions.SharedAccessPolicies["key1"].SharedAccessStartTime.Value.UtcDateTime); Assert.IsTrue(permissions.SharedAccessPolicies["key1"].SharedAccessExpiryTime.HasValue); Assert.AreEqual(expiry, permissions.SharedAccessPolicies["key1"].SharedAccessExpiryTime.Value.UtcDateTime); Assert.AreEqual(SharedAccessBlobPermissions.List, permissions.SharedAccessPolicies["key1"].Permissions); } finally { container.DeleteIfExistsAsync().Wait(); } }
public async Task CloudBlockBlobPutBlockFromUrlCPKTask() { // Arrange CloudBlobContainer container = GetRandomContainerReference(); await container.CreateAsync(); var containerPermissions = await container.GetPermissionsAsync(); containerPermissions.PublicAccess = BlobContainerPublicAccessType.Container; await container.SetPermissionsAsync(containerPermissions); var customerProvidedKey = BuildCustomerProvidedKey(); var options = new BlobRequestOptions { CustomerProvidedKey = customerProvidedKey }; var sourceBlockBlob = container.GetBlockBlobReference(GetRandomBlobName()); var destBlockBlob = container.GetBlockBlobReference(GetRandomBlobName()); try { byte[] buffer = GetRandomBuffer(1024); using (MemoryStream sourceStream = new MemoryStream(buffer)) { await sourceBlockBlob.UploadFromStreamAsync(sourceStream, null, null, null); } using (MemoryStream sourceStream = new MemoryStream(buffer)) { var context = new OperationContext(); // Act await destBlockBlob.PutBlockAsync(GetBlockId(), sourceBlockBlob.Uri, 0, 1024, null, null, options, context); // Assert Assert.IsTrue(context.RequestResults.First().IsRequestServerEncrypted); Assert.AreEqual(options.CustomerProvidedKey.KeySHA256, context.RequestResults.First().EncryptionKeySHA256); } } finally { await container.DeleteAsync(); } }
public async Task CloudBlockBlobPutBlockFromUrlEncryptionScopeTask() { // Arrange CloudBlobContainer container = GetRandomContainerReference(); await container.CreateAsync(); var containerPermissions = await container.GetPermissionsAsync(); containerPermissions.PublicAccess = BlobContainerPublicAccessType.Container; await container.SetPermissionsAsync(containerPermissions); var encryptionScope = TestBase.TargetTenantConfig.EncryptionScope; var options = new BlobRequestOptions { EncryptionScope = encryptionScope }; var sourceBlockBlob = container.GetBlockBlobReference(GetRandomBlobName()); var destBlockBlob = container.GetBlockBlobReference(GetRandomBlobName()); try { byte[] buffer = GetRandomBuffer(1024); using (MemoryStream sourceStream = new MemoryStream(buffer)) { await sourceBlockBlob.UploadFromStreamAsync(sourceStream, null, null, null); } using (MemoryStream sourceStream = new MemoryStream(buffer)) { var context = new OperationContext(); // Act await destBlockBlob.PutBlockAsync(GetBlockId(), sourceBlockBlob.Uri, 0, 1024, null, null, options, context); // Assert Assert.AreEqual(options.EncryptionScope, context.RequestResults.First().EncryptionScope); } } finally { await container.DeleteAsync(); } }