BaseClientTest_Disconnected_Connect.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Moq;
  3. using Renci.SshNet.Connection;
  4. namespace Renci.SshNet.Tests.Classes
  5. {
  6. [TestClass]
  7. public class BaseClientTest_Disconnected_Connect : BaseClientTestBase
  8. {
  9. private Mock<ISocketFactory> _socketFactory2Mock;
  10. private Mock<ISession> _session2Mock;
  11. private BaseClient _client;
  12. private ConnectionInfo _connectionInfo;
  13. protected override void SetupData()
  14. {
  15. _connectionInfo = new ConnectionInfo("host", "user", new PasswordAuthenticationMethod("user", "pwd"));
  16. }
  17. protected override void CreateMocks()
  18. {
  19. base.CreateMocks();
  20. _socketFactory2Mock = new Mock<ISocketFactory>(MockBehavior.Strict);
  21. _session2Mock = new Mock<ISession>(MockBehavior.Strict);
  22. }
  23. protected override void SetupMocks()
  24. {
  25. var sequence = new MockSequence();
  26. ServiceFactoryMock.InSequence(sequence)
  27. .Setup(p => p.CreateSocketFactory())
  28. .Returns(SocketFactoryMock.Object);
  29. ServiceFactoryMock.InSequence(sequence)
  30. .Setup(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object))
  31. .Returns(SessionMock.Object);
  32. SessionMock.InSequence(sequence)
  33. .Setup(p => p.Connect());
  34. SessionMock.InSequence(sequence)
  35. .Setup(p => p.OnDisconnecting());
  36. SessionMock.InSequence(sequence)
  37. .Setup(p => p.Dispose());
  38. ServiceFactoryMock.InSequence(sequence)
  39. .Setup(p => p.CreateSocketFactory())
  40. .Returns(_socketFactory2Mock.Object);
  41. ServiceFactoryMock.InSequence(sequence)
  42. .Setup(p => p.CreateSession(_connectionInfo, _socketFactory2Mock.Object))
  43. .Returns(_session2Mock.Object);
  44. _session2Mock.InSequence(sequence)
  45. .Setup(p => p.Connect());
  46. }
  47. protected override void Arrange()
  48. {
  49. base.Arrange();
  50. _client = new MyClient(_connectionInfo, false, ServiceFactoryMock.Object);
  51. _client.Connect();
  52. _client.Disconnect();
  53. }
  54. protected override void TearDown()
  55. {
  56. if (_client != null)
  57. {
  58. _session2Mock.Setup(p => p.OnDisconnecting());
  59. _session2Mock.Setup(p => p.Dispose());
  60. _client.Dispose();
  61. }
  62. }
  63. protected override void Act()
  64. {
  65. _client.Connect();
  66. }
  67. [TestMethod]
  68. public void CreateSocketFactoryOnServiceFactoryShouldBeInvokedTwic()
  69. {
  70. ServiceFactoryMock.Verify(p => p.CreateSocketFactory(), Times.Exactly(2));
  71. }
  72. [TestMethod]
  73. public void CreateSessionOnServiceFactoryShouldBeInvokedTwice()
  74. {
  75. ServiceFactoryMock.Verify(p => p.CreateSession(_connectionInfo, SocketFactoryMock.Object),
  76. Times.Once);
  77. ServiceFactoryMock.Verify(p => p.CreateSession(_connectionInfo, _socketFactory2Mock.Object),
  78. Times.Once);
  79. }
  80. [TestMethod]
  81. public void ConnectOnSessionShouldBeInvokedTwice()
  82. {
  83. SessionMock.Verify(p => p.Connect(), Times.Once);
  84. _session2Mock.Verify(p => p.Connect(), Times.Once);
  85. }
  86. private class MyClient : BaseClient
  87. {
  88. public MyClient(ConnectionInfo connectionInfo, bool ownsConnectionInfo, IServiceFactory serviceFactory) : base(connectionInfo, ownsConnectionInfo, serviceFactory)
  89. {
  90. }
  91. }
  92. }
  93. }