using System; using System.IO; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using Renci.SshNet.Sftp; namespace Renci.SshNet.Tests.Classes.Sftp { [TestClass] public class SftpFileStreamTest_SetLength_SessionOpen_FileAccessRead : SftpFileStreamTestBase { private SftpFileStream _target; private string _path; private byte[] _handle; private uint _bufferSize; private uint _readBufferSize; private uint _writeBufferSize; private long _length; private NotSupportedException _actualException; protected override void SetupData() { base.SetupData(); var random = new Random(); _path = random.Next().ToString(); _handle = GenerateRandom(5, random); _bufferSize = (uint)random.Next(1, 1000); _readBufferSize = (uint)random.Next(1, 1000); _writeBufferSize = (uint)random.Next(1, 1000); _length = 6666; } protected override void SetupMocks() { SftpSessionMock.InSequence(MockSequence) .Setup(p => p.RequestOpen(_path, Flags.Read, false)) .Returns(_handle); SftpSessionMock.InSequence(MockSequence) .Setup(p => p.CalculateOptimalReadLength(_bufferSize)) .Returns(_readBufferSize); SftpSessionMock.InSequence(MockSequence) .Setup(p => p.CalculateOptimalWriteLength(_bufferSize, _handle)) .Returns(_writeBufferSize); SftpSessionMock.InSequence(MockSequence).Setup(p => p.IsOpen).Returns(true); } protected override void Arrange() { base.Arrange(); _target = new SftpFileStream(SftpSessionMock.Object, _path, FileMode.Open, FileAccess.Read, (int)_bufferSize); } protected override void Act() { try { _target.SetLength(_length); Assert.Fail(); } catch (NotSupportedException ex) { _actualException = ex; } } [TestMethod] public void SetLengthShouldHaveThrownNotSupportedException() { Assert.IsNotNull(_actualException); Assert.IsNull(_actualException.InnerException); Assert.AreEqual("Write not supported.", _actualException.Message); } } }