2
0

SshClientTest_Dispose_ForwardedPortStarted.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System;
  2. using System.Linq;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. using Moq;
  5. namespace Renci.SshNet.Tests.Classes
  6. {
  7. [TestClass]
  8. public class SshClientTest_Dispose_ForwardedPortStarted
  9. {
  10. private Mock<IServiceFactory> _serviceFactoryMock;
  11. private Mock<ISession> _sessionMock;
  12. private Mock<ForwardedPort> _forwardedPortMock;
  13. private SshClient _sshClient;
  14. private ConnectionInfo _connectionInfo;
  15. [TestInitialize]
  16. public void Setup()
  17. {
  18. Arrange();
  19. Act();
  20. }
  21. [TestCleanup]
  22. public void Cleanup()
  23. {
  24. }
  25. protected void Arrange()
  26. {
  27. _connectionInfo = new ConnectionInfo("host", "user", new NoneAuthenticationMethod("userauth"));
  28. var sequence = new MockSequence();
  29. _serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict);
  30. _sessionMock = new Mock<ISession>(MockBehavior.Strict);
  31. _forwardedPortMock = new Mock<ForwardedPort>(MockBehavior.Strict);
  32. _serviceFactoryMock.InSequence(sequence).Setup(p => p.CreateSession(_connectionInfo)).Returns(_sessionMock.Object);
  33. _sessionMock.InSequence(sequence).Setup(p => p.Connect());
  34. _forwardedPortMock.InSequence(sequence).Setup(p => p.Start());
  35. _sessionMock.InSequence(sequence).Setup(p => p.OnDisconnecting());
  36. _forwardedPortMock.InSequence(sequence).Setup(p => p.Stop());
  37. _sessionMock.InSequence(sequence).Setup(p => p.Disconnect());
  38. _sessionMock.InSequence(sequence).Setup(p => p.Dispose());
  39. _sshClient = new SshClient(_connectionInfo, false, _serviceFactoryMock.Object);
  40. _sshClient.Connect();
  41. _sshClient.AddForwardedPort(_forwardedPortMock.Object);
  42. _forwardedPortMock.Object.Start();
  43. }
  44. protected void Act()
  45. {
  46. _sshClient.Dispose();
  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 IsConnectedShouldThrowObjectDisposedException()
  60. {
  61. try
  62. {
  63. var connected = _sshClient.IsConnected;
  64. Assert.Fail("IsConnected should have thrown {0} but returned {1}.",
  65. typeof (ObjectDisposedException).FullName, connected);
  66. }
  67. catch (ObjectDisposedException)
  68. {
  69. }
  70. }
  71. [TestMethod]
  72. public void DisconnectOnSessionShouldBeInvokedOnce()
  73. {
  74. _sessionMock.Verify(p => p.Disconnect(), Times.Once);
  75. }
  76. [TestMethod]
  77. public void DisposeOnSessionShouldBeInvokedOnce()
  78. {
  79. _sessionMock.Verify(p => p.Disconnect(), Times.Once);
  80. }
  81. }
  82. }