static void Main(string[] args) { Log.Logger = new LoggerConfiguration() .MinimumLevel.Information() .WriteTo.Console() .CreateLogger(); IConfiguration config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddCommandLine(args) .Build(); IFileSystem fileSystem = new FileSystem(); var fileReceiver = new FileReceiver(config, fileSystem, new Socket(new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)), () => new MD5CryptoServiceProvider()); new List <Task>().AddRange(fileReceiver.StartServer()); Log.Debug("Press any button to exit."); Console.ReadKey(); }
public void StartServer_NewConnectionAccepted_ShouldProperlyRunStrategy() { // Arrange const string ip = "127.0.0.1"; const string port = "12345"; var configuration = new Mock <IConfiguration>(); configuration.Setup(conf => conf["ip"]).Returns(ip); configuration.Setup(conf => conf["port"]).Returns(port); var socket = new Mock <ISocket>(); socket.Setup(s => s.Bind(ip, 12345)).Returns(socket.Object); socket.Setup(s => s.Listen(32)).Returns(socket.Object); var acceptedConnection = new Mock <ISocket>(); var acceptedStream = new MemoryStream(GetInitBuffer()); acceptedConnection.Setup(ac => ac.GetStream()).Returns(acceptedStream); socket.Setup(s => s.Accept()).Returns(acceptedConnection.Object); var strategy = new Mock <IFileReceiverStrategy>(); var strategies = new Dictionary <FileAction, Func <IProtocolDialogServer, IFileReceiverStrategy> > { { FileAction.Change, server => strategy.Object } }; // Act var receiver = new FileReceiver(configuration.Object, socket.Object, strategies); var task = receiver.StartServer().First(); task.Wait(); // Arrange strategy.Verify(s => s.ProcessRequest()); }