2
0

NetConfClientTest_Dispose_Disconnected.cs 4.2 KB

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