protected void Arrange() { var random = new Random(); _operationTimeout = TimeSpan.FromMilliseconds(random.Next(100, 500)); _encoding = Encoding.UTF8; _bAvail = (ulong)random.Next(0, int.MaxValue); _sessionMock = new Mock <ISession>(MockBehavior.Strict); _channelSessionMock = new Mock <IChannelSession>(MockBehavior.Strict); var sequence = new MockSequence(); _sessionMock.InSequence(sequence).Setup(p => p.CreateChannelSession()).Returns(_channelSessionMock.Object); _channelSessionMock.InSequence(sequence).Setup(p => p.Open()); _channelSessionMock.InSequence(sequence).Setup(p => p.SendSubsystemRequest("sftp")).Returns(true); _channelSessionMock.InSequence(sequence).Setup(p => p.IsOpen).Returns(true); _channelSessionMock.InSequence(sequence).Setup(p => p.SendData(It.IsAny <byte[]>())).Callback( () => { // generate response for SftpInitRequest var versionInfoResponse = SftpVersionResponseBuilder.Create(3) .AddExtension("*****@*****.**", "") .Build(); _channelSessionMock.Raise( c => c.DataReceived += null, new ChannelDataEventArgs(0, versionInfoResponse)); }); _channelSessionMock.InSequence(sequence).Setup(p => p.IsOpen).Returns(true); _channelSessionMock.InSequence(sequence).Setup(p => p.SendData(It.IsAny <byte[]>())).Callback( () => { var sftpNameResponse = CreateSftpNameResponse(1, _encoding, "ABC"); _channelSessionMock.Raise( c => c.DataReceived += null, new ChannelDataEventArgs(0, sftpNameResponse)); } ); _channelSessionMock.InSequence(sequence).Setup(p => p.IsOpen).Returns(true); _channelSessionMock.InSequence(sequence).Setup(p => p.SendData(It.IsAny <byte[]>())).Callback( () => { var statVfsReplyBuilder = StatVfsReplyBuilder.Create(2); statVfsReplyBuilder.WithBAvail(_bAvail); var statVfsReply = statVfsReplyBuilder.Build(); _channelSessionMock.Raise( c => c.DataReceived += null, new ChannelDataEventArgs(0, statVfsReply)); } ); _sftpSession = new SftpSession(_sessionMock.Object, _operationTimeout, _encoding); _sftpSession.Connect(); }
protected void Arrange() { var random = new Random(); _operationTimeout = TimeSpan.FromMilliseconds(random.Next(100, 500)); _expected = new byte[random.Next(30, 50)]; _encoding = Encoding.UTF8; random.NextBytes(_expected); _sessionMock = new Mock <ISession>(MockBehavior.Strict); _channelSessionMock = new Mock <IChannelSession>(MockBehavior.Strict); var sequence = new MockSequence(); _sessionMock.InSequence(sequence).Setup(p => p.CreateChannelSession()).Returns(_channelSessionMock.Object); _channelSessionMock.InSequence(sequence).Setup(p => p.Open()); _channelSessionMock.InSequence(sequence).Setup(p => p.SendSubsystemRequest("sftp")).Returns(true); _channelSessionMock.InSequence(sequence).Setup(p => p.IsOpen).Returns(true); _channelSessionMock.InSequence(sequence).Setup(p => p.SendData(It.IsAny <byte[]>())).Callback( () => { // generate response for SftpInitRequest var versionInfoResponse = SftpVersionResponseBuilder.Create(3) .Build(); _channelSessionMock.Raise( c => c.DataReceived += null, new ChannelDataEventArgs(0, versionInfoResponse)); }); _channelSessionMock.InSequence(sequence).Setup(p => p.IsOpen).Returns(true); _channelSessionMock.InSequence(sequence).Setup(p => p.SendData(It.IsAny <byte[]>())).Callback( () => { var sftpNameResponse = CreateSftpNameResponse(1, _encoding, "ABC"); _channelSessionMock.Raise( c => c.DataReceived += null, new ChannelDataEventArgs(0, sftpNameResponse)); } ); _channelSessionMock.InSequence(sequence).Setup(p => p.IsOpen).Returns(true); _channelSessionMock.InSequence(sequence).Setup(p => p.SendData(It.IsAny <byte[]>())).Callback( () => { var sftpDataResponse = CreateSftpDataResponse(2, _expected); _channelSessionMock.Raise( c => c.DataReceived += null, new ChannelDataEventArgs(0, sftpDataResponse.Take(0, 20))); _channelSessionMock.Raise( c => c.DataReceived += null, new ChannelDataEventArgs(0, sftpDataResponse.Take(20, sftpDataResponse.Length - 20))); } ); _sftpSession = new SftpSession(_sessionMock.Object, _operationTimeout, _encoding); _sftpSession.Connect(); }