SshClientTest_Disconnect_ForwardedPortStarted.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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
  8. {
  9. private Mock<IServiceFactory> _serviceFactoryMock;
  10. private Mock<ISession> _sessionMock;
  11. private Mock<ForwardedPort> _forwardedPortMock;
  12. private SshClient _sshClient;
  13. private ConnectionInfo _connectionInfo;
  14. [TestInitialize]
  15. public void Setup()
  16. {
  17. Arrange();
  18. Act();
  19. }
  20. [TestCleanup]
  21. public void Cleanup()
  22. {
  23. }
  24. protected void Arrange()
  25. {
  26. _connectionInfo = new ConnectionInfo("host", "user", new NoneAuthenticationMethod("userauth"));
  27. var sequence = new MockSequence();
  28. _serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict);
  29. _sessionMock = new Mock<ISession>(MockBehavior.Strict);
  30. _forwardedPortMock = new Mock<ForwardedPort>(MockBehavior.Strict);
  31. _serviceFactoryMock.InSequence(sequence).Setup(p => p.CreateSession(_connectionInfo)).Returns(_sessionMock.Object);
  32. _sessionMock.InSequence(sequence).Setup(p => p.Connect());
  33. _forwardedPortMock.InSequence(sequence).Setup(p => p.Start());
  34. _sessionMock.InSequence(sequence).Setup(p => p.OnDisconnecting());
  35. _forwardedPortMock.InSequence(sequence).Setup(p => p.Stop());
  36. _sessionMock.InSequence(sequence).Setup(p => p.Disconnect());
  37. _sshClient = new SshClient(_connectionInfo, false, _serviceFactoryMock.Object);
  38. _sshClient.Connect();
  39. _sshClient.AddForwardedPort(_forwardedPortMock.Object);
  40. _forwardedPortMock.Object.Start();
  41. }
  42. protected void Act()
  43. {
  44. _sshClient.Disconnect();
  45. }
  46. [TestMethod]
  47. public void ForwardedPortShouldBeStopped()
  48. {
  49. _forwardedPortMock.Verify(p => p.Stop(), Times.Once);
  50. }
  51. [TestMethod]
  52. public void ForwardedPortShouldBeRemovedFromSshClient()
  53. {
  54. Assert.IsFalse(_sshClient.ForwardedPorts.Any());
  55. }
  56. [TestMethod]
  57. public void DisconnectOnSessionShouldBeInvokedOnce()
  58. {
  59. _sessionMock.Verify(p => p.Disconnect(), Times.Once);
  60. }
  61. }
  62. }