public async Task Create_One_Backup_File_Mongo()
        {
            // Arrange
            if (!_context.AllowMongoDB)
            {
                Assert.True(true);
                return;
            }

            BackupOptions backupOptions = new BackupOptions
            {
                BackupFolderPath = "."
            };

            BackupMongoRepository backupRepository = new BackupMongoRepository(_context.GetMongoConnection());
            IBackupService        backupService    = GetMockBackupService(backupRepository, backupOptions);

            // Act
            LetPortal.Portal.Models.Recoveries.BackupResponseModel result = await backupService.CreateBackupFile(new LetPortal.Portal.Models.Recoveries.BackupRequestModel
            {
                Name        = "BK_Test",
                Description = "BK Test",
                Creator     = "Admin"
            });

            backupRepository.Dispose();
            // Assert
            Assert.True(!string.IsNullOrEmpty(result.DownloadableUrl));
        }
        public async Task Preview_Backup_Mongo()
        {
            // Arrange
            if (!_context.AllowMongoDB)
            {
                Assert.True(true);
                return;
            }

            Mock <IFormFile> mockFile     = new Mock <IFormFile>();
            FileStream       sourceZip    = System.IO.File.OpenRead(@"Artifacts\" + zipFileName);
            MemoryStream     memoryStream = new MemoryStream();
            await sourceZip.CopyToAsync(memoryStream);

            sourceZip.Close();
            memoryStream.Position = 0;
            string fileName = zipFileName;

            mockFile.Setup(f => f.Length).Returns(memoryStream.Length).Verifiable();
            mockFile.Setup(f => f.FileName).Returns(fileName).Verifiable();
            mockFile.Setup(f => f.OpenReadStream()).Returns(memoryStream).Verifiable();
            mockFile
            .Setup(f => f.CopyToAsync(It.IsAny <Stream>(), It.IsAny <CancellationToken>()))
            .Returns((Stream stream, CancellationToken token) => memoryStream.CopyToAsync(stream))
            .Verifiable();
            BackupOptions backupOptions = new BackupOptions
            {
                BackupFolderPath  = "Backup",
                MaximumObjects    = 0,
                RestoreFolderPath = "Restore"
            };

            BackupMongoRepository backupRepository = new BackupMongoRepository(_context.GetMongoConnection());
            IBackupService        backupService    = GetMockBackupService(backupRepository, backupOptions);

            // Act
            UploadBackupResponseModel backupResponse = await backupService.UploadBackupFile(mockFile.Object, "Admin");

            LetPortal.Portal.Models.Recoveries.PreviewRestoreModel result = await backupService.PreviewBackup(backupResponse.Id);

            memoryStream.Close();
            memoryStream.Dispose();
            backupRepository.Dispose();

            // Assert
            Assert.NotNull(result);
        }
        public async Task Reach_Maximum_Backup_File_Mongo()
        {
            // Arrange
            if (!_context.AllowMongoDB)
            {
                Assert.True(true);
                return;
            }

            BackupOptions backupOptions = new BackupOptions
            {
                BackupFolderPath = "Backup",
                MaximumObjects   = 0
            };

            BackupMongoRepository backupRepository = new BackupMongoRepository(_context.GetMongoConnection());
            IBackupService        backupService    = GetMockBackupService(backupRepository, backupOptions);

            // Act
            try
            {
                LetPortal.Portal.Models.Recoveries.BackupResponseModel result = await backupService.CreateBackupFile(new LetPortal.Portal.Models.Recoveries.BackupRequestModel
                {
                    Name        = "BK_Test",
                    Description = "BK Test",
                    Creator     = "Admin"
                });
            }
            catch (Exception ex)
            {
                Assert.True(ex is BackupException backupException && backupException.ErrorCode.MessageCode == BackupErrorCodes.ReachMaximumBackupObjects.MessageCode);
            }
            finally
            {
                backupRepository.Dispose();
            }
        }