ChannelTest_SendEof_ChannelIsOpen.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Collections.Generic;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. using Moq;
  5. using Renci.SshNet.Common;
  6. using Renci.SshNet.Messages.Connection;
  7. namespace Renci.SshNet.Tests.Classes.Channels
  8. {
  9. [TestClass]
  10. public class ChannelTest_SendEof_ChannelIsOpen
  11. {
  12. private Mock<ISession> _sessionMock;
  13. private uint _localChannelNumber;
  14. private uint _localWindowSize;
  15. private uint _localPacketSize;
  16. private uint _remoteChannelNumber;
  17. private uint _remoteWindowSize;
  18. private uint _remotePacketSize;
  19. private ChannelStub _channel;
  20. private List<ChannelEventArgs> _channelClosedRegister;
  21. private IList<ExceptionEventArgs> _channelExceptionRegister;
  22. [TestInitialize]
  23. public void Initialize()
  24. {
  25. Arrange();
  26. Act();
  27. }
  28. private void Arrange()
  29. {
  30. var random = new Random();
  31. _localChannelNumber = (uint)random.Next(0, int.MaxValue);
  32. _localWindowSize = (uint)random.Next(0, int.MaxValue);
  33. _localPacketSize = (uint)random.Next(0, int.MaxValue);
  34. _remoteChannelNumber = (uint)random.Next(0, int.MaxValue);
  35. _remoteWindowSize = (uint)random.Next(0, int.MaxValue);
  36. _remotePacketSize = (uint)random.Next(0, int.MaxValue);
  37. _channelClosedRegister = new List<ChannelEventArgs>();
  38. _channelExceptionRegister = new List<ExceptionEventArgs>();
  39. _sessionMock = new Mock<ISession>(MockBehavior.Strict);
  40. _sessionMock.Setup(p => p.SendMessage(It.Is<ChannelEofMessage>(e => e.LocalChannelNumber == _remoteChannelNumber)));
  41. _channel = new ChannelStub(_sessionMock.Object, _localChannelNumber, _localWindowSize, _localPacketSize);
  42. _channel.Closed += (sender, args) => _channelClosedRegister.Add(args);
  43. _channel.Exception += (sender, args) => _channelExceptionRegister.Add(args);
  44. _channel.InitializeRemoteChannelInfo(_remoteChannelNumber, _remoteWindowSize, _remotePacketSize);
  45. _channel.SetIsOpen(true);
  46. }
  47. private void Act()
  48. {
  49. _channel.SendEof();
  50. }
  51. [TestMethod]
  52. public void IsOpenShouldReturnTrue()
  53. {
  54. Assert.IsTrue(_channel.IsOpen);
  55. }
  56. [TestMethod]
  57. public void SendMessageOnSessionShouldBeInvokedOnceWithChannelEofMessage()
  58. {
  59. _sessionMock.Verify(
  60. p => p.SendMessage(It.Is<ChannelEofMessage>(e => e.LocalChannelNumber == _remoteChannelNumber)),
  61. Times.Once);
  62. }
  63. [TestMethod]
  64. public void ClosedEventShouldNeverHaveFired()
  65. {
  66. Assert.AreEqual(0, _channelClosedRegister.Count);
  67. }
  68. [TestMethod]
  69. public void ExceptionShouldNeverHaveFired()
  70. {
  71. Assert.AreEqual(0, _channelExceptionRegister.Count);
  72. }
  73. }
  74. }