|
|
@@ -45,9 +45,10 @@ namespace Renci.SshNet.Tests.Classes
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- protected void Arrange()
|
|
|
+ private void SetupData()
|
|
|
{
|
|
|
var random = new Random();
|
|
|
+
|
|
|
_bufferSize = random.Next(5, 15);
|
|
|
_fileSize = _bufferSize + 2; //force uploading 2 chunks
|
|
|
_fileContent = CreateContent(_fileSize);
|
|
|
@@ -56,12 +57,18 @@ namespace Renci.SshNet.Tests.Classes
|
|
|
_fileInfo = new FileInfo(_fileName);
|
|
|
_path = random.Next().ToString(CultureInfo.InvariantCulture);
|
|
|
_uploadingRegister = new List<ScpUploadEventArgs>();
|
|
|
+ }
|
|
|
|
|
|
+ private void CreateMocks()
|
|
|
+ {
|
|
|
_serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict);
|
|
|
_sessionMock = new Mock<ISession>(MockBehavior.Strict);
|
|
|
_channelSessionMock = new Mock<IChannelSession>(MockBehavior.Strict);
|
|
|
_pipeStreamMock = new Mock<PipeStream>(MockBehavior.Strict);
|
|
|
+ }
|
|
|
|
|
|
+ private void SetupMocks()
|
|
|
+ {
|
|
|
var sequence = new MockSequence();
|
|
|
_serviceFactoryMock.InSequence(sequence)
|
|
|
.Setup(p => p.CreateSession(_connectionInfo))
|
|
|
@@ -73,22 +80,16 @@ namespace Renci.SshNet.Tests.Classes
|
|
|
_channelSessionMock.InSequence(sequence)
|
|
|
.Setup(
|
|
|
p => p.SendExecRequest(string.Format("scp -t \"{0}\"", _path))).Returns(true);
|
|
|
- for (var i = 0; i < random.Next(1, 3); i++)
|
|
|
- _pipeStreamMock.InSequence(sequence).Setup(p => p.ReadByte()).Returns(-1);
|
|
|
_pipeStreamMock.InSequence(sequence).Setup(p => p.ReadByte()).Returns(0);
|
|
|
_channelSessionMock.InSequence(sequence).Setup(p => p.SendData(It.IsAny<byte[]>()));
|
|
|
- for (var i = 0; i < random.Next(1, 3); i++)
|
|
|
- _pipeStreamMock.InSequence(sequence).Setup(p => p.ReadByte()).Returns(-1);
|
|
|
_pipeStreamMock.InSequence(sequence).Setup(p => p.ReadByte()).Returns(0);
|
|
|
_channelSessionMock.InSequence(sequence)
|
|
|
.Setup(p => p.SendData(It.Is<byte[]>(b => b.SequenceEqual(CreateData(
|
|
|
- string.Format("C0644 {0} {1}\n",
|
|
|
- _fileInfo.Length,
|
|
|
- Path.GetFileName(_fileName)
|
|
|
- )
|
|
|
- )))));
|
|
|
- for (var i = 0; i < random.Next(1, 3); i++)
|
|
|
- _pipeStreamMock.InSequence(sequence).Setup(p => p.ReadByte()).Returns(-1);
|
|
|
+ string.Format("C0644 {0} {1}\n",
|
|
|
+ _fileInfo.Length,
|
|
|
+ Path.GetFileName(_fileName)
|
|
|
+ )
|
|
|
+ )))));
|
|
|
_pipeStreamMock.InSequence(sequence).Setup(p => p.ReadByte()).Returns(0);
|
|
|
_channelSessionMock.InSequence(sequence)
|
|
|
.Setup(
|
|
|
@@ -98,13 +99,18 @@ namespace Renci.SshNet.Tests.Classes
|
|
|
p => p.SendData(It.Is<byte[]>(b => b.Take(0, _fileContent.Length - _bufferSize).SequenceEqual(_fileContent.Take(_bufferSize, _fileContent.Length - _bufferSize))), 0, _fileContent.Length - _bufferSize));
|
|
|
_channelSessionMock.InSequence(sequence)
|
|
|
.Setup(
|
|
|
- p => p.SendData(It.Is<byte[]>(b => b.SequenceEqual(new byte[] { 0 }))));
|
|
|
- for (var i = 0; i < random.Next(1, 3); i++)
|
|
|
- _pipeStreamMock.InSequence(sequence).Setup(p => p.ReadByte()).Returns(-1);
|
|
|
+ p => p.SendData(It.Is<byte[]>(b => b.SequenceEqual(new byte[] {0}))));
|
|
|
_pipeStreamMock.InSequence(sequence).Setup(p => p.ReadByte()).Returns(0);
|
|
|
_channelSessionMock.InSequence(sequence).Setup(p => p.Close());
|
|
|
_channelSessionMock.InSequence(sequence).Setup(p => p.Dispose());
|
|
|
_pipeStreamMock.As<IDisposable>().InSequence(sequence).Setup(p => p.Dispose());
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void Arrange()
|
|
|
+ {
|
|
|
+ SetupData();
|
|
|
+ CreateMocks();
|
|
|
+ SetupMocks();
|
|
|
|
|
|
_scpClient = new ScpClient(_connectionInfo, false, _serviceFactoryMock.Object)
|
|
|
{
|
|
|
@@ -161,12 +167,12 @@ namespace Renci.SshNet.Tests.Classes
|
|
|
Assert.AreEqual(_fileSize, uploading.Uploaded);
|
|
|
}
|
|
|
|
|
|
- private IEnumerable<byte> CreateData(string command)
|
|
|
+ private static IEnumerable<byte> CreateData(string command)
|
|
|
{
|
|
|
return Encoding.Default.GetBytes(command);
|
|
|
}
|
|
|
|
|
|
- private byte[] CreateContent(int length)
|
|
|
+ private static byte[] CreateContent(int length)
|
|
|
{
|
|
|
var random = new Random();
|
|
|
var content = new byte[length];
|
|
|
@@ -176,7 +182,7 @@ namespace Renci.SshNet.Tests.Classes
|
|
|
return content;
|
|
|
}
|
|
|
|
|
|
- private string CreateTemporaryFile(byte[] content)
|
|
|
+ private static string CreateTemporaryFile(byte[] content)
|
|
|
{
|
|
|
var tempFile = Path.GetTempFileName();
|
|
|
using (var fs = File.OpenWrite(tempFile))
|