public void SetContainerACL_NoLeaseForLeasedContainer_SetsPolicySuccesfully()
        {
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);
            var containerName = GenerateSampleContainerName();
            CreateContainer(containerName);
            LeaseContainer(containerName, null, null);
            var expectedStartTime = GetTruncatedUtcNow();
            var expectedIdentifier = new BlobSignedIdentifier()
            {
                Id = "abc-123",
                AccessPolicy = new BlobAccessPolicy()
                {
                    StartTime = expectedStartTime,
                    Expiry = expectedStartTime.AddHours(1),
                    Permission = BlobSharedAccessPermissions.Read | BlobSharedAccessPermissions.Write | BlobSharedAccessPermissions.Delete | BlobSharedAccessPermissions.List
                }
            };

            client.SetContainerACL(containerName, ContainerAccessType.PublicContainer, new List<BlobSignedIdentifier>() { expectedIdentifier });

            var actual = GetContainerPermissions(containerName);
            Assert.AreEqual(1, actual.SharedAccessPolicies.Count);
        }
        public void SetContainerACL_WrongLeaseForLeasedContainer_ThrowsLeaseMismatchException()
        {
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);
            var containerName = GenerateSampleContainerName();
            CreateContainer(containerName);
            LeaseContainer(containerName, null, null);

            client.SetContainerACL(containerName, ContainerAccessType.None, new List<BlobSignedIdentifier>(), FakeLeaseId);

            var actual = GetContainerPermissions(containerName);
            Assert.AreEqual(Microsoft.WindowsAzure.Storage.Blob.BlobContainerPublicAccessType.Off, actual.PublicAccess);
        }
        public void SetContainerACL_InvalidContainer_ThrowsContainerNotFoundException()
        {
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);
            var containerName = GenerateSampleContainerName();

            client.SetContainerACL(containerName, ContainerAccessType.None, new List<BlobSignedIdentifier>());

            // expects exception
        }
        public void SetContainerACL_NoPublicAccessAndPolicyForValidContainer_ClearsPublicAccessOnContainer()
        {
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);
            var containerName = GenerateSampleContainerName();
            CreateContainer(containerName);
            AddContainerAccessPolicy(containerName, Microsoft.WindowsAzure.Storage.Blob.BlobContainerPublicAccessType.Container);

            client.SetContainerACL(containerName, ContainerAccessType.None, new List<BlobSignedIdentifier>());

            var actual = GetContainerPermissions(containerName);
            Assert.AreEqual(Microsoft.WindowsAzure.Storage.Blob.BlobContainerPublicAccessType.Off, actual.PublicAccess);
        }
        public void SetContainerACL_PublicAccessAndNoPolicyForValidContainer_SetsPublicAccessOnContainer()
        {
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);
            var containerName = GenerateSampleContainerName();
            CreateContainer(containerName);

            client.SetContainerACL(containerName, ContainerAccessType.PublicBlob, new List<BlobSignedIdentifier>());

            var actual = GetContainerPermissions(containerName);
            Assert.AreEqual(0, actual.SharedAccessPolicies.Count);
            Assert.AreEqual(Microsoft.WindowsAzure.Storage.Blob.BlobContainerPublicAccessType.Blob, actual.PublicAccess);
        }
        public void SetContainerACL_AllPolicyForValidContainer_SetsPolicyAndPublicAccessOnContainer()
        {
            IBlobServiceClient client = new BlobServiceClient(AccountSettings);
            var containerName = GenerateSampleContainerName();
            CreateContainer(containerName);
            var expectedStartTime = GetTruncatedUtcNow();
            var expectedIdentifier = new BlobSignedIdentifier()
            {
                Id = "abc-123",
                AccessPolicy = new BlobAccessPolicy()
                {
                    StartTime = expectedStartTime,
                    Expiry = expectedStartTime.AddHours(1),
                    Permission = BlobSharedAccessPermissions.Read | BlobSharedAccessPermissions.Write | BlobSharedAccessPermissions.Delete | BlobSharedAccessPermissions.List
                }
            };

            client.SetContainerACL(containerName, ContainerAccessType.PublicContainer, new List<BlobSignedIdentifier>() { expectedIdentifier });

            var actual = GetContainerPermissions(containerName);
            Assert.AreEqual(1, actual.SharedAccessPolicies.Count);
            AssertIdentifierInSharedAccessPolicies(actual.SharedAccessPolicies, expectedIdentifier, Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Read | Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Write | Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.List | Microsoft.WindowsAzure.Storage.Blob.SharedAccessBlobPermissions.Delete);
        }