SshClientTest_Disconnect_ForwardedPortStarted.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. _sessionMock.InSequence(sequence).Setup(p => p.Dispose());
  38. _sshClient = new SshClient(_connectionInfo, false, _serviceFactoryMock.Object);
  39. _sshClient.Connect();
  40. _sshClient.AddForwardedPort(_forwardedPortMock.Object);
  41. _forwardedPortMock.Object.Start();
  42. }
  43. protected void Act()
  44. {
  45. _sshClient.Disconnect();
  46. }
  47. [TestMethod]
  48. public void ForwardedPortShouldBeStopped()
  49. {
  50. _forwardedPortMock.Verify(p => p.Stop(), Times.Once);
  51. }
  52. [TestMethod]
  53. public void ForwardedPortShouldBeRemovedFromSshClient()
  54. {
  55. Assert.IsFalse(_sshClient.ForwardedPorts.Any());
  56. }
  57. [TestMethod]
  58. public void DisconnectOnSessionShouldBeInvokedOnce()
  59. {
  60. _sessionMock.Verify(p => p.Disconnect(), Times.Once);
  61. }
  62. [TestMethod]
  63. public void DisposeOnSessionShouldBeInvokedOnce()
  64. {
  65. _sessionMock.Verify(p => p.Dispose(), Times.Once);
  66. }
  67. }
  68. }