SshClientTest_Disconnect_ForwardedPortStarted.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System.Linq;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using Moq;
  4. namespace Renci.SshNet.Tests.Classes
  5. {
  6. [TestClass]
  7. public class SshClientTest_Disconnect_ForwardedPortStarted : BaseClientTestBase
  8. {
  9. private Mock<ForwardedPort> _forwardedPortMock;
  10. private SshClient _sshClient;
  11. private ConnectionInfo _connectionInfo;
  12. protected override void CreateMocks()
  13. {
  14. base.CreateMocks();
  15. _forwardedPortMock = new Mock<ForwardedPort>(MockBehavior.Strict);
  16. }
  17. protected override void SetupData()
  18. {
  19. _connectionInfo = new ConnectionInfo("host", "user", new NoneAuthenticationMethod("userauth"));
  20. }
  21. protected override void SetupMocks()
  22. {
  23. var sequence = new MockSequence();
  24. ServiceFactoryMock.InSequence(sequence)
  25. .Setup(p => p.CreateSocketFactory())
  26. .Returns(SocketFactoryMock.Object);
  27. ServiceFactoryMock.InSequence(sequence)
  28. .Setup(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object))
  29. .Returns(SessionMock.Object);
  30. SessionMock.InSequence(sequence).Setup(p => p.Connect());
  31. _forwardedPortMock.InSequence(sequence).Setup(p => p.Start());
  32. SessionMock.InSequence(sequence).Setup(p => p.OnDisconnecting());
  33. _forwardedPortMock.InSequence(sequence).Setup(p => p.Stop());
  34. SessionMock.InSequence(sequence).Setup(p => p.Dispose());
  35. }
  36. protected override void Arrange()
  37. {
  38. base.Arrange();
  39. _sshClient = new SshClient(_connectionInfo, false, ServiceFactoryMock.Object);
  40. _sshClient.Connect();
  41. _sshClient.AddForwardedPort(_forwardedPortMock.Object);
  42. _forwardedPortMock.Object.Start();
  43. }
  44. protected override void Act()
  45. {
  46. _sshClient.Disconnect();
  47. }
  48. [TestMethod]
  49. public void ForwardedPortShouldBeStopped()
  50. {
  51. _forwardedPortMock.Verify(p => p.Stop(), Times.Once);
  52. }
  53. [TestMethod]
  54. public void ForwardedPortShouldBeRemovedFromSshClient()
  55. {
  56. Assert.IsFalse(_sshClient.ForwardedPorts.Any());
  57. }
  58. [TestMethod]
  59. public void DisconnectOnSessionShouldNeverBeInvoked()
  60. {
  61. SessionMock.Verify(p => p.Disconnect(), Times.Never);
  62. }
  63. [TestMethod]
  64. public void DisposeOnSessionShouldBeInvokedOnce()
  65. {
  66. SessionMock.Verify(p => p.Dispose(), Times.Once);
  67. }
  68. }
  69. }