コード例 #1
0
        public async Task GetFileAsync_Test()
        {
            var fileName = "Test.pdf";
            var dmsFile  = new DmsFile {
                Id = 1, Name = fileName, FileContent = new byte[] { 1, 2, 3 }
            };

            var mockFileService = new Mock <IDmsFileService>();

            mockFileService.Setup(x => x.CheckFileExistAsync(It.IsAny <string>()))
            .Returns(Task.FromResult <bool>(true))
            .Verifiable();

            mockFileService.Setup(x => x.GetFileAsync(fileName))
            .Returns(Task.FromResult <DmsFile>(dmsFile))
            .Verifiable();

            var contorller = new PdfController(mockFileService.Object);

            //Act
            var result = await contorller.GetFileAsync(fileName);

            //Assert
            Assert.IsInstanceOf <IActionResult>(result);
        }
コード例 #2
0
        public async Task <int> AddFileAsync(DmsFile dmsFile)
        {
            _context.DmsFiles.Add(dmsFile);
            await _context.SaveChangesAsync();

            return(dmsFile.Id);
        }
コード例 #3
0
        public void Setup()
        {
            _options = new DbContextOptionsBuilder <DmsFileContext>()
                       .UseInMemoryDatabase(databaseName: "Mock Dms File 1")
                       .Options;

            var context = new DmsFileContext(_options);

            _mockFileItem = new DmsFile {
                Id = 1, Name = "MockFile1.pdf"
            };

            context.DmsFiles.Add(_mockFileItem);
            context.DmsFiles.Add(new DmsFile {
                Id = 2, Name = "MockDeleteFile1.pdf"
            });
            context.SaveChanges();
        }
コード例 #4
0
        public async Task AddFileAsync_Test()
        {
            var testItem = new DmsFile
            {
                Id          = 0,
                Name        = "Test File Name",
                FileContent = new byte[] { 1, 2, 3, 4 }
            };

            var context     = new DmsFileContext(_options);
            var beforeCount = await context.DmsFiles.CountAsync();

            IDmsFileService service = new DmsFileService(context);
            var             result  = await service.AddFileAsync(testItem);

            var afterCount = await context.DmsFiles.CountAsync();

            Assert.IsTrue(result != 0);
            Assert.IsTrue(afterCount - beforeCount == 1);
        }
コード例 #5
0
        public async Task <IActionResult> PostAsync([FromBody] IFormFile file)
        {
            if (file == null)
            {
                return(BadRequest("Invalid input file."));
            }

            if (file.Length > 5000000)
            {
                return(BadRequest("File too large. File must be under 5Mb size."));
            }

            var extension = Path.GetExtension(file.FileName);

            if (extension.ToLower() != ".pdf")
            {
                return(BadRequest($"Invalid file type: {extension}"));
            }

            var fileExist = await _dmsFileService.CheckFileExistAsync(file.FileName);

            if (fileExist)
            {
                return(BadRequest($"File already exists: {file.FileName}"));
            }

            using var ms = new MemoryStream();
            await file.CopyToAsync(ms);

            var dmsFile = new DmsFile
            {
                Name        = file.FileName,
                FileSize    = file.Length,
                Location    = $"http://localhost:49826/api/pdf/{file.FileName}", // TODO make base URL configurable
                FileContent = ms.ToArray()
            };

            return(Ok(await _dmsFileService.AddFileAsync(dmsFile)));
        }