BaseClientTest_Disconnected_KeepAliveInterval_NotNegativeOne.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using System.Threading;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. using Moq;
  5. using Renci.SshNet.Messages.Transport;
  6. namespace Renci.SshNet.Tests.Classes
  7. {
  8. [TestClass]
  9. public class BaseClientTest_Disconnected_KeepAliveInterval_NotNegativeOne : BaseClientTestBase
  10. {
  11. private BaseClient _client;
  12. private ConnectionInfo _connectionInfo;
  13. private TimeSpan _keepAliveInterval;
  14. protected override void SetupData()
  15. {
  16. _connectionInfo = new ConnectionInfo("host", "user", new PasswordAuthenticationMethod("user", "pwd"));
  17. _keepAliveInterval = TimeSpan.FromMilliseconds(50d);
  18. }
  19. protected override void SetupMocks()
  20. {
  21. ServiceFactoryMock.Setup(p => p.CreateSocketFactory())
  22. .Returns(SocketFactoryMock.Object);
  23. ServiceFactoryMock.Setup(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object))
  24. .Returns(SessionMock.Object);
  25. SessionMock.Setup(p => p.Connect());
  26. SessionMock.Setup(p => p.IsConnected).Returns(false);
  27. SessionMock.Setup(p => p.TrySendMessage(It.IsAny<IgnoreMessage>()))
  28. .Returns(true);
  29. }
  30. protected override void Arrange()
  31. {
  32. base.Arrange();
  33. _client = new MyClient(_connectionInfo, false, ServiceFactoryMock.Object);
  34. _client.Connect();
  35. }
  36. protected override void TearDown()
  37. {
  38. if (_client != null)
  39. {
  40. SessionMock.Setup(p => p.OnDisconnecting());
  41. SessionMock.Setup(p => p.Dispose());
  42. _client.Dispose();
  43. }
  44. }
  45. protected override void Act()
  46. {
  47. _client.KeepAliveInterval = _keepAliveInterval;
  48. // allow keep-alive to be sent a few times
  49. Thread.Sleep(195);
  50. }
  51. [TestMethod]
  52. public void KeepAliveIntervalShouldReturnConfiguredValue()
  53. {
  54. Assert.AreEqual(_keepAliveInterval, _client.KeepAliveInterval);
  55. }
  56. [TestMethod]
  57. public void CreateSocketFactoryOnServiceFactoryShouldBeInvokedOnce()
  58. {
  59. ServiceFactoryMock.Verify(p => p.CreateSocketFactory(), Times.Once);
  60. }
  61. [TestMethod]
  62. public void CreateSessionOnServiceFactoryShouldBeInvokedOnce()
  63. {
  64. ServiceFactoryMock.Verify(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object),
  65. Times.Once);
  66. }
  67. [TestMethod]
  68. public void ConnectOnSessionShouldBeInvokedOnce()
  69. {
  70. SessionMock.Verify(p => p.Connect(), Times.Once);
  71. }
  72. [TestMethod]
  73. public void IsConnectedOnSessionShouldBeInvokedOnce()
  74. {
  75. SessionMock.Verify(p => p.IsConnected, Times.Once);
  76. }
  77. [TestMethod]
  78. public void SendMessageOnSessionShouldNeverBeInvoked()
  79. {
  80. SessionMock.Verify(p => p.TrySendMessage(It.IsAny<IgnoreMessage>()), Times.Never);
  81. }
  82. private class MyClient : BaseClient
  83. {
  84. public MyClient(ConnectionInfo connectionInfo, bool ownsConnectionInfo, IServiceFactory serviceFactory) : base(connectionInfo, ownsConnectionInfo, serviceFactory)
  85. {
  86. }
  87. }
  88. }
  89. }