using System; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using Renci.SshNet.Common; using Renci.SshNet.Messages; namespace Renci.SshNet.Tests.Classes.Channels { [TestClass] public class ChannelTest_SendEof_ChannelIsNotOpen : ChannelTestBase { private uint _localWindowSize; private uint _localPacketSize; private uint _localChannelNumber; private ChannelStub _channel; private List _channelClosedRegister; private IList _channelExceptionRegister; private InvalidOperationException _actualException; protected override void SetupData() { var random = new Random(); _localChannelNumber = (uint)random.Next(0, int.MaxValue); _localWindowSize = (uint)random.Next(0, int.MaxValue); _localPacketSize = (uint)random.Next(0, int.MaxValue); _channelClosedRegister = new List(); _channelExceptionRegister = new List(); _actualException = null; } protected override void SetupMocks() { } protected override void Arrange() { base.Arrange(); _channel = new ChannelStub(SessionMock.Object, _localChannelNumber, _localWindowSize, _localPacketSize); _channel.Closed += (sender, args) => _channelClosedRegister.Add(args); _channel.Exception += (sender, args) => _channelExceptionRegister.Add(args); } protected override void Act() { try { _channel.SendEof(); Assert.Fail(); } catch (InvalidOperationException ex) { _actualException = ex; } } [TestMethod] public void IsOpenShouldReturnFalse() { Assert.IsFalse(_channel.IsOpen); } [TestMethod] public void SendEofShouldHaveThrownInvalidOperationException() { Assert.IsNotNull(_actualException); Assert.IsNull(_actualException.InnerException); Assert.AreEqual("The channel is closed.", _actualException.Message); } [TestMethod] public void SendMessageOnSessionShouldNeverBeInvoked() { SessionMock.Verify(p => p.SendMessage(It.IsAny()), Times.Never); } [TestMethod] public void ClosedEventShouldNeverHaveFired() { Assert.AreEqual(0, _channelClosedRegister.Count); } [TestMethod] public void ExceptionShouldNeverHaveFired() { Assert.AreEqual(0, _channelExceptionRegister.Count); } } }