/// <summary>
        /// Returns the database connection.
        /// </summary>
        /// <returns></returns>
        internal IClientDatabase GetDatabaseConnection()
        {
            if (Database != null)
            {
                return(Database);
            }
            else
            {
                base.WriteVerbose("Preparing Archivial Database Connection.");

                var coreSettings = GetCoreSettingsAccessor();

                string dbConnectionString = null;

                try
                {
                    dbConnectionString = coreSettings.GetDatabaseConnectionString();
                }
                catch (ApplicationCoreSettingMissingException)
                {
                    throw new ApplicationException("Cannot run the requested command. Archivial Cloud Backup installation is missing and the product must be installed first.");
                }

                base.WriteVerbose("Database connection string: " + dbConnectionString);

                var logger = new ConsoleLogger(false);
                var db     = new SQLServerClientDatabase(dbConnectionString, logger, coreSettings);

                Database = db;
                return(db);
            }
        }
        public void ProtectedDataStoreConstructorThrowsOnNoEntropy()
        {
            var db      = new SQLServerClientDatabase(TestConnectionString, new MockLogger(), SharedMockedCoreSettings);
            var entropy = new byte[] { };
            var scope   = System.Security.Cryptography.DataProtectionScope.CurrentUser;

            ProtectedDataStore pds = new ProtectedDataStore(db, scope, entropy);
        }
Beispiel #3
0
        public void RestoreEngineConstructorDoesNotThrowWhenValidArgumentsAreProvided()
        {
            var logger = new MockLogger();
            var db     = new SQLServerClientDatabase(TestConnectionString, new MockLogger(), SharedMockedCoreSettings);

            var engine = new RestoreEngine(db, logger, 0, SharedMockedCoreSettings);

            Assert.IsNotNull(engine);
        }
        public async Task ProtectedDataStoreSetApplicationSecretThrowsWhenNoOptionValueIsProvided()
        {
            var db      = new SQLServerClientDatabase(TestConnectionString, new MockLogger(), SharedMockedCoreSettings);
            var entropy = new byte[] { 123, 2, 15, 212, 174, 141, 233, 86 };
            var scope   = System.Security.Cryptography.DataProtectionScope.CurrentUser;

            ProtectedDataStore pds = new ProtectedDataStore(db, scope, entropy);

            await pds.SetApplicationSecretAsync(ArchivialLibrary.Constants.RuntimeSettingNames.AzureStorageAccountName, "").ConfigureAwait(false);
        }
Beispiel #5
0
        public void RestoreEngineCanStartAndStop()
        {
            var logger = new MockLogger();
            var db     = new SQLServerClientDatabase(TestConnectionString, new MockLogger(), SharedMockedCoreSettings);

            var engine = new RestoreEngine(db, logger, 0, SharedMockedCoreSettings);

            engine.BeginStart();
            engine.BeginStop();
        }
Beispiel #6
0
        /// <summary>
        /// Configures the database instance.
        /// </summary>
        /// <returns></returns>
        private async Task <bool> ConfigureDatabaseAsync()
        {
            try
            {
                ClientDatabase = new SQLServerClientDatabase(CoreSettings.GetDatabaseConnectionString(), CoreLog, CoreSettings);
                await ClientDatabase.PrepareDatabaseAsync().ConfigureAwait(false);

                return(true);
            }
            catch (Exception ex)
            {
                var message = "Failed to configure client database.";
                var context = CoreLog.GenerateFullContextStackTrace();
                CoreLog.WriteSystemEvent(message, ex, context, ArchivialLibrary.Constants.EventIDs.FailedToPrepareClientDatabase, true);
                return(false);
            }
        }
Beispiel #7
0
        public void RestoreEngineTriggersStoppedEventWhenEngineHasStopped()
        {
            var logger = new MockLogger();
            var db     = new SQLServerClientDatabase(TestConnectionString, new MockLogger(), SharedMockedCoreSettings);

            var engine = new RestoreEngine(db, logger, 0, SharedMockedCoreSettings);

            var signalStoppedEvent = new AutoResetEvent(false);

            engine.Stopped += (s, e) => { signalStoppedEvent.Set(); };
            engine.BeginStart();
            engine.BeginStop();

            var engineStoppedSignaled = signalStoppedEvent.WaitOne(TimeSpan.FromSeconds(5));

            Assert.IsTrue(engineStoppedSignaled);
        }
Beispiel #8
0
        public void RestoreEngineConstructorThrowsExceptionWhenNoCoreSettingsProvided()
        {
            var db = new SQLServerClientDatabase(TestConnectionString, new MockLogger(), SharedMockedCoreSettings);

            var engine = new RestoreEngine(db, new MockLogger(), 0, null);
        }