Ejemplo n.º 1
0
        public async Task Handle_AllConditionsMet_Success()
        {
            // Arrange
            var content = new MemoryStream();
            var reader  = new Mock <IFileReader>();
            var writer  = new Mock <IFileWriter>();

            var command = new UploadFileCommand
            {
                SourceFileName = "File",
                Content        = content
            };

            _fileStorage
            .Setup(x => x.CreateFile(It.IsAny <string>()))
            .Returns(writer.Object);

            // Act
            var response = await _handler.Handle(command, CancellationToken.None);

            // Assert
            Assert.That(response.TargetFileName, Is.Not.Null);

            _fileStorage.Verify(x => x.CreateFile(It.IsAny <string>()), Times.Once);
            _eventService.Verify(x => x.PublishAsync <TemporaryFileUploadedEvent>(It.IsAny <TemporaryFileUploadedEvent>()), Times.Once);

            writer.Verify(x => x.WriteAsync(It.IsAny <Stream>()), Times.Once);
        }
Ejemplo n.º 2
0
        public async Task StartReceive()
        {
            while (true)
            {
                var requestBytes = await _transportHandler.Receive();

                var request = requestBytes.Deserialize <Command>();

                Console.WriteLine($"Message received: {request.CommandType}");

                switch (request.CommandType)
                {
                case CommandType.UploadFileRequest:
                    await _uploadFileCommandHandler.Handle(request);

                    break;

                case CommandType.DownloadFileRequest:
                    await _fileDownloadCommandHandler.Handle(request);

                    break;

                case CommandType.EchoRequest:
                    await _echoCommandHandler.Handle(request);

                    break;

                case CommandType.TimeRequest:
                    await _timeCommandHandler.Handle(request);

                    break;

                case CommandType.Disconnect:
                    _transportHandler.Close();
                    return;

                default:
                    continue;
                }
            }
        }