NetConfClientTest_Dispose_Disposed.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Moq;
  3. using System;
  4. namespace Renci.SshNet.Tests.Classes
  5. {
  6. [TestClass]
  7. public class NetConfClientTest_Dispose_Disposed : NetConfClientTestBase
  8. {
  9. private NetConfClient _netConfClient;
  10. private ConnectionInfo _connectionInfo;
  11. private int _operationTimeout;
  12. protected override void SetupData()
  13. {
  14. _connectionInfo = new ConnectionInfo("host", "user", new NoneAuthenticationMethod("userauth"));
  15. _operationTimeout = new Random().Next(1000, 10000);
  16. _netConfClient = new NetConfClient(_connectionInfo, false, ServiceFactoryMock.Object)
  17. {
  18. OperationTimeout = TimeSpan.FromMilliseconds(_operationTimeout)
  19. };
  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)
  31. .Setup(p => p.Connect());
  32. _ = ServiceFactoryMock.InSequence(sequence)
  33. .Setup(p => p.CreateNetConfSession(SessionMock.Object, _operationTimeout))
  34. .Returns(NetConfSessionMock.Object);
  35. _ = NetConfSessionMock.InSequence(sequence)
  36. .Setup(p => p.Connect());
  37. _ = SessionMock.InSequence(sequence)
  38. .Setup(p => p.OnDisconnecting());
  39. _ = NetConfSessionMock.InSequence(sequence)
  40. .Setup(p => p.Disconnect());
  41. _ = SessionMock.InSequence(sequence)
  42. .Setup(p => p.Dispose());
  43. _ = NetConfSessionMock.InSequence(sequence)
  44. .Setup(p => p.Dispose());
  45. }
  46. protected override void Arrange()
  47. {
  48. base.Arrange();
  49. _netConfClient.Connect();
  50. _netConfClient.Dispose();
  51. }
  52. protected override void Act()
  53. {
  54. _netConfClient.Dispose();
  55. }
  56. [TestMethod]
  57. public void CreateNetConfSessionOnServiceFactoryShouldBeInvokedOnce()
  58. {
  59. ServiceFactoryMock.Verify(p => p.CreateNetConfSession(SessionMock.Object, _operationTimeout), Times.Once);
  60. }
  61. [TestMethod]
  62. public void CreateSocketFactoryOnServiceFactoryShouldBeInvokedOnce()
  63. {
  64. ServiceFactoryMock.Verify(p => p.CreateSocketFactory(), Times.Once);
  65. }
  66. [TestMethod]
  67. public void CreateSessionOnServiceFactoryShouldBeInvokedOnce()
  68. {
  69. ServiceFactoryMock.Verify(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object),
  70. Times.Once);
  71. }
  72. [TestMethod]
  73. public void DisconnectOnNetConfSessionShouldBeInvokedOnce()
  74. {
  75. NetConfSessionMock.Verify(p => p.Disconnect(), Times.Once);
  76. }
  77. [TestMethod]
  78. public void DisconnectOnSessionShouldNeverBeInvoked()
  79. {
  80. SessionMock.Verify(p => p.Disconnect(), Times.Never);
  81. }
  82. [TestMethod]
  83. public void DisposeOnNetConfSessionShouldBeInvokedOnce()
  84. {
  85. NetConfSessionMock.Verify(p => p.Dispose(), Times.Once);
  86. }
  87. [TestMethod]
  88. public void DisposeOnSessionShouldBeInvokedOnce()
  89. {
  90. SessionMock.Verify(p => p.Dispose(), Times.Once);
  91. }
  92. [TestMethod]
  93. public void OnDisconnectingOnSessionShouldBeInvokedOnce()
  94. {
  95. SessionMock.Verify(p => p.OnDisconnecting(), Times.Once);
  96. }
  97. }
  98. }