public async Task EndToEndEmptyFileTest() { // TODO: Если иерархия классов будет разростаться, следует заменить явное создание экземпляров на использование контейнера ServiceProvider var env = new PaperAnalyzerEnvironment(); var analyzer = new PapersAnalyzer(env); var service = new PaperAnalyzerService(analyzer); var controller = new HomeController(_mockLogger.Object, service, _mockRepository.Object); var memoryStream = new MemoryStream(); _mockFile.Setup(f => f.Length).Returns(memoryStream.Length); _mockFile.Setup(f => f.FileName).Returns("testfile.pdf"); _mockFile.Setup(f => f.CopyToAsync(It.IsAny <Stream>(), It.IsAny <CancellationToken>())) .Callback <Stream, CancellationToken>((stream, token) => memoryStream.CopyTo(stream)) .Returns(Task.CompletedTask); var result = await controller.UploadFile(_mockFile.Object, string.Empty, string.Empty, string.Empty); var errorResult = result as ViewResult; Assert.IsNotNull(errorResult); var errorModel = errorResult.Model as ErrorViewModel; // RequestID не будет присвоен Assert.IsNull(errorModel.RequestId); // Если RequestID не присвоен, то он не показывается Assert.IsFalse(errorModel.ShowRequestId); // Сообщение об ошибке должено быть непустым Assert.AreNotEqual(errorModel.Message, string.Empty); memoryStream.Close(); }
public async Task EndToEndUnsupportedFileTypeTest() { // TODO: Если иерархия классов будет разростаться, следует заменить явное создание экземпляров на использование контейнера ServiceProvider var env = new PaperAnalyzerEnvironment(); var analyzer = new PapersAnalyzer(env); var service = new PaperAnalyzerService(analyzer); var controller = new HomeController(_mockLogger.Object, service, _mockRepository.Object); // Загрузка pdf файла для тестирования из текущей директории // TODO: Нестабильное решение с множеством сторонних эффектов (если кто-то поменяет структуру папок в решении?) // Следует использовать отдельную сборку с тестовыми ресурсами var path = Path.GetFullPath(Path.Combine(_currentPath, $"..{_sep}..{_sep}..{_sep}TestResources{_sep}paper_short.pdf")); var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); var memoryStream = new MemoryStream(); fileStream.CopyTo(memoryStream); memoryStream.Position = 0; _mockFile.Setup(f => f.Length).Returns(memoryStream.Length); _mockFile.Setup(f => f.FileName).Returns("testfile.xls"); _mockFile.Setup(f => f.CopyToAsync(It.IsAny <Stream>(), It.IsAny <CancellationToken>())) .Callback <Stream, CancellationToken>((stream, token) => memoryStream.CopyTo(stream)) .Returns(Task.CompletedTask); var result = await controller.UploadFile(_mockFile.Object, string.Empty, string.Empty, string.Empty); var errorResult = result as ViewResult; Assert.IsNotNull(errorResult); var errorModel = errorResult.Model as ErrorViewModel; // RequestID не будет присвоен Assert.IsNull(errorModel.RequestId); // Если RequestID не присвоен, то он не показывается Assert.IsFalse(errorModel.ShowRequestId); // Сообщение об ошибке должено быть непустым Assert.AreNotEqual(errorModel.Message, string.Empty); fileStream.Close(); memoryStream.Close(); }
public async Task EndToEndSuccessTest() { // TODO: Если иерархия классов будет разростаться, следует заменить явное создание экземпляров на использование контейнера ServiceProvider var env = new PaperAnalyzerEnvironment(); var analyzer = new PapersAnalyzer(env); var service = new PaperAnalyzerService(analyzer); var controller = new HomeController(_mockLogger.Object, service, _mockRepository.Object); // Загрузка pdf файла для тестирования из текущей директории // TODO: Нестабильное решение с множеством сторонних эффектов (если кто-то поменяет структуру папок в решении?) // Следует использовать отдельную сборку с тестовыми ресурсами var path = Path.GetFullPath(Path.Combine(_currentPath, $"..{_sep}..{_sep}..{_sep}TestResources{_sep}paper_short.pdf")); var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); var memoryStream = new MemoryStream(); fileStream.CopyTo(memoryStream); memoryStream.Position = 0; _mockFile.Setup(f => f.Length).Returns(memoryStream.Length); _mockFile.Setup(f => f.FileName).Returns("paper_short.pdf"); _mockFile.Setup(f => f.CopyToAsync(It.IsAny <Stream>(), It.IsAny <CancellationToken>())) .Callback <Stream, CancellationToken>((stream, token) => memoryStream.CopyTo(stream)) .Returns(Task.CompletedTask); var result = await controller.UploadFile(_mockFile.Object, string.Empty, string.Empty, string.Empty); var okResult = result as OkObjectResult; Assert.IsNotNull(okResult); Assert.AreEqual(StatusCodes.Status200OK, okResult.StatusCode); Assert.IsNotNull(okResult.Value); fileStream.Close(); memoryStream.Close(); }