SshClientTest_Dispose_Disposed.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Moq;
  3. namespace Renci.SshNet.Tests.Classes
  4. {
  5. [TestClass]
  6. public class SshClientTest_Dispose_Disposed
  7. {
  8. private Mock<IServiceFactory> _serviceFactoryMock;
  9. private Mock<ISession> _sessionMock;
  10. private SshClient _sshClient;
  11. private ConnectionInfo _connectionInfo;
  12. [TestInitialize]
  13. public void Setup()
  14. {
  15. Arrange();
  16. Act();
  17. }
  18. [TestCleanup]
  19. public void Cleanup()
  20. {
  21. }
  22. protected void Arrange()
  23. {
  24. _connectionInfo = new ConnectionInfo("host", "user", new NoneAuthenticationMethod("userauth"));
  25. _serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict);
  26. _sessionMock = new Mock<ISession>(MockBehavior.Strict);
  27. var sequence = new MockSequence();
  28. _serviceFactoryMock.InSequence(sequence).Setup(p => p.CreateSession(_connectionInfo)).Returns(_sessionMock.Object);
  29. _sessionMock.InSequence(sequence).Setup(p => p.Connect());
  30. _sessionMock.InSequence(sequence).Setup(p => p.OnDisconnecting());
  31. _sessionMock.InSequence(sequence).Setup(p => p.Dispose());
  32. _sshClient = new SshClient(_connectionInfo, false, _serviceFactoryMock.Object);
  33. _sshClient.Connect();
  34. _sshClient.Dispose();
  35. }
  36. protected void Act()
  37. {
  38. _sshClient.Dispose();
  39. }
  40. [TestMethod]
  41. public void CreateSessionOnServiceFactoryShouldBeInvokedOnce()
  42. {
  43. _serviceFactoryMock.Verify(p => p.CreateSession(_connectionInfo), Times.Once);
  44. }
  45. [TestMethod]
  46. public void DisconnectOnSessionShouldNeverBeInvoked()
  47. {
  48. _sessionMock.Verify(p => p.Disconnect(), Times.Never);
  49. }
  50. [TestMethod]
  51. public void DisposeOnSessionShouldBeInvokedOnce()
  52. {
  53. _sessionMock.Verify(p => p.Dispose(), Times.Once);
  54. }
  55. [TestMethod]
  56. public void OnDisconnectingOnSessionShouldBeInvokedOnce()
  57. {
  58. _sessionMock.Verify(p => p.OnDisconnecting(), Times.Once);
  59. }
  60. }
  61. }