public async Task When_DeletingDbConfig_Should_RemoveFromRepositoryAndPurge() { var databaseBackupRepository = new Mock <IDatabaseBackupRepository>(); var backupFilePurger = new Mock <IBackupFilePurger>(); var controller = new HomeController(Mock.Of <ILogger <HomeController> >(), Mock.Of <IConfigRepository>(), databaseBackupRepository.Object, backupFilePurger.Object, Mock.Of <IBackupAuditRepository>()); var dbBackup = _fixture .Build <DatabaseBackup>() .With(x => x.DatabasePath, Path.Combine(_fixture.CreateMany <string>().ToArray())) .Create(); var request = new AddOrDeleteDbConfig { Delete = dbBackup.DatabaseBackupId }; databaseBackupRepository.Setup(r => r.GetAsync(request.Delete.Value)).ReturnsAsync(dbBackup); var response = await controller.DbConfigs(request); Assert.IsType <RedirectResult>(response); var redirect = (RedirectResult)response; Assert.Equal("~/", redirect.Url); Assert.False(redirect.Permanent); databaseBackupRepository.Verify(d => d.DeleteAsync(dbBackup), Times.Once); backupFilePurger.Verify(p => p.PurgeBackups(It.IsAny <DirectoryInfo>(), 0, dbBackup), Times.Once); backupFilePurger.VerifyNoOtherCalls(); }
public async Task <ActionResult> DbConfigs([FromForm] AddOrDeleteDbConfig addOrDeleteDbConfig) { if (!string.IsNullOrEmpty(addOrDeleteDbConfig.Add) && addOrDeleteDbConfig.NewDatabaseModel != null) { _logger.LogInformation($"Adding db to backup: {addOrDeleteDbConfig.NewDatabaseModel.DatabasePath}"); await _databaseBackupRepository.AddAsync( addOrDeleteDbConfig.NewDatabaseModel.DatabasePath, addOrDeleteDbConfig.NewDatabaseModel.BackupFrequency, addOrDeleteDbConfig.NewDatabaseModel.UploadToDropbox, addOrDeleteDbConfig.NewDatabaseModel.UploadToDropboxFrequency ); } if (addOrDeleteDbConfig.Delete.HasValue) { _logger.LogInformation($"Deleting db backup id: {addOrDeleteDbConfig.Delete}"); var dbToDelete = await _databaseBackupRepository.GetAsync(addOrDeleteDbConfig.Delete.Value); if (dbToDelete != null) { await _databaseBackupRepository.DeleteAsync(dbToDelete); _backupFilePurger.PurgeBackups( new DirectoryInfo(await _configRepository.GetBackupPathAsync()), 0, dbToDelete); } } return(Redirect("~/")); }
public async Task When_AddingNewConfig_Should_UpdateRepository() { var databaseBackupRepository = new Mock <IDatabaseBackupRepository>(); var backupFilePurger = new Mock <IBackupFilePurger>(MockBehavior.Strict); var controller = new HomeController(Mock.Of <ILogger <HomeController> >(), Mock.Of <IConfigRepository>(), databaseBackupRepository.Object, backupFilePurger.Object, Mock.Of <IBackupAuditRepository>()); var request = new AddOrDeleteDbConfig { Add = "add", NewDatabaseModel = _fixture.Create <DatabaseBackup>() }; var response = await controller.DbConfigs(request); Assert.IsType <RedirectResult>(response); var redirect = (RedirectResult)response; Assert.Equal("~/", redirect.Url); Assert.False(redirect.Permanent); databaseBackupRepository.Verify(d => d.AddAsync(request.NewDatabaseModel.DatabasePath, request.NewDatabaseModel.BackupFrequency, request.NewDatabaseModel.UploadToDropbox, request.NewDatabaseModel.UploadToDropboxFrequency), Times.Once); databaseBackupRepository.VerifyNoOtherCalls(); }