Files
monorepo/LCU.API.Internal.DocumentIngestor/LCU.API.Internal.DocumentIngestorTests/Services/IngestionOperationServices/OsgPreprocessorServiceTest.cs
T
2026-03-25 14:50:13 -05:00

773 lines
54 KiB
C#

using System;
using System.IO;
using System.Collections.Generic;
using System.Threading.Tasks;
using Moq;
using NUnit.Framework;
using LCU.Library.Internal.DocumentIngestorModels.Models;
using LCU.API.Internal.DocumentIngestor.Services.IngestionOperationServices;
using LCU.API.Internal.DocumentIngestor.Services.MicroApiServices;
using LCU.Library.Internal.Exceptions;
using LCU.API.Internal.DocumentIngestor.Services;
using LCU.API.Internal.DocumentIngestor.Configurations;
using LCU.Library.Internal.FileOperationsModels.Models;
namespace LCU.API.Internal.DocumentIngestorTests.Services.IngestionOperationServices;
public class OsgPreprocessorServiceTest
{
private OsgPreprocessorService _osgPreprocessorService;
private Mock<IFileOperationsApiService> _mockFileOperationsApiService;
private Mock<IOsgPreprocessorInfoService> _mockOsgPreprocessorInfoService;
private ApiConfiguration _apiConfiguration;
[SetUp]
public void Setup()
{
_mockFileOperationsApiService = new Mock<IFileOperationsApiService>();
_mockOsgPreprocessorInfoService = new Mock<IOsgPreprocessorInfoService>();
_apiConfiguration = new ApiConfiguration() { TimeZone = "America/Chicago" };
_osgPreprocessorService = new OsgPreprocessorService(_mockFileOperationsApiService.Object,
_mockOsgPreprocessorInfoService.Object,
_apiConfiguration);
}
public OsgPreprocessorRequest BuildTestOsgPreprocessorRequest()
{
return new OsgPreprocessorRequest()
{
ArchiveStartDate = new DateTime(2020, 10, 1),
SourceBasePath = @"\TEST\SourceBasePath",
WorkingBasePath = Path.GetFullPath(@"..\..\..\TestContent"),
OutputBasePath = @"\TEST\OutputBasePath",
IncompleteOutputBasePath = @"\TEST\IncompleteOutputBasePath"
};
}
[Test]
public async Task HandleOsgPreprocessing_Success()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var requestResponse = new RequestResponse() { IsSuccessful = true };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(false)
.ReturnsAsync(false);
_mockFileOperationsApiService.SetupSequence(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.Is<string>(folderPath => folderPath.Contains(request.WorkingBasePath)),
It.IsAny<string>(),
It.Is<string>(targetDirectory => targetDirectory.Contains(request.WorkingBasePath)))).ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(requestResponse);
await _osgPreprocessorService.HandleOsgPreprocessing(request);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(4));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
[Test]
public async Task HandleOsgPreprocessing_Failure_IndexFileDoesNotExist()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var indexFiles = new List<string>() { };
var requestResponse = new RequestResponse() { IsSuccessful = true };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(requestResponse);
await _osgPreprocessorService.HandleOsgPreprocessing(request);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
}
[Test]
public async Task HandleOsgPreprocessing_Failure_ParseReturnedNoRecords()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var indexFiles = new List<string>() { "Test_OSG_Index_File_1099_MISC.XML" };
var requestResponse = new RequestResponse() { IsSuccessful = true };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.Is<string>(folderPath => folderPath.Contains(request.WorkingBasePath)),
It.IsAny<string>(),
It.Is<string>(targetDirectory => targetDirectory.Contains(request.WorkingBasePath)))).ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse)
.ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(requestResponse);
await _osgPreprocessorService.HandleOsgPreprocessing(request);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(1));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
[Test]
public async Task HandleOsgPreprocessing_Failure_NoMatchingPdfsFound()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.3.PDF", "testPdf.4.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var requestResponse = new RequestResponse() { IsSuccessful = true };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(false)
.ReturnsAsync(false);
_mockFileOperationsApiService.Setup(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(requestResponse);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(requestResponse);
await _osgPreprocessorService.HandleOsgPreprocessing(request);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
[Test]
public void HandleOsgPreprocessing_Failure_FailedToDeleteIndexFile()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseFailure);
Assert.ThrowsAsync<ServiceException>(async () => await _osgPreprocessorService.HandleOsgPreprocessing(request));
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Never);
}
[Test]
public void HandleOsgPreprocessing_FailureToWriteInfoLog()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(false)
.ReturnsAsync(false);
_mockFileOperationsApiService.SetupSequence(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.Is<string>(folderPath => folderPath.Contains(request.WorkingBasePath)),
It.IsAny<string>(),
It.Is<string>(targetDirectory => targetDirectory.Contains(request.WorkingBasePath)))).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseFailure);
Assert.ThrowsAsync<ServiceException>(async () => await _osgPreprocessorService.HandleOsgPreprocessing(request));
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Never);
}
[Test]
public async Task HandleOsgPreprocessing_WriteParsedRecordGroup_Failure_ParsedFileExists()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(true)
.ReturnsAsync(false);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.Is<string>(folderPath => folderPath.Contains(request.WorkingBasePath)),
It.IsAny<string>(),
It.Is<string>(targetDirectory => targetDirectory.Contains(request.WorkingBasePath)))).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(responseSuccess);
await _osgPreprocessorService.HandleOsgPreprocessing(request);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
[Test]
public async Task HandleOsgPreprocessing_WriteParsedRecordGroup_Failure_FailedToCreateDirectory()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(false)
.ReturnsAsync(false);
_mockFileOperationsApiService.SetupSequence(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseFailure)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.Is<string>(folderPath => folderPath.Contains(request.WorkingBasePath)),
It.IsAny<string>(),
It.Is<string>(targetDirectory => targetDirectory.Contains(request.WorkingBasePath)))).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(responseSuccess);
await _osgPreprocessorService.HandleOsgPreprocessing(request);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
[Test]
public async Task HandleOsgPreprocessing_WriteParsedRecordGroup_Failure_FailedToMovePdf()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(false)
.ReturnsAsync(false);
_mockFileOperationsApiService.SetupSequence(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseFailure)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(responseSuccess);
await _osgPreprocessorService.HandleOsgPreprocessing(request);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(4));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
[Test]
public async Task HandleOsgPreprocessing_WriteParsedRecordGroup_Failure_FailedToWriteIndexFile()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(false)
.ReturnsAsync(false);
_mockFileOperationsApiService.SetupSequence(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseFailure)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(responseSuccess);
await _osgPreprocessorService.HandleOsgPreprocessing(request);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(4));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
[Test]
public void HandleOsgPreprocessing_PrepareZipFile_Failure_FailedToMoveZipFile()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseFailure);
Assert.ThrowsAsync<ServiceException>(async () => await _osgPreprocessorService.HandleOsgPreprocessing(request));
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Never);
}
[Test]
public void HandleOsgPreprocessing_PrepareZipFile_Failure_FailedToUnzipZipFile()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseFailure);
Assert.ThrowsAsync<ServiceException>(async () => await _osgPreprocessorService.HandleOsgPreprocessing(request));
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Never);
}
[Test]
public void HandleOsgPreprocessing_PrepareZipFile_Failure_FailedToDeleteZipFile()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseFailure);
Assert.ThrowsAsync<ServiceException>(async () => await _osgPreprocessorService.HandleOsgPreprocessing(request));
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Never);
}
[Test]
public void HandleOsgPreprocessing_ZipAndMoveResults_Failure_FailedToZipFiles()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(request.SourceBasePath, allZipsInDirectory[0], request.WorkingBasePath)).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(false)
.ReturnsAsync(false);
_mockFileOperationsApiService.SetupSequence(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.Is<string>(folderPath => folderPath.Contains(request.WorkingBasePath)),
It.IsAny<string>(),
It.Is<string>(targetDirectory => targetDirectory.Contains(request.WorkingBasePath)))).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseFailure);
_mockFileOperationsApiService.Setup(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseSuccess);
Assert.ThrowsAsync<ServiceException>(async () => await _osgPreprocessorService.HandleOsgPreprocessing(request));
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Exactly(1));
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Never);
}
[Test]
public void HandleOsgPreprocessing_Failure_FailedToDeleteDirectory()
{
var request = BuildTestOsgPreprocessorRequest();
var allZipsInDirectory = new List<string>() { "Test_OSG_Index_File.ZIP" };
var pdfList = new List<string>() { "testPdf.1.PDF", "testPdf.2.PDF" };
var indexFiles = new List<string>() { "Test_OSG_Index_File.XML" };
var responseSuccess = new RequestResponse() { IsSuccessful = true };
var responseFailure = new RequestResponse() { IsSuccessful = false };
_mockFileOperationsApiService.SetupSequence(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(allZipsInDirectory)
.ReturnsAsync(indexFiles)
.ReturnsAsync(pdfList);
_mockFileOperationsApiService.SetupSequence(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.ValidateFileExists(It.IsAny<string>())).ReturnsAsync(false)
.ReturnsAsync(false);
_mockFileOperationsApiService.SetupSequence(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectMoveFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>())).ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess)
.ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.Setup(x => x.DirectZipDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(responseSuccess);
_mockFileOperationsApiService.SetupSequence(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())).ReturnsAsync(responseFailure)
.ReturnsAsync(responseFailure);
Assert.ThrowsAsync<ServiceException>(async () => await _osgPreprocessorService.HandleOsgPreprocessing(request));
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(4));
_mockFileOperationsApiService.Verify(x => x.DirectUnzipFile(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<bool>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectDeleteFile(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Exactly(2));
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
_mockFileOperationsApiService.Verify(x => x.DirectZipDirectory(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()), Times.Once);
_mockFileOperationsApiService.Verify(x => x.DirectDeleteDirectory(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
[Test]
public void HandleOsgPreprocessing_ArgumentNullException_RequestNull()
{
OsgPreprocessorRequest request = null;
Assert.ThrowsAsync<ArgumentNullException>(async () => await _osgPreprocessorService.HandleOsgPreprocessing(request));
_mockFileOperationsApiService.Verify(x => x.ValidateFileExists(It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectCreateDirectory(It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectMoveFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
_mockFileOperationsApiService.Verify(x => x.DirectWriteFile(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()), Times.Never);
}
}