public void AzureProviderUtilitiesGenerateListOfBlocksToCommitReturnsValidOutputForMultipleBlocks()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            Guid fileID  = new Guid("51690d6e-f42a-4581-8e45-660b859bb432");
            int  blockID = 4;

            var result = provider.GenerateListOfBlocksToCommit(fileID, blockID);

            var expected = new List <string>()
            {
                "NTE2OTBkNmUtZjQyYS00NTgxLThlNDUtNjYwYjg1OWJiNDMyLTAwMDAwMDAw",
                "NTE2OTBkNmUtZjQyYS00NTgxLThlNDUtNjYwYjg1OWJiNDMyLTAwMDAwMDAx",
                "NTE2OTBkNmUtZjQyYS00NTgxLThlNDUtNjYwYjg1OWJiNDMyLTAwMDAwMDAy",
                "NTE2OTBkNmUtZjQyYS00NTgxLThlNDUtNjYwYjg1OWJiNDMyLTAwMDAwMDAz",
                "NTE2OTBkNmUtZjQyYS00NTgxLThlNDUtNjYwYjg1OWJiNDMyLTAwMDAwMDA0"
            };

            Assert.IsNotNull(result);
            Assert.AreEqual(expected.Count, result.Count);
            Assert.AreEqual(expected[0], result[0]);
            Assert.AreEqual(expected[1], result[1]);
            Assert.AreEqual(expected[2], result[2]);
            Assert.AreEqual(expected[3], result[3]);
            Assert.AreEqual(expected[4], result[4]);
        }
        public void AzureProviderUtilitiesGetHydrationStatusFromAzureStateCorrectlyParsesPendingCool()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var result   = provider.GetHydrationStatusFromAzureState(Microsoft.WindowsAzure.Storage.Blob.RehydrationStatus.PendingToCool);
            var expected = ArchivialLibrary.StorageProviders.StorageProviderHydrationStatus.MovingToActiveTier.ToString();

            Assert.AreEqual(expected, result);
        }
        public void AzureProviderUtilitiesGetHydrationStatusFromAzureStateCorrectlyParsesUnknown()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var result   = provider.GetHydrationStatusFromAzureState(Microsoft.WindowsAzure.Storage.Blob.RehydrationStatus.Unknown);
            var expected = ArchivialLibrary.StorageProviders.StorageProviderHydrationStatus.None.ToString();

            Assert.AreEqual(expected, result);
        }
        public void AzureProviderUtilitiesGetHydrationStatusFromAzureStateCorrectlyParsesNull()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var result   = provider.GetHydrationStatusFromAzureState(null);
            var expected = ArchivialLibrary.StorageProviders.StorageProviderHydrationStatus.None.ToString();

            Assert.AreEqual(expected, result);
        }
        public void AzureProviderUtilitiesGenerateListOfBlocksToCommitThrowsOnMissingBlockNumber()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            Guid fileID  = new Guid("51690d6e-f42a-4581-8e45-660b859bb432");
            int  blockID = -1; // should throw

            var result = provider.GenerateListOfBlocksToCommit(fileID, blockID);
        }
        public void AzureProviderUtilitiesGenerateListOfBlocksToCommitThrowsOnMissingFileID()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            Guid fileID  = Guid.Empty; // should throw
            int  blockID = 1;

            var result = provider.GenerateListOfBlocksToCommit(fileID, blockID);
        }
        public void AzureProviderUtilitiesGenerateBlockIdentifierBase64StringThrowsOnNegativeBlockNumber()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            Guid fileID  = new Guid("51690d6e-f42a-4581-8e45-660b859bb432");
            int  blockID = -1; // should throw

            var result = provider.GenerateBlockIdentifierBase64String(fileID, blockID);
        }
        public void AzureProviderUtilitiesGenerateBlockIdentifierBase64StringThrowsOnMissingFileID()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            Guid fileID  = Guid.Empty; // should throw
            int  blockID = 1;

            var result = provider.GenerateBlockIdentifierBase64String(fileID, blockID);
        }
        public void AzureProviderUtilitiesGetContainerUriThrowsArgumentExceptionOnMissingContainerName()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var storageAccount = "storage-account";
            var containerName  = string.Empty; // should throw

            var computedUri = provider.GetContainerUri(storageAccount, containerName);
        }
        public void AzureProviderUtilitiesGetContainerUriThrowsArgumentExceptionOnMissingStorageAccount()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var storageAccount = string.Empty; // should throw
            var folderID       = "a4b78664-90c9-4957-90a1-66d9c70c0492";
            var containerName  = string.Format("{0}-directory-{1}", ArchivialLibrary.Constants.Logging.AppName, folderID).ToLower();

            var computedUri = provider.GetContainerUri(storageAccount, containerName);
        }
        public void AzureProviderUtilitiesGetFileUriThrowsArgumentExceptionOnMissingContainerName()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var storageAccount = "storage-account";
            var fileID         = "29164dbc-f17b-4643-8f40-868e13b98141";

            var containerName = string.Empty; // should throw
            var fileName      = string.Format("{0}-file-{1}", ArchivialLibrary.Constants.Logging.AppName, fileID).ToLower();

            var computedUri = provider.GetFileUri(storageAccount, containerName, fileName);
        }
        public void AzureProviderUtilitiesGenerateBlockIdentifierBase64StringReturnsValidOutput()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            Guid fileID  = new Guid("51690d6e-f42a-4581-8e45-660b859bb432");
            int  blockID = 1;

            var result   = provider.GenerateBlockIdentifierBase64String(fileID, blockID);
            var expected = "NTE2OTBkNmUtZjQyYS00NTgxLThlNDUtNjYwYjg1OWJiNDMyLTAwMDAwMDAx";

            Assert.AreEqual(expected, result);
        }
        public void AzureProviderUtilitiesGetContainerUriReturnsHttpsUri()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var storageAccount = "storage-account";
            var folderID       = Guid.NewGuid().ToString();
            var containerName  = string.Format("{0}-directory-{1}", ArchivialLibrary.Constants.Logging.AppName, folderID).ToLower();

            var uri = provider.GetContainerUri(storageAccount, containerName);

            Assert.IsNotNull(uri);
            Assert.IsTrue(uri.StartsWith("https://"));
        }
        public void AzureProviderUtilitiesGetContainerUriReturnsCorrectlyFormattedFullURI()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var storageAccount = "storage-account";
            var folderID       = "a4b78664-90c9-4957-90a1-66d9c70c0492";
            var containerName  = string.Format("{0}-directory-{1}", ArchivialLibrary.Constants.Logging.AppName, folderID).ToLower();

            var computedUri = provider.GetContainerUri(storageAccount, containerName);

            var expected = "https://storage-account.blob.core.windows.net/archivial-directory-a4b78664-90c9-4957-90a1-66d9c70c0492";

            Assert.IsNotNull(computedUri);
            Assert.AreEqual(expected, computedUri);
        }
        public void AzureProviderUtilitiesGetHydrationStatusFromAzureStateCorrectlyThrowsOnUnexpectedValue()
        {
            var provider = new ArchivialLibrary.StorageProviders.Azure.AzureStorageProviderUtilities();

            var result = provider.GetHydrationStatusFromAzureState((Microsoft.WindowsAzure.Storage.Blob.RehydrationStatus) 500); // not a real enum value
        }