Beispiel #1
0
        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();
        }
Beispiel #2
0
        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());
        }