using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; using LCU.Api.Internal.FTP.Controllers; using LCU.Api.Internal.FTP.Services; using LCU.Api.Internal.FTPLib.Models; using LCU.Api.Internal.FTP.Services.FtpOpertionServices; namespace LCU.Api.Internal.FTPTests.Controllers; public class SftpControllerTest { private readonly SftpController controller; private readonly Mock _mockFtpService; private readonly Mock _winScpListDirectoryService; public SftpControllerTest() { _mockFtpService = new Mock(); _winScpListDirectoryService = new Mock(); controller = new SftpController(_mockFtpService.Object, _winScpListDirectoryService.Object); } // Post tests [Fact] public void Post_OK() { // arrange var request = new SftpRequest() { Protocol = ProtocolType.Sftp, HostName = "Test Host", UserName = "Test UserName", Password = "Test Password", LocalFilePath = "Test LocalFilePath", RemoteFilePath = "Test RemoteFilePath" }; Assert.Equal(22, request.PortNumber); // act var result = controller.Post(request); Assert.NotNull(result); var okResult = result as OkResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } // Post tests [Fact] public void Post_InvalidSftp_NoHost() { // arrange var request = new SftpRequest() { }; // act var result = controller.Post(request); Assert.NotNull(result); var badRequest = result as BadRequestObjectResult; Assert.Equal(400, badRequest.StatusCode); Assert.Equal("Sftp request can not be created into a valid session options.", badRequest.Value); } }